본문 바로가기

개발/DB&SQL

[SQL] ORACLE MERGE INTO 사용

반응형


오라클에서 쿼리문을 작성하다 보면, 하나의 쿼리문으로 INSERT, UPDATE, DELETE 작업을 해야 하는 경우가 있습니다. 이럴 때에는 MERGE 문을 사용하면 간단하게 쿼리문을 작성할 수 있습니다. 오라클 9i부터 MERGE 문을 사용할 수 있으며, DELETE 절은 10g부터 사용할 수 있습니다.

 

1. 동일한 테이블 구조를 가지고 있는 테이블로부터 데이터를 옮기는 쿼리

MERGE INTO TABLE1 T1
	USING TABLE2 T2
		ON (T1.COLUMN1 = T2.COLUMN1 AND T1.COLUMN2 = T2.COLUMN2)
	WHEN MATCHED THEN
		UPDATE SET T1.COLUMN3 = T2.COLUMN3
	WHEN NOT MATCHED THEN
		INSERT (T1.COLUMN1, T1.COLUMN2, T1.COLUMN3)
		VALUES (T2.COLUMN1, T2.COLUMN2, T2.COLUMN3)

2. 다른 테이블에서 데이터를 비교하여 가져오는 것이 아닌, 직접 값을 넣을 때

MERGE INTO TABLE1 T1 
	USING DUAL
		ON (T1.COLUMN1 = 'A' AND T1.COLUMN2='B')
	WHEN MATCHED THEN
		UPDATE SET T1.COLUMN3 = 'C'
	WHEN NOT MATCHED THEN
		INSERT (T1.COLUMN1, T1.COLUMN2, T1.COLUMN3)
		VALUES ('A','B','C')

3. 업데이트나 입력 하나만 할 경우

  • 존재하면 아무것도 하지 않고, 없으면 입력
MERGE INTO TABLE1 T1
	USING DUAL
		ON (T1.COLUMN1 = 'A' AND T1.COLUMN2='B')
	WHEN NOT MATCHED THEN
		INSERT (T1.COLUMN1, T1.COLUMN2, T1.COLUMN3)
		VALUES ('A','B','C')
반응형