[SQL] 082. 데이터 입력, 수정, 삭제 한번에 하기

Updated:

초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.

오라클 SQL을 기반으로 합니다.

실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.


[예시]

이번 챕터에선 MERGE에 대해 알아보자.

MERGE는 테이블의 데이터 입력, 수정, 삭제를 한 번에 수행할 수 있다.

이번 예시는 다음과 같은 순서로 작업을 진행한다.

  1. MERGE INTO로 변경할 테이블을 지정한다.

  2. USING에 소스 테이블을 지정한다.

  3. ON에 조인 조건을 기입한다.

  4. WHEN MATCHED THEN(조인 성공 시) UPDATE로 수정한다.

  5. 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

Tags:

Categories:

Updated:

Leave a comment