SELECT문을 실행하면 해당 조건에 맞는 데이터가 조회된다. 예를 들어 사원 테이블에서 부서번호가 30인 건을 조회하는 쿼리를 작성하면 이 조건에 맞는 일련의 데이터가 조회되는데 결과는 30번 부서에 속한 사원정보 데이터 집합이라고 부르기도 한다. 집합 연산자는 데이터 집합을 대상으로 연산을 수행하는 연산자를 말하며 종류로는 UNION, UNION ALL, INTERSECT, MINUS가 있다.

데이터 집합이 대상이므로 집합 연산자를 사용할 때 데이터 집합의 수는 한 개 이상을 사용할 수 있다. 여러 개의 SELECT문을 연결해 또 다른 하나의 쿼리를 만드는 역할을 하는 것이 집합 연산자다. 

 

1. UNION

UNON은 합집합을 의미한다. 예를 들어, 두 개의 데이터 집합이 있으면 각 집합 원소(SELECT 결과)를 모두 포함한 결과가 반환된다. 예제를 통해 알아 보자.

 

◈ 예제

 

 

 

 

exp_goods_asia 테이블을 생성해 한국과 일본의 주요 10대 수출품을 입력했다. 다음 쿼리를 실행해 보자.

 

 

 

 

 

 

위는 한국과 일본의 수출품을 조회한 쿼리다. 그 결과로 각각 하나의 데이터 집합을 반환했다. 국가에 상관없이 모든 수출품을 조회하는데, 단 자동차나 선박과 같이 두 국가가 겹치는 수출품목은 한 번만 조회되도록 하려면 UNION(합집합 개념)을 사용한다.

 

 

 

exp_goods_asia 테이블에는 한국, 일본별로 수출품이 10개씩 총 20건이 등록되어 있는데, 자동차나 선박 등 겹쳐 있는 5개 품목은 단 한 번만 조회되었다. 즉 합집합 개념이 적용되어 데이터가 추출되었다.

 

2. UNION ALL

UNION ALL은 UNION과 비슷한데 한 가지 다른 것은 중복된 항목도 모두 조회된다는 점이다.

 

◈ 예제

 

 

 

 

3. INTERSECT

INTERSECT는 합집합이 아닌 교집합을 의미한다. 데이터 집합에서 공통된 항목만 추출해 낸다.

 

◈ 예제

 

 

 

 

4. MINUS

MINUS는 차집합을 의미한다. 즉 한 데이터 집합을 기준으로 다른 데이터 집합과 공통된 항목을 제외한 결과만 추출해 낸다.

 

◈ 예제

 

 

 

이 쿼리는 한국에는 있지만 일본에는 없는 수출품 목록을 조회한 것이다. 반대로 일본에만 있는 수출품을 뽑아 내려면 데이터 집합 순서를 바꿔주면 된다. MINUS는 먼저 위치한 SELECT문이 기준이 된다.

+ Recent posts