[Oracle] MERGE INTO

동민·2021년 12월 3일
0

테이블에 데이터가 이미 있으면 업데이트, 없으면 값을 삽입해야 하는 경우가 있는데

1. 데이터가 있는지 확인
2. 데이터가 있으면 UPDATE
3. 데이터가 없으면 INSERT

3개를 선언하는 것은 번거롭다.

이럴 때, Oracle MERGE INTO 활용!

MERGE INTO [TABLE / VIEW] 		// update 또는 insert할 테이블 혹은 뷰
     USING [TABLE / VIEW / DUAL] 	// 비교할 대상 테이블 혹은 뷰 (위 테이블과 동일할 경우 DUAL을 사용)
        ON [조건] 			// UPDATE 와 INSERT 처리할 조건문 (조건이 일치하면 UPDATE / 불일치 시 INSERT)
      WHEN MATCHED THEN 
                 UPDATE 
                    SET
                       [COLUMN1] = [VALUE1],
                       [COLUMN2] = [VALUE2],
                             ...
                             
            (DELETE [TABLE] WHERE [COLUMN 1] = [VALUE 1] AND ...) // UPDATE 뿐만 아니라 DELETE 구문도 사용 가능
      
      WHEN NOT MATCHED THEN
                     INSERT (COLUMN1, COLUMN2, ...)
         	     VALUES (VALUE1, VALUE2, ...)

테이블에 row가 존재하면 UPDATE를 수행하고 row가 존재하지 않으면 INSERT하지 않는 경우에는, WHEN NOT MATCHED THEN 절을 빼면 된다.

profile
BE Developer

0개의 댓글