SQL/Oracle
[Oracle] MERGE INTO 구문
jane.dev
2021. 7. 25. 13:43
반응형
MERGE INTO
충돌 없이 데이터를 업데이트 하는 것으로,
해당 데이터가 있으면 무시, 없으면 업데이트를 진행
MySQL의
INSERT INTO
~ ON DUPLICATE KEY UPDATE
~ 의 기능과 유사
예제)
먼저 예제용 테이블을 생성하고 오라클 HR 계정의 샘플 데이터 employees 테이블을 복사해서 삽입
mergeIntoTest 테이블 생성
CREATE TABLE mergeIntoTest(
num NUMBER,
f_name VARCHAR2(20),
l_name VARCHAR2(20),
dep_id VARCHAR2(20),
salary NUMBER
);
위에서 15개 Row 데이터를 복사 - 삽입
INSERT INTO mergeIntoTest
(SELECT employee_id, first_name, last_name, job_id, salary
FROM employees WHERE employee_id <= 115);
David Austin의 salary 를 6000으로 변경
MERGE INTO mergeIntoTest mit USING DUAL
ON (mit.f_name = 'David' AND mit.l_name = 'Austin') # 조건식
WHEN MATCHED THEN # 위 조건과 값이 매치 되는 경우,
salary = 6000 # 업데이트
WHERE mit.f_name = 'David' AND mit.l_name = 'Austin'
WHEN NOT MATCHED THEN # 위 조건과 값이 매치되지 않는 경우,
INSERT (mit.num, mit.f_name, mit.l_name, mit.dep_id, mit.salary)
VALUES (116, 'David', 'Austin', 'IT_PROG', 6000); # 추가
ON
뒤 조건식이 일치하는지 여부에 따라 데이트 업데이트 혹은 추가를 진행
기존 데이터 업데이트