DML : 데이터 조작어
- SELECT
- INSERT
- DELETE
- UPDATE
- MERGE
SELECT
- 하나 또는 그 이상의 테이블에서 데이터를 추출하는 데이터 조작 명령어.
- SELECT (칼럼명, 칼럼명...) FROM (추출할 테이블)
INSERT
- 테이블에 데이터를 입력하는 데이터 조작 명령어.
- 새로운 데이터를 입력할 수 있다.
INSERT ALL
- 하나의 쿼리로 여러 테이블에 데이터를 입력할 수 있다.
INSERT ALL
WHEN 조건식A THEN
INTO 테이블명A VALUES(컬럼명, 컬럼명, ...)
WHEN 조건식B THEN
INTO 테이블명B VALUES(컬럼명, 컬럼명, ...)
SELECT 컬럼명, 컬럼명, ...
FROM 테이블명;
INSERT ALL INTO emp_hir VALUES(empno, ename, hiredate)
INTO emp_mgr VALUES(empno, ename, mgr)
SELECT empno, ename, hiredate, mgr FROM emp WHERE deptno=20;
INSERT ALL
WHEN hiredate > '1982/01/01' THEN INTO emp_hir01 VALUES(empno, ename, hiredate)
WHEN sal>=2000 THEN INTO emp_sal VALUES(empno, ename, sal)
SELECT empno, ename, hiredate, sal FROM emp;
DELETE
- 존재하는 데이터를 삭제할 수 있다.
- 데이터만 삭제되고 공간은 남아 있다는 점을 유의. - DELETE vs TRUNCATE vs DROP
UPDATE
- 기존의 데이터를 수정할 수 있다.
UPDATE 테이블명 SET 컬럼명1=값, 컬럼명2=값, … WHERE 조건식; |
UPDATE emp06
SET deptno=30;
UPDATE emp07
SET sal=sal*1.1
WHERE job = 'MANAGER';
UPDATE emp07
SET hiredate=sysdate
WHERE SUBSTR(hiredate, 0, 2)='87';
UPDATE emp08
SET hiredate=sysdate, sal=7000, comm=2000
WHERE ename='JAMES';
UPDATE dept04
SET loc = (SELECT loc FROM dept04 WHERE deptno=40)
WHERE deptno=20;
DELETE
- 데이터를 삭제하는 명령어
- 하나의 테이블 안에 있는 데이터를 전체 삭제할 수도 있지만,
- WHERE 조건절로 어떤 데이터를 삭제할지 지정할 수도 있다.
DELETE FROM dept07;
DELETE FROM dept06
WHERE deptno=40;
DELETE FROM emp09
WHERE deptno = (SELECT deptno FROM dept WHERE dname = 'SALES');
MERGE
- 구조가 같은 테이블을 병합하는 명령어
MERGE INTO 테이블명A USING 테이블명B ON(테이블명A.컬럼1=테이블명B.컬럼1) --기준 테이블에 자료가 존재하는 경우 WHEN MATCHED THEN UPDATE SET 테이블명A.컬럼1=테이블명B.컬럼1, 테이블명A.컬럼2=테이블명B.컬럼2, 테이블명A.컬럼3=테이블명B.컬럼3, ... 테이블명A.컬럼n=테이블명B.컬럼n, --기준 테이블에 자료가 존재하지 않는 경우 WHEN NOT MATCHED THEN INSERT VALUES(테이블명B.컬럼명, 테이블명B.컬럼명, ...); |
emp10에 emp11에 있는 컬럼 값을 합쳐서 두 테이블을 병합하는데, emp10의 empno와 emp11의 empno를 비교해서 해당 값이 존재하면 (두 개가 같은) emp10의 모든 컬럼 값을 emp11의 값으로 변경하고, 해당 값이 존재하지 않으면 emp11에 있는 값을 emp10에 넣는다. |
'자린고비 독학하기 > 자린고비 코딩하기' 카테고리의 다른 글
SQL - 뷰 (VIEW) (0) | 2019.08.05 |
---|---|
SQL - 트랜잭션 (0) | 2019.08.02 |
SQL - DATA DICTIONARY VIEW (0) | 2019.08.01 |
SQL - JOIN (0) | 2019.07.31 |
SQL - 그룹 함수 / GROUP BY / HAVING (1) | 2019.07.31 |