[SQL] 082. 데이터 입력, 수정, 삭제 한번에 하기
Updated:
초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.
오라클 SQL을 기반으로 합니다.
실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.
[예시]
이번 챕터에선 MERGE
에 대해 알아보자.
MERGE
는 테이블의 데이터 입력, 수정, 삭제를 한 번에 수행할 수 있다.
이번 예시는 다음과 같은 순서로 작업을 진행한다.
-
MERGE INTO
로 변경할 테이블을 지정한다. -
USING
에 소스 테이블을 지정한다. -
ON
에 조인 조건을 기입한다. -
WHEN MATCHED THEN
(조인 성공 시)UPDATE
로 수정한다. -
WHEN NOT MATCHED THEN
(조인 실패 시)INSERT
로 추가한다.
-- 기본 옵션으로 사용
-- AUTOCOMMIT 끄기
SET AUTOCOMMIT OFF;
-- 날짜 출력 포맷 변경
ALTER SESSION SET NLS_DATE_FORMAT = 'RRRR-MM-DD';
-- 작업 전 수행 EMP 테이블에 LOC 컬럼 추가 (추후 나옴)
ALTER TABLE EMP
ADD LOC VARCHAR2(10);
-- MERGE
MERGE INTO EMP A
USING DEPT B ON (A.DEPTNO = B.DEPTNO)
-- MERGE UPDATE 구문
WHEN MATCHED THEN
UPDATE SET A.LOC = B.LOC
-- MERGE INSERT 구문
WHEN NOT MATCHED THEN
INSERT (A.EMPNO, A.DEPTNO, A.LOC) VALUES (1111, B.DEPTNO, B.LOC);
-- 테이블 확인
SELECT *
FROM EMP;
[결과]
DEPTNO가 일치하여 조인에 성공한 경우 LOC가 업데이트 되었다.
DEPTNO 40은 DEPT에만 존재해서 명령어대로 직접 추가되었다.
EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | LOC |
---|---|---|---|---|---|---|---|---|
7839 | KING | PRESIDENT | 1981-11-17 | 5000 | 10 | NEW YORK | ||
7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850 | 30 | CHICAGO | |
7782 | CLARK | MANAGER | 7839 | 1981-05-09 | 2450 | 10 | NEW YORK | |
7566 | JONES | MANAGER | 7839 | 1981-04-01 | 2975 | 20 | DALLAS | |
7654 | MARTIN | SALESMAN | 7698 | 1981-09-10 | 1250 | 1400 | 30 | CHICAGO |
7499 | ALLEN | SALESMAN | 7698 | 1981-02-11 | 1600 | 300 | 30 | CHICAGO |
7844 | TURNER | SALESMAN | 7698 | 1981-08-21 | 1500 | 0 | 30 | CHICAGO |
7900 | JAMES | CLERK | 7698 | 1981-12-11 | 950 | 30 | CHICAGO | |
7521 | WARD | SALESMAN | 7698 | 1981-02-23 | 1250 | 500 | 30 | CHICAGO |
7902 | FORD | ANALYST | 7566 | 1981-12-11 | 3000 | 20 | DALLAS | |
7369 | SMITH | CLERK | 7902 | 1980-12-11 | 800 | 20 | DALLAS | |
7788 | SCOTT | ANALYST | 7566 | 1982-12-22 | 3000 | 20 | DALLAS | |
7876 | ADAMS | CLERK | 7788 | 1983-01-15 | 1100 | 20 | DALLAS | |
7934 | MILLER | CLERK | 7782 | 1982-01-11 | 1300 | 10 | NEW YORK | |
1111 | 40 | BOSTON |
Leave a comment