INSERT와 UPATE문을 한번에! [MERGE INTO 구문]
쿼리를 다루다 보면 데이터를 넣어야 하는 테이블에 값이 있으면 UPDATE 없으면 INSERT를 해야하는 경우가 많이 있습니다.
보통 이런 쿼리를 짜게되면 SELECT 쿼리로 먼저 데이터 유무를 판단하고 서비스단에서 그 결과를 가지고 INSERT쿼리를 돌릴지 UPDATE쿼리를 돌릴지 분기 처리를 해왔습니다.
그러다 선배가 제가 짠 쿼리를 MERGE INTO 구문으로 튜닝을 하라해서 막 찾아보다 알게된 MERGE INTO!! 찾아보니 첨엔 구문이 간단해서 좋을거 같으면서도 적용하려하니 버벅거렸던 기억이있어요ㅋㅋ
MERGE INTO 구문은 구조가 같은 두개의 테이블을 하나의 테이블로 합치기위한 작업을 위해 생긴 구문이며, 오라클에서만 사용이 가능합니다.!!
엄청 간단하죠!! SELECT SUBQUERY로 데이터를 가져와서 MERGE INTO뒤에있는 테이블에 작업을 하게됩니다. ON 키워드는 WHERE절과 같은 용도로 쓰이는거에요!!
매치되는 값이 있으면 UPDATE문 매치되는 값이 없으면 INSERT문이 실행되게됩니다.
MERGE INTO가 원래는 INSERT하든 UPDATE하든 두 테이블의 데이터를 합치는 작업 위해 생긴 구문이기때문에 꼭 UPDATE INSERT구문을 다 쓸 필요는 없습니다. UPDATE만 하고 싶으시면 WHEN NOT MATCHED THEN 절을 빼주시면됩니당ㅋㅋㅋㅋ
쿼리는 정말 답이 없는거같아요 ㅠㅠ 어렵어렵 ㅠㅠ 여러분들도 한번 여러가지로 응용해서 사용해보세요!!
'→ 프로그래밍.데이터베이스 > DB,SQL' 카테고리의 다른 글
오라클 조건함수 DECODE 함수, CASE WHEN 표현식 (0) | 2016.11.24 |
---|---|
[ORACLE] 오라클 함수(function) 만들기. 함수 생성 (5) | 2016.11.05 |
[ORACLE] LPAD RPAD 함수 :: 문자길이 채우기 (0) | 2016.11.01 |
[오라클 DB LOCK 문제 해결]LOCK 걸린 테이블 조회 및 세션 해제(LOCK KILL) (2) | 2016.09.19 |
Tomcat 서버 에러-Could not delete[파일이름]. May be locked by another process. (4) | 2016.09.09 |