SW/MySQL

MySQL : SET(집합 연산) : 합집합, 교집합, 차집합 : 사용방법, 예제

얇은생각 2020. 1. 24. 07:30
반응형

SET

두 select 문을 통해 얻어온 결과를 집합 연산을 통해 하나의 결과로 만드는 것을 set이라고 부릅니다.

합집합, 교집합, 차집합 등 집합 연산을 할 수 있습니다.

집합 연산을 하기 위해서는 두 select문을 통해 가져오는 컬럼이 같아야 합니다.

 

 

 

합집합

두 select 문의 결과를 모두 포함하는 최종 결과를 반환합니다.

 

UNION

중복되는 데이터를 하나만 가져옵니다.

 

UNION ALL

중복되는 데이터도 모두 가져옵니다.

 

 

 

교집합

두 select 문의 결과 중 중복되는 부분만 가져옵니다.

교집합은 join 문을 사용합니다.

 

 

 

차집합

두 select 문에서 중복되는 부분을 제거하고 첫 번째 select 문 결과만 가져옵니다.

차집합은 서브 쿼리를 이용합니다.

 

 

 

예제

select emp_no from titles where title='Senior Staff'
union
select emp_no from titles where title="Senior";

합집합 조회 결과는 다음과 같습니다. 중복되는 데이터들을 포함하여 가져오는 것을 알 수 있습니다.

 

 

select a1.emp_no
from titles a1, titles a2
where a1.emp_no = a2.emp_no and a1.title = "Senior Staff" and a2.title='Staff';

교집합 조회 결과는 다음과 같습니다. 중복되는 데이터들만 가져오는 것을 알 수 있습니다.

 

 

select emp_no
from titles 
where title='Staff' and emp_no not in 
	(select emp_no from titles where title='Senior Staff');

차집합 조회 결과는 다음과 같습니다. MySQL에서는 오라클과 달리 차집합 연산을 제공하지 않으므로, 서브 쿼리를 활용해 작성해야한다고 합니다.

반응형