본문 바로가기
카테고리 없음

MERGE INTO 사용법 데이터가 있으면 UPDATE 없으면 INSERT

by kangs' tong 2023. 10. 23.

MERGE INTO 사용법: UPDATE와 INSERT를 한 번에 처리하기


1. 개요

MERGE INTO 문은 데이터가 이미 존재하는 경우에는 업데이트를 수행하고, 없는 경우에는 새로운 데이터를 삽입하는 유용한 SQL문입니다. 이 포스팅에서는 MERGE INTO 문의 사용법에 대해 상세히 설명하고, 예시를 통해 이해를 돕겠습니다.

2. MERGE INTO 구문

MERGE INTO 테이블명 AS T
USING (SELECT * FROM 임시테이블명) AS S
ON (T.기준열 = S.기준열)
WHEN MATCHED THEN
    UPDATE SET T.열1 = S.열1, T.열2 = S.열2, ...
WHEN NOT MATCHED THEN
    INSERT (열1, 열2, ...)
    VALUES (S.열1, S.열2, ...)

MERGE INTO 문은 크게 4가지 부분으로 구성됩니다:

  • 테이블명: 쿼리를 실행할 대상 테이블의 이름을 지정합니다.
  • 임시테이블명: MERGE INTO 문에서 사용할 임시 테이블을 지정합니다.
  • ON 절: 테이블과 임시 테이블을 비교하기 위한 기준 열을 지정합니다.
  • WHEN MATCHED 절: 기준 열이 일치하는 경우에 실행되는 업데이트 구문입니다.
  • WHEN NOT MATCHED 절: 기준 열이 일치하지 않는 경우에 실행되는 삽입 구문입니다.

3. MERGE INTO 예시

다음은 employees 테이블에서 사번을 기준으로 데이터를 업데이트하거나 삽입하는 예시입니다.

MERGE INTO employees AS T
USING (SELECT * FROM temporary_employees) AS S
ON (T.employee_id = S.employee_id)
WHEN MATCHED THEN
    UPDATE SET T.first_name = S.first_name, T.last_name = S.last_name, T.salary = S.salary
WHEN NOT MATCHED THEN
    INSERT (employee_id, first_name, last_name, salary)
    VALUES (S.employee_id, S.first_name, S.last_name, S.salary)

위의 예시에서, employees 테이블과 temporary_employees 테이블을 비교하여 employee_id가 일치하는 경우 해당 열의 first_name, last_name, salary를 업데이트하고, 일치하지 않는 경우에는 employee_id, first_name, last_name, salary 값을 삽입합니다.

4. 마무리

MERGE INTO 문은 이미 존재하는 데이터를 업데이트하거나 새로운 데이터를 삽입할 때 매우 유용한 SQL 문입니다. ON, WHEN MATCHED, WHEN NOT MATCHED 등 다양한 구문을 이용하여 필요한 작업을 수행할 수 있습니다.

이 포스팅에서는 MERGE INTO 문의 사용법에 대해 상세히 소개하였습니다. MERGE INTO를 적절하게 사용하여 데이터 조작을 효율적으로 수행할 수 있기를 바랍니다.


[참고자료]

댓글