1. MERGE란?
Oracle 데이터베이스에서 사용되는 SQL 문의 한 종류이며, 두 테이블 간의 조합, 삽입, 업데이트, 삭제 등을 단일 문으로 처리할 수 있도록 해준다.
이는 보통 "병합" 또는 "업서트(UPSERT)"라고도 불리며 MERGE 문은 대상 테이블(또는 뷰)과 소스 테이블 간의 조인 조건을 기반으로 대상 테이블을 조작한다.
기본적인 MERGE 문의 구조
MERGE INTO target_table USING source_table ON (condition) WHEN MATCHED THEN UPDATE SET column1 = value1, column2 = value2, ... WHEN NOT MATCHED THEN INSERT (column1, column2, ...) VALUES (value1, value2, ...); |
1) target_table : 대상이 되는 테이블 or 뷰 2) source_table : 대상 테이블에 삽입하거나 업데이트할 데이터를 포함하는 테이블 or 뷰 3) condition : 대상 테이블과 소스 테이블 간의 조인 조건 4) WHEN MATCHED : 조인 조건이 일치하는 경우 수행되는 부분으로, 업데이트 작업이 여기서 수행 5) WHEN NOT MATCHED : 조인 조건이 일치하지 않는 경우 수행되는 부분으로, 여기에서는 삽입 작업이 수행 |
예제)
departments_temp 의 데이터를 employees에 조인 조건인 department_id에 따라 업데이트하거나 삽입 |
MERGE INTO employees e USING departments_temp d ON (e.department_id = d.department_id) WHEN MATCHED THEN UPDATE SET e.department_name = d.department_name WHEN NOT MATCHED THEN INSERT (employee_id, department_id, department_name) VALUES (d.employee_id, d.department_id, d.department_name); |
'공부방 > DataBase' 카테고리의 다른 글
[Oracle] 콤마로 분리된 문자열을 여러 행으로 변환(REGEXP_SUBSTR) (1) | 2024.03.29 |
---|---|
[Oracle] 가로(행) 데이터를 세로(열)로 출력 (0) | 2023.12.14 |
[Oracle] 월별 마지막 날짜 조회 (0) | 2023.08.06 |
[Oracle] 프로시저 내용 조회 (0) | 2023.02.24 |
[mariaDB] mariaDB 란? (0) | 2022.12.03 |