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
를 적절하게 사용하여 데이터 조작을 효율적으로 수행할 수 있기를 바랍니다.
[참고자료]
댓글