본문 바로가기
스터디/Oracle

[Oracle / 오라클] 집합 연산자 UNION, UNION ALL, MINUS, INTERSECT

by 홍장 2023. 6. 19.

오라클에서 사용하는 4가지 종류 집합 연산자

종류 설명
UNION - 합집합 중복값 제거 
UNION ALL - 합집합 중복값 허용, 속도 빠름, 
MINUS - 차집합 앞의 SELECT 에서 다음 SELECT 에 존재하지 않는 데이터만 출력
INTERSECT - 교집합 앞의 SELECT 와 다음 SELECT 의 결과 값이 같은 데이터만 출력

UNION 

SELECT employee_id, last_name, salary, department_id from employees;

SELECT employee_id, last_name, salary, department_id from employees where department_id = 10
union
SELECT employee_id, last_name, salary, department_id from employees where department_id = 20;

 

- 두개의 SELECT 문의 열 개수와 자료형이 같아야 한다

- 두 SELECT 문의 칼럼 명이 다른것은 상관없다 => 첫번째 SELECT 문의 칼럼 명으로 표기 된다 

UNION ALL 

SELECT employee_id, first_name, SALary, department_id
  FROM employees
 WHERE department_id = 10
UNION ALL
SELECT employee_id, first_name, SALary, department_id
  FROM employees
 WHERE department_id = 10;

MINUS

SELECT employee_id, first_name, SALary, department_id
  FROM employees
 WHERE department_id in ('10', '20', '30')
MINUS
SELECT employee_id, first_name, SALary, department_id
  FROM employees
 WHERE department_id = 10;

MINUS 는 뒤의 SELCET 문 조건이 UNION 에서 조회된 department_id = '10' 가 차집합 조건으로,

앞의 SELECT 조건에서 제외 된다. 

 

INTERSECT

SELECT employee_id, first_name, SALary, department_id
  FROM employees
 WHERE department_id in ('10', '20', '30')
INTERSECT
SELECT employee_id, first_name, SALary, department_id
  FROM employees
 WHERE department_id = 30;

 

 

두번째 SELECT문 을 기준으로 교집합으로 조회한다