SQL Server MERGE (한국어)

요약 :이 자습서에서는 SQL Server MERGE 사용 방법을 배웁니다. 다른 테이블과 일치하는 값을 기반으로 테이블의 데이터를 업데이트하는 문입니다.

소개 SQL Server MERGE 문

소스 및 대상 테이블이라는 두 개의 테이블이 있다고 가정 해 보겠습니다. 소스 테이블에서 일치하는 값을 기반으로 대상 테이블을 업데이트하십시오. 세 가지 경우가 있습니다.

  1. 소스 테이블에 대상 테이블에없는 일부 행이 있습니다. 이 경우 원본 테이블에있는 행을 대상 테이블에 삽입해야합니다.
  2. 대상 테이블에는 원본 테이블에없는 일부 행이 있습니다. 이 경우 대상 테이블에서 행을 삭제해야합니다.
  3. 소스 테이블에는 대상 테이블의 행과 동일한 키를 가진 일부 행이 있습니다. 그러나 이러한 행은 키가 아닌 열에서 다른 값을 갖습니다. 이 경우 소스 테이블의 값으로 대상 테이블의 행을 업데이트해야합니다.

다음 그림은 해당 작업이 포함 된 소스 및 대상 테이블을 보여줍니다. insert, 업데이트 및 삭제 :

INSERT, UPDATEDELETE 문을 개별적으로 사용하세요. 데이터를 원본 테이블의 행과 일치하는 대상 테이블로 업데이트하는 명령문입니다.

그러나 SQL Server는 세 가지 작업을 수행 할 수있는 MERGE 명령문을 제공합니다. 동시에 행동. 다음은 MERGE 문의 구문을 보여줍니다.

Code language: SQL (Structured Query Language) (sql)

먼저 대상 테이블과 소스를 지정합니다. MERGE 절의 테이블.

둘째, merge_condition는 소스 테이블의 행이 일치하는 방식을 결정합니다. 목표 테이블의 행. 조인 절의 조인 조건과 유사합니다. 일반적으로 일치를 위해 기본 키 또는 고유 키의 키 열을 사용합니다.

셋째, merge_condition는 세 가지 상태가됩니다. MATCHED, NOT MATCHEDNOT MATCHED BY SOURCE.

  • MATCHED : 병합 조건과 일치하는 행입니다. 다이어그램에서는 파란색으로 표시됩니다. 일치하는 행의 경우 소스 테이블의 값으로 대상 테이블의 행 열을 업데이트해야합니다.
  • NOT MATCHED : 소스의 행입니다. 대상 테이블에 일치하는 행이없는 테이블. 다이어그램에서는 주황색으로 표시됩니다. 이 경우 소스 테이블의 행을 대상 테이블에 추가해야합니다. NOT MATCHEDNOT MATCHED BY TARGET라고도합니다.
  • NOT MATCHED BY SOURCE : 소스 테이블의 행과 일치하지 않는 대상 테이블의 행입니다. 다이어그램에서 녹색으로 표시됩니다. 대상 테이블을 원본 테이블의 데이터와 동기화하려면이 일치 조건을 사용하여 대상 테이블에서 행을 삭제해야합니다.

SQL Server MERGE 문 예

제품 카테고리 별 매출을 저장하는 sales.categorysales.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 문을 사용하여 변경하는 방법을 배웠습니다. 다른 테이블에서 일치하는 값을 기반으로 한 테이블에서.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다