집합 연산자 는 두 개 이상의 SELECT 결과를 위아래로 합치는 연산입니다. 조인이 "옆으로(열)" 합친다면, 집합 연산자는 "아래로(행)" 합칩니다. 시험은 UNION vs UNION ALL 차이 와 합치기 규칙 을 묻습니다.
이 단원, 시험에서 어디에 나오나
- 제2과목 「SQL 기본 및 활용」 단원입니다.
- 실행 결과(행 집합) 예측 과 컬럼 수·타입 규칙 이 출제 포인트입니다.
① 4가지 집합 연산자
그림 1. UNION(합집합·중복 제거)·UNION ALL(중복 유지)·INTERSECT(교집합)·MINUS(차집합). (자작 도식)
| 연산자 | 결과 |
|---|---|
| UNION | 합집합 · 중복 제거 + 정렬(느림) |
| UNION ALL | 합집합 · 중복 유지(정렬 없음, 빠름) |
| INTERSECT | 교집합(공통 행) |
| MINUS | 차집합(A에만 있는 행) |
MINUS는 오라클, 표준 SQL은EXCEPT입니다(동작 동일).
② UNION vs UNION ALL — 가장 중요한 차이
- UNION: 중복 행을 제거 하고 결과를 정렬 → 그만큼 느림.
- UNION ALL: 중복을 그대로 유지 하고 정렬 안 함 → 빠름.
중복이 없거나 상관없다면 성능상 UNION ALL 이 유리합니다.
③ 합치기 규칙
그림 2. 컬럼 수·대응 위치 타입이 같아야 하며(이름은 무관), ORDER BY는 맨 끝에 한 번. (자작 도식)
- 각 SELECT의 컬럼 개수가 같아야 합니다.
- 대응 위치의 데이터 타입 이 호환돼야 합니다. 컬럼 이름은 달라도 됩니다.
- 결과 컬럼명은 첫 번째 SELECT 기준입니다.
ORDER BY는 전체의 맨 마지막에 한 번만 씁니다.
자주 틀리는 함정
- UNION을 UNION ALL로 착각 — UNION은 중복 제거·정렬, ALL은 유지.
- 컬럼 수/타입 불일치 — 한쪽만 컬럼이 더 많거나 타입이 안 맞으면 오류.
MINUS방향 —A MINUS B ≠ B MINUS A.- ORDER BY를 중간 SELECT에 — 맨 끝에 한 번만 허용.
한 장 정리 (암기 카드)
- UNION(중복제거·정렬) / UNION ALL(중복유지·빠름) / INTERSECT(교집합) / MINUS(차집합, =EXCEPT).
- 규칙: 컬럼 수·타입 일치(이름 무관), 결과명=첫 SELECT, ORDER BY 맨 끝 1회.
- MINUS는 방향 중요(A−B).
참고 출처
- 시험 과목·출제기준: 한국데이터산업진흥원(KDATA) 데이터자격검정 (2026년 7월 확인)
- 집합 연산자 동작은 ANSI SQL·오라클 표준에 근거하며, 본문 설명·예시·도식은 자작입니다.