1. MERGE : 데이터의 존재 여부에 따라 데이터를 INSERT 하거나 UPDATE 할때 유용하게 사용
1) 한 문장으로 INSERT와 UPDATE를 동시에 처리
2) 한 건의 데이터는 INSERT와 UPDATE 중 하나만 수행
3) 대상이 이미 존재하면 UPDATE, 존재하지 않으면 INSERT
MERGE INTO EMP T1 // UPDATE 되거나 INSERT 될 테이블
USING ( SELECT ...
FROM DEPT // MERGE 대상의 처리 방법을 결정 할 비교 데이터 집합
WHERE ...
) T2
WHEN MATCHED THEN UPDATE SET T1.EMP_NM = T2.EMP_NM // 비교 대상 데이터가 MERGE 대상에 이미 있음
,T1.EMP_CD = T2.EMP_CD
WHEN NOT MATCHED THEN INSERT(T1.EMP_CD, T1.EMP_NM) // 비교 대상 데이터가 MERGE 대상에 없음
VALUES(T2.EMP_CD, T2.EMP_NM);
2. MY-SQL 에서는 오라클 MERGE문과 유사한 INSERT ~ ON DUPLICATE KEY 사용
단) MERGE와는 처리 방법이 다름에 유의
먼저 INSERT를 시도하고, INSERT 중에 키 중복 에러가 나면 UPDATE를 처리
(키 중복은 PK, UK도 포함되므로 PK외에 UK가 있으면 의도와 다른 데이터 처리가 될 수 있으므로 유의 해야함)