요약 :이 자습서에서는 Oracle MERGE
문을 사용하여 업데이트 또는 삽입을 수행하는 방법을 배웁니다. 지정된 조건을 기반으로하는 데이터.
Oracle MERGE 문 소개
Oracle MERGE
문은 하나 이상의 소스 테이블에서 데이터를 선택합니다. 업데이트하거나 목표 테이블에 삽입합니다. MERGE
문을 사용하면 대상 테이블에서 데이터를 업데이트할지 아니면 데이터를 삽입할지 여부를 결정하는 조건을 지정할 수 있습니다.
다음은 Oracle의 구문을 보여줍니다. MERGE
문 :
MERGE
문을 자세히 살펴 보겠습니다.
먼저 업데이트하거나 INTO
절에 삽입하려는 대상 테이블 (target_table
).
두 번째, 업데이트하거나 USING
절에 삽입 할 데이터 소스 (source_table
)를 지정합니다.
셋째, 다음을 지정합니다. 병합 작업이 업데이트되거나 ON
절에 삽입되는 검색 조건.
대상 테이블의 각 행에 대해 Oracle은 검색 조건을 평가합니다.
- 결과가 true이면 Oracle은 소스 테이블의 해당 데이터로 행을 업데이트합니다.
- 결과가 false 인 경우 y 행이 있으면 Oracle은 소스 테이블의 해당 행을 대상 테이블에 삽입합니다.
MERGE
문은 결합 할 때 편리합니다. 한 번의 작업으로 여러 INSERT
, UPDATE
및 DELETE
문.
MERGE
는 결정적 명령문이므로 동일한 MERGE
명령문에서 대상 테이블의 동일한 행을 여러 번 업데이트 할 수 없습니다. .
선택적인 DELETE WHERE
절을 MATCHED
절에 추가하여 병합 작업 후 정리할 수 있습니다. DELETE
절은 ON
및 DELETE WHERE
모두와 일치하는 대상 테이블의 행만 삭제합니다. 절.
Oracle MERGE 전제 조건
MERGE
문을 실행하려면 INSERT
및 UPDATE
개체 권한. DELETE
절을 사용하는 경우 대상 테이블에 대한 DELETE
객체 권한도 있어야합니다.
Oracle MERGE 예
예를 들어 members
및 member_staging
의 두 테이블이 있다고 가정합니다.
새 구성원이있을 때마다 members
테이블에 새 행을 삽입합니다. 그런 다음 members
테이블의 데이터가 member_staging
테이블의 데이터와 병합됩니다.
다음 문 members
및 member_staging
테이블을 만듭니다.
다음 INSERT
문은 members
및 member_staging
테이블에 샘플 데이터를 삽입합니다.
테이블을 member_staging
테이블로 변경하려면 다음 작업을 수행해야합니다.
- 멤버 ID가 1, 3 인 행을 업데이트합니다. , 4, 6은이 테이블에서 이러한 멤버의 순위 또는 성이 다르기 때문입니다.
- 멤버 ID가 7-10 인 행은 테이블이지만
member_staging
테이블에는 없습니다.
총 8 개 행을 병합해야합니다.
다음 ing은 이러한 모든 작업을 한 번에 수행하는 MERGE
문입니다.
병합 문은 members
<의 각 행을 비교합니다. member_id
열의 값을 기준으로 member_staging
테이블의 각 행이있는 / div> 테이블 (ON
절).
두 테이블의 member_id
열 값이 같으면 MERGE
문은 이름, 성 및 순위를 members
테이블에서 member_staging
테이블로 업데이트합니다. 두 테이블의 이름, 성 또는 순위 열이 다릅니다.
그렇지 않으면 members
테이블의 행을 테이블.
Oracle은 예상대로 병합 된 8 개의 행을 반환했습니다.
이 자습서에서는 Oracle MERGE
문 지정된 조건을 기반으로합니다.
- 이 자습서가 도움이 되었습니까?
- 예 아니요