본문 바로가기
→ 프로그래밍.데이터베이스/DB,SQL

오라클 DB INSERT와 UPDATE문을 한번에 하기 → MERGE INTO !!

by jjo_Mean 2016. 9. 23.

INSERT와 UPATE문을 한번에! [MERGE INTO 구문]


쿼리를 다루다 보면 데이터를 넣어야 하는 테이블에 값이 있으면 UPDATE 없으면 INSERT를 해야하는 경우가 많이 있습니다.

보통 이런 쿼리를 짜게되면 SELECT 쿼리로 먼저 데이터 유무를 판단하고 서비스단에서 그 결과를 가지고 INSERT쿼리를 돌릴지 UPDATE쿼리를 돌릴지 분기 처리를 해왔습니다.

그러다 선배가 제가 짠 쿼리를 MERGE INTO 구문으로 튜닝을 하라해서 막 찾아보다 알게된 MERGE INTO!! 찾아보니 첨엔 구문이 간단해서 좋을거 같으면서도 적용하려하니 버벅거렸던 기억이있어요ㅋㅋ

MERGE INTO 구문은 구조가 같은 두개의 테이블을 하나의 테이블로 합치기위한 작업을 위해 생긴 구문이며, 오라클에서만 사용이 가능합니다.!!


기본 구문을 알려드릴게요 한번 해보세요!!ㅋㅋ


[기본구조]

 MERGE INTO 테이블 
      USING 대상테이블(SELECT SUBQUERY)
      ON 조인조건
 WHEN MATCHED THEN 
UPDATE 문
 WHEN NOT MATCHED THEN
INSERT 문



엄청 간단하죠!! SELECT SUBQUERY로 데이터를 가져와서 MERGE INTO뒤에있는 테이블에 작업을 하게됩니다. ON 키워드는 WHERE절과 같은 용도로 쓰이는거에요!!


매치되는 값이 있으면 UPDATE문 매치되는 값이 없으면 INSERT문이 실행되게됩니다.


MERGE INTO가 원래는 INSERT하든 UPDATE하든 두 테이블의 데이터를 합치는 작업 위해 생긴 구문이기때문에 꼭  UPDATE INSERT구문을 다 쓸 필요는 없습니다. UPDATE만 하고 싶으시면 WHEN NOT MATCHED THEN 절을 빼주시면됩니당ㅋㅋㅋㅋ


쿼리는 정말 답이 없는거같아요 ㅠㅠ 어렵어렵 ㅠㅠ 여러분들도 한번 여러가지로 응용해서 사용해보세요!!