📌 1. 집합 연산자란?
두 개 이상의 SELECT 문 결과를 하나로 합치는 연산자.
하지만 주의!
👉 SELECT문의 컬럼 개수와 데이터 타입이 일치해야 해.

✅ 집합 연산자 종류
| 연산자 | 설명 | 중복 제거 | 정렬 |
| UNION | 두 쿼리 결과를 합침 (중복 제거) | ✅ | 자동 (기본) |
| UNION ALL | 두 쿼리 결과를 합침 (중복 포함) | ❌ | 자동 (기본) |
| INTERSECT | 두 쿼리 결과의 공통된 행만 반환 | ✅ | 자동 (기본) |
| MINUS | 앞 쿼리 결과에서 뒤 쿼리 결과를 뺌 | ✅ | 자동 (기본) |
💡 예제 테이블
-- 부서1
SELECT EMP_NAME FROM EMP1;
-- 부서2
SELECT EMP_NAME FROM EMP2;
📘 1. UNION – 중복 제거하며 합치기
SELECT EMP_NAME FROM EMP1
UNION
SELECT EMP_NAME FROM EMP2;
두 테이블의 이름을 합치되, 중복은 제거됨.
📘 2. UNION ALL – 중복 포함해서 합치기
SELECT EMP_NAME FROM EMP1
UNION ALL
SELECT EMP_NAME FROM EMP2;
모든 결과를 그대로 보여줘. 중복도 포함됨.
📘 3. INTERSECT – 교집합
SELECT EMP_NAME FROM EMP1
INTERSECT
SELECT EMP_NAME FROM EMP2;
두 SELECT 결과에서 공통된 데이터만 출력
📘 4. MINUS – 차집합
SELECT EMP_NAME FROM EMP1
MINUS
SELECT EMP_NAME FROM EMP2;
EMP1에는 있지만, EMP2에는 없는 데이터만 출력
📌 사용 시 주의할 점
- 각 SELECT문의 컬럼 수와 순서, 데이터 타입이 같아야 함
- ORDER BY는 마지막 SELECT 뒤에만 한 번 사용 가능
- 내부 SELECT문에선 ORDER BY 못 씀 (전체 결과에만 가능)
-- 올바른 예시
SELECT EMP_NAME FROM EMP1
UNION
SELECT EMP_NAME FROM EMP2
ORDER BY EMP_NAME;
🧠 요약 그림 (간단하게)
EMP1 = {A, B, C}
EMP2 = {B, C, D}
UNION → {A, B, C, D}
UNION ALL → {A, B, C, B, C, D}
INTERSECT → {B, C}
MINUS → {A}'대덕인재 > Oracle' 카테고리의 다른 글
| [Oracle D-16] VIEW (0) | 2025.04.22 |
|---|---|
| [Oracle D-15] Oracle 객체 (0) | 2025.04.21 |
| [Oracle D-12] ANSI JOIN (0) | 2025.04.19 |
| [Oracle D-14] 서브쿼리(Subquery) (0) | 2025.04.18 |
| [Oracle D-13] 외부조인(Outer join) (0) | 2025.04.17 |