본문 바로가기
프로그래밍/Database

(데이터베이스) Merge into 사용하기

by LiveData 2019. 1. 18.
반응형




MERGE INTO 란?

 : 특정 테이블이나 자기 자신을 비교하여 조건에 따라 update 혹인 insert를 할 수 있다.

예를 들어, 특정 조건의 데이터가 이미 테이블에 존재하면 update하고 없는 경우에는 insert 하는 것을코드를 사용하는 것이 아닌 쿼리 단에서 해결할 수 있습니다.





사용법


MERGE INTO table_name alias

USING (table /view / subquery) alias

ON (join condition)

WHEN MATCHED THEN   -- 조건에 데이터가 존재할 경우

UPDATE SET col1 =val1

WHEN NOT MATCHED THEN    -- 조건에 데이터가 존재하지 않을 경우

INSERT (column lists) VALUES (values);





예제


 -> 성적 테이블에 학생 ID가 있으면 update, 없으면 insert


MERGE INTO score_table st

USING a_scoretable ast

ON st.student_id=ast.student_id

WHEN MATHCED THEN

UPDATE SET st.score=ast.score

WHEN NOT MATHCED THEN
        INSERT (st.student_id, st.score_id) VALUES (ast.student_id, ast_score)





자기 자신과 비교하는 DUAL

1. 오라클 자체에서 제공되는 테이블

2. 내부에서 자기 자신의 테이블을 비교할 때 사용

3. 간단하게 함수를 이용해서 계산 결과값을 확인할 때 사용





MERGE INTO emp
            USING DUAL
            ON (employee_id = 200911)
            WHEN MATCHED THEN
                      UPDATE SET
                            first_name = 'John',
                            last_name = 'Petrucci',
                            email = 'dream@johnpetrucci.com',
                            ......
            WHEN NOT MATCHED THEN
                      INSERT (first_name, last_name, email, ...... ) 
                                 VALUES ('John', 'Petrucci', 'dream@johnpetrucci.com', ...... );






참고

http://jag212.github.io/databaseMerge/



반응형