[Oracle] 집합연산자 : UNION, UNION ALL, INTERSECT, MINUS
집합연산자는 데이터베이스에서 데이터를 조회(SELECT)할 때 쿼리의 결과를 대상으로 연산을 수행하는 연산자이다.
국어,영어,수학,사회,과학 수업을 듣는 1학년 테이블과 국어,영어,수학,사회,과학 수업을 듣는 2학년 테이블로 예제를 살펴보자.
1. UNION : 합집합
- 두 테이블의 결합을 나타내며, 두 테이블의 중복되는 값은 제거되어 수행 결과 한번만 나오게 된다.
사용 예시
SELECT SUBJECT FROM GRADE1
UNION
SELECT SUBJECT FROM GRADE2
결과
- GRADE1테이블과 GRADE2 테이블의 공통 과목인 국어, 사회, 과학이 두 번씩 나오는 것이 아닌 한 번만 반환 된다.
2. UNION ALL : 중복을 포함한 합집합
- 두 테이블의 결합을 나타내며, 두 테이블의 결합되는 모든 값(중복 포함)을 반환 한다.
사용 예시
SELECT SUBJECT FROM GRADE1
UNION ALL
SELECT SUBJECT FROM GRADE2
결과
- GRADE1테이블과 GRADE2 테이블의 공통 과목인 국어, 사회, 과학이 중복되어 반환 된다.
3. INTERSECT : 교집합
- 두 테이블의 집합 중 공통된 행을 반환 한다.
사용 예시
SELECT SUBJECT FROM GRADE1
INTERSECT
SELECT SUBJECT FROM GRADE2
결과
- GRADE1테이블과 GRADE2 테이블의 공통 과목인 국어, 사회, 과학이 반환 된다.
4. MINUS : 차집합
- 첫 번째 테이블을 기준으로, 나머지 테이블에 있는 행을 제외한 행들을 반환 한다.
사용 예시1
SELECT SUBJECT FROM GRADE1
MINUS
SELECT SUBJECT FROM GRADE2
결과
- GRADE1 테이블에서 GRADE2 테이블의 국어,영어,수학,사회,과학을 제외한 행이 반환 된다.
헷갈릴 수 있으니 반대로도 한 번 해보자.
사용 예시2
SELECT SUBJECT FROM GRADE2
MINUS
SELECT SUBJECT FROM GRADE1
결과
- GRADE2 테이블에서 GRADE1 테이블의 국어,사회,과학,음악,미술을 제외한 행이 반환 된다.
댓글