ORACLE : Insert Select , Update Select, Merge Into 사용하기

INSERT SELECT EXAMPLE
INSERT INTO table_a
( title, name, regdate, register, memberid, categoryid )
SELECT title, name, regdate, register, memberid, categoryid
FROM table_b
WHERE categoryid=10

1. Insert Select
특정 테이블에 다른 테이블의 내용을 검색하여 여러행을 입력할때 사용한다.
SQL> INSERT INTO Table1
SELECT * FROM Table2;

2. Update Select
특정 테이블에 다른 테이블의 내용을 검색하여 여러행을 수정한다.
SQL> UPDATE Table1 A
SET A.aa =
(SELECT b.aa
FROM Table2 B
WHERE B.NO = A.NO)
WHERE A.NO = 3;

3. Merge Into
애플리케이션 로직에서 데이터 유뮤를 검사하고 있으면 , 데이터를 UPDATE 하고
없으면 INSERT 하는 흔한 패턴을 아주 간단하게 쿼리 한문장으로 처리할 수 있게 하는 쿼리.
MERGE
INTO
Insert 나 update 할 타겟 테이블
USING
타켓 테이블에 들어갈 소스 데이터 즉, 테이블 ,뷰 서브쿼리 가 올 수 있다.
ON
인서트 할 것인지 업데이트 할것인지를 결정하는 조건 즉 , 조건이 맞으면 업데이트문 실행
조건이 맞지 않으면 인서트 문을 실행한다.
WHEN MATCHED THEN
조건이 맞았을 때 쿼리문
WHEN NOT MATCHED THEN
조건이 맞지 않았을 때 쿼리문

예문)
MERGE INTO bonuses D
USING (SELECT employee_id, salary, department_id FROM employees
WHERE department_id = 80) S
ON (D.employee_id = S.employee_id)
WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01
WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus)
VALUES (S.employee_id, S.salary*0.1);

참고로 오라클 도큐먼트에 있는 예문입니다.

[출처] [ORACLE] Insert Select , Update Select, Merge Into 사용하기|작성자 깜찍이닷
http://blog.naver.com/PostView.nhn?blogId=prosports0&logNo=80090963292

11 Replies to “ORACLE : Insert Select , Update Select, Merge Into 사용하기”

Leave a Reply

Your email address will not be published.