본문 바로가기
카테고리 없음

학습목표

by Lsung 2026. 8. 10.

1. 집합 연산자란?

SQL에서 두 개 이상의 SELECT 문의 결과를 하나로 합치는 연산자입니다. 종류는 다음 4가지입니다.

연산자의미
UNION 두 결과를 합치고 중복 제거
UNION ALL 두 결과를 합치고 중복 유지 (제거 안 함)
INTERSECT 두 결과의 교집합 (공통된 행만)
MINUS (Oracle) / EXCEPT (SQL Server) 차집합 (첫 번째 결과에서 두 번째 결과를 뺀 것)

공통 규칙:

  • 각 SELECT 문의 컬럼 개수가 같아야 함
  • 대응되는 컬럼의 데이터 타입이 서로 호환되어야 함
  • 결과의 컬럼명은 첫 번째 SELECT 문을 기준으로 표시됨

2. UNION vs UNION ALL 차이점

Code
SELECT 이름 FROM 학생
UNION
SELECT 이름 FROM 교수;
  • 중복된 이름이 있으면 한 번만 표시 (내부적으로 정렬 및 중복 제거 작업 수행 → 성능 비용 있음)
Code
SELECT 이름 FROM 학생
UNION ALL
SELECT 이름 FROM 교수;
  • 중복 제거 없이 그대로 다 합쳐서 표시 (중복 제거 작업이 없어 속도가 더 빠름)

핵심 차이: UNION은 중복을 제거하지만 느리고, UNION ALL은 중복을 그대로 두지만 빠릅니다.

3. 집합 연산자를 이용한 SELECT문 예시

예: 화학과 학생과 컴퓨터과 학생을 모두 조회 (중복 제거)

Code
SELECT 학번, 이름 FROM 학생 WHERE 학과 = '화학과'
UNION
SELECT 학번, 이름 FROM 학생 WHERE 학과 = '컴퓨터과';

예: 화학과 학생이면서 동시에 평점 4.0 이상인 학생 (교집합)

Code
SELECT 학번, 이름 FROM 학생 WHERE 학과 = '화학과'
INTERSECT
SELECT 학번, 이름 FROM 학생 WHERE 평점 >= 4.0;

예: 화학과 학생 중 평점 4.0 이상이 아닌 학생 (차집합)

Code
SELECT 학번, 이름 FROM 학생 WHERE 학과 = '화학과'
MINUS
SELECT 학번, 이름 FROM 학생 WHERE 평점 >= 4.0;