AI·데이터 자격증/SQLD

[SQLD 이론 43] MERGE 문, WHEN MATCHED·NOT MATCHED와 UPDATE·INSERT·DELETE 결과 총정리 (+기출변형문제)

랜덤워크z 2026. 10. 23. 14:38

SQLD 이론 43 MERGE 문

SQLD MERGE 문 구조 INTO·USING·ON, WHEN MATCHED THEN UPDATE·WHEN NOT MATCHED THEN INSERT, DELETE WHERE, 결과 행 계산과 제약 사항 핵심 정리

있으면 UPDATE, 없으면 INSERT를 한 문장으로 처리하는 MERGE를 정리할 차례야

60 · 61 · 62회 모두 MERGE 실행 후 테이블 결과를 고르는 문제가 나왔어

 

SQLD 기초이론 정리 시리즈 43탄!!!

과목 : 2과목 SQL 기본 및 활용

세부 영역 : 관리 구문 - DML (MERGE)

 

▶ [이론 42] DML 보러가기

 

1. 오늘 사용할 예시 테이블

창고 재고 STOCK(대상)과 오늘 입고 내역 INCOME(원본)이야

 

상품ID 재고
P1 10
P2 5
P3 0

▲ STOCK (대상 테이블)

 

상품ID 입고
P2 20
P3 7
P4 15

▲ INCOME (원본 테이블)

 

2. MERGE 문 구조

MERGE INTO STOCK S

USING INCOME I

ON (S.상품ID = I.상품ID)

WHEN MATCHED THEN UPDATE SET S.재고 = S.재고 + I.입고

WHEN NOT MATCHED THEN INSERT (상품ID, 재고) VALUES (I.상품ID, I.입고);

 

구성 역할
INTO 변경될 대상 테이블
USING 비교할 원본 (테이블 · 뷰 · 서브쿼리)
ON 두 테이블을 맞춰보는 조건 (괄호 필수)
WHEN MATCHED ON 조건이 맞는 행 → UPDATE (또는 DELETE)
WHEN NOT MATCHED 원본에만 있는 행 → INSERT

 

3. 실행 결과 따라가기

 

상품ID 처리 재고 (실행 후)
P1 INCOME에 없음 → 변화 없음 10
P2 MATCHED → 5 + 20 25
P3 MATCHED → 0 + 7 7
P4 NOT MATCHED → INSERT 15

 

결과 : 4행 (UPDATE 2건, INSERT 1건)

대상에만 있는 P1은 MERGE가 건드리지 않아

 

60 · 61 · 62회 출제 포인트 : MERGE 후 특정 상품의 값, 전체 행 수

 

4. 알아둘 규칙

규칙 설명
한쪽 절만 사용 WHEN MATCHED만 또는 WHEN NOT MATCHED만 써도 됨
UPDATE 뒤 DELETE WHERE UPDATE된 행 중 조건 맞는 행 삭제 (Oracle)
ON 칼럼 수정 불가 ON 조건에 쓴 칼럼은 UPDATE SET에서 바꿀 수 없음
UPDATE · INSERT에 WHERE 각 절 안에 WHERE로 조건 추가 가능
분류 DML (INSERT · UPDATE · DELETE를 합친 것)

 

예) WHEN MATCHED THEN UPDATE SET S.재고 = S.재고 + I.입고 DELETE WHERE S.재고 < 10

→ P2(25) 유지, P3(7) 삭제. P1(10)은 UPDATE 대상이 아니라서 삭제 판단도 안 해

 

[ 최근 기출 출제 포인트 ]

 

회차 출제 포인트
60회 MERGE 후 테이블 결과
61회 WHEN MATCHED · NOT MATCHED 동작
62회 MERGE 결과 행 수, DELETE WHERE

 

[ 자주 묻는 질문 ]

Q. 원본에 같은 키가 2건이면?

A. 대상 한 행이 두 번 UPDATE되려 해서 오류가 나. ON 조건으로 1:1 매칭이 되게 해야 해

 

Q. MERGE도 ROLLBACK 돼?

A. 돼! DML이라 COMMIT 전이면 되돌릴 수 있어

 

[ 시험 포인트 정리 ]

 

키워드 핵심
MATCHED UPDATE (+ DELETE WHERE)
NOT MATCHED INSERT
대상에만 있는 행 변화 없음
ON 칼럼 UPDATE 불가
MERGE DML

 

[ 기출변형문제 ]

※ 60~62회 출제 포인트와 출제기준을 바탕으로 새로 만든 변형문제야

(위의 STOCK · INCOME 테이블 기준, 각 문항은 원래 데이터에서 시작)

 

Q1. 2번 본문의 MERGE 실행 후 P2의 재고는?

① 20

② 5

③ 25

④ 15

 

Q2. 2번 본문의 MERGE 실행 후 STOCK의 전체 행 수는?

① 3행

② 4행

③ 5행

④ 6행

 

Q3. WHEN NOT MATCHED 절을 빼고 WHEN MATCHED 절만 실행하면 STOCK의 행 수는?

① 3행

② 4행

③ 2행

④ 5행

 

Q4. WHEN MATCHED 절에 DELETE WHERE S.재고 < 10 을 추가하면 삭제되는 상품은?

① P1

② P2

③ P3

④ P4

 

Q5. MERGE 문에 대한 설명으로 옳지 않은 것은?

① ON 절에 쓴 칼럼은 UPDATE SET에서 변경할 수 없다

② WHEN MATCHED 절만 단독으로 사용할 수 있다

③ USING 절에는 테이블 · 뷰 · 서브쿼리를 쓸 수 있다

④ MERGE는 DDL에 속한다

 


[ 정답 & 해설 ]

 

문항 정답 및 해설
Q1 ③ MATCHED → 5 + 20 = 25 (60회 출제 포인트)
Q2 ② 기존 3행 + P4 INSERT 1행 = 4행 (62회 출제 포인트)
Q3 ① INSERT가 없어서 P4는 안 들어감 → 3행 그대로
Q4 ③ UPDATE된 P2(25), P3(7) 중 10 미만인 P3만 삭제
Q5 ④ MERGE는 DML이야

 

다음 글에서는 변경을 확정하고 되돌리는

[이론 44] TCL

▶ [이론 44] TCL 보러가기

을 COMMIT · ROLLBACK · SAVEPOINT로 정리해볼게!

 

▶ SQLD 기초이론 전체 글 보러가기

▶ SQLD · AI 자격증 스터디 자료 보러가기 (AI DATA 자격증 스터디 클럽)

 

SQLD 준비하시는 분들 모두 화이팅입니다~~~~~ ^^

반응형