SQL 기본 및 활용

19. 집합 연산자 — SQLD, UNION·UNION ALL·INTERSECT·MINUS 정리

CBT 전자문제집 편집팀
#SQLD#집합연산자#UNION#UNION ALL#MINUS

집합 연산자두 개 이상의 SELECT 결과를 위아래로 합치는 연산입니다. 조인이 "옆으로(열)" 합친다면, 집합 연산자는 "아래로(행)" 합칩니다. 시험은 UNION vs UNION ALL 차이합치기 규칙 을 묻습니다.

이 단원, 시험에서 어디에 나오나

  • 제2과목 「SQL 기본 및 활용」 단원입니다.
  • 실행 결과(행 집합) 예측컬럼 수·타입 규칙 이 출제 포인트입니다.

① 4가지 집합 연산자

집합 연산자 4종 벤다이어그램. UNION 합집합, UNION ALL 중복 유지, INTERSECT 교집합, MINUS 차집합

그림 1. UNION(합집합·중복 제거)·UNION ALL(중복 유지)·INTERSECT(교집합)·MINUS(차집합). (자작 도식)

연산자결과
UNION합집합 · 중복 제거 + 정렬(느림)
UNION ALL합집합 · 중복 유지(정렬 없음, 빠름)
INTERSECT교집합(공통 행)
MINUS차집합(A에만 있는 행)

MINUS는 오라클, 표준 SQL은 EXCEPT 입니다(동작 동일).

② UNION vs UNION ALL — 가장 중요한 차이

  • UNION: 중복 행을 제거 하고 결과를 정렬 → 그만큼 느림.
  • UNION ALL: 중복을 그대로 유지 하고 정렬 안 함 → 빠름.

중복이 없거나 상관없다면 성능상 UNION ALL 이 유리합니다.

③ 합치기 규칙

집합 연산 규칙 도식. 각 SELECT의 컬럼 수와 대응 위치 타입이 같아야 하고 ORDER BY는 맨 끝 한 번

그림 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).

참고 출처

CBT 전자문제집 편집팀

자격증 개념과 기출 유형을 쉽게 정리합니다.

관련 글