SQL Server MERGE (한국어)
요약 :이 자습서에서는 SQL Server MERGE
사용 방법을 배웁니다. 다른 테이블과 일치하는 값을 기반으로 테이블의 데이터를 업데이트하는 문입니다.
소개 SQL Server MERGE 문
소스 및 대상 테이블이라는 두 개의 테이블이 있다고 가정 해 보겠습니다. 소스 테이블에서 일치하는 값을 기반으로 대상 테이블을 업데이트하십시오. 세 가지 경우가 있습니다.
- 소스 테이블에 대상 테이블에없는 일부 행이 있습니다. 이 경우 원본 테이블에있는 행을 대상 테이블에 삽입해야합니다.
- 대상 테이블에는 원본 테이블에없는 일부 행이 있습니다. 이 경우 대상 테이블에서 행을 삭제해야합니다.
- 소스 테이블에는 대상 테이블의 행과 동일한 키를 가진 일부 행이 있습니다. 그러나 이러한 행은 키가 아닌 열에서 다른 값을 갖습니다. 이 경우 소스 테이블의 값으로 대상 테이블의 행을 업데이트해야합니다.
다음 그림은 해당 작업이 포함 된 소스 및 대상 테이블을 보여줍니다. insert, 업데이트 및 삭제 :
INSERT
, UPDATE
및 DELETE
문을 개별적으로 사용하세요. 데이터를 원본 테이블의 행과 일치하는 대상 테이블로 업데이트하는 명령문입니다.
그러나 SQL Server는 세 가지 작업을 수행 할 수있는 MERGE
명령문을 제공합니다. 동시에 행동. 다음은 MERGE
문의 구문을 보여줍니다.
Code language: SQL (Structured Query Language) (sql)
먼저 대상 테이블과 소스를 지정합니다. MERGE
절의 테이블.
둘째, merge_condition
는 소스 테이블의 행이 일치하는 방식을 결정합니다. 목표 테이블의 행. 조인 절의 조인 조건과 유사합니다. 일반적으로 일치를 위해 기본 키 또는 고유 키의 키 열을 사용합니다.
셋째, merge_condition
는 세 가지 상태가됩니다. MATCHED
, NOT MATCHED
및 NOT MATCHED BY SOURCE
.
-
MATCHED
: 병합 조건과 일치하는 행입니다. 다이어그램에서는 파란색으로 표시됩니다. 일치하는 행의 경우 소스 테이블의 값으로 대상 테이블의 행 열을 업데이트해야합니다. -
NOT MATCHED
: 소스의 행입니다. 대상 테이블에 일치하는 행이없는 테이블. 다이어그램에서는 주황색으로 표시됩니다. 이 경우 소스 테이블의 행을 대상 테이블에 추가해야합니다.NOT MATCHED
는NOT MATCHED BY TARGET
라고도합니다. -
NOT MATCHED BY SOURCE
: 소스 테이블의 행과 일치하지 않는 대상 테이블의 행입니다. 다이어그램에서 녹색으로 표시됩니다. 대상 테이블을 원본 테이블의 데이터와 동기화하려면이 일치 조건을 사용하여 대상 테이블에서 행을 삭제해야합니다.
SQL Server MERGE 문 예
제품 카테고리 별 매출을 저장하는 sales.category
및 sales.category_staging
두 개의 테이블이 있다고 가정합니다.
데이터를 sales.category_staging
(소스 테이블)의 값으로 sales.category
(대상 테이블)로 업데이트하려면 다음 MERGE
문 :
이 예에서는 두 테이블의 category_id
열에있는 값을 병합 조건으로 사용했습니다.
- 첫 번째, 행
sales.category_staging
테이블의 id 1, 3, 4가 대상 테이블의 행과 일치하므로MERGE
문은 값을 업데이트합니다. 카테고리 이름 및 금액 열sales.category
테이블에 있습니다. - 둘째,
sales.category_staging
테이블에서 ID가 5 및 6 인 행이 존재하지 않습니다.sales.category
테이블에 있으므로MERGE
문은 이러한 행을 대상 테이블에 삽입합니다. - 세 번째, 행
sales.category
테이블의 ID 2가sales.sales_staging
테이블에 없으므로MERGE
문은이 행을 삭제합니다.
합병의 결과로 sales.category
테이블의 데이터는 해당 행의 데이터와 완전히 동기화됩니다. sales.category_staging
테이블.
이 자습서에서는 SQL Server MERGE
문을 사용하여 변경하는 방법을 배웠습니다. 다른 테이블에서 일치하는 값을 기반으로 한 테이블에서.