오라클에서 사용하는 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문 을 기준으로 교집합으로 조회한다
'스터디 > Oracle' 카테고리의 다른 글
[Oracle] NVL, NVL2, NULLIF, DECODE, COALESCE, CASE WHEN (0) | 2023.06.20 |
---|---|
[Oracle / 오라클] group by, count, sum (0) | 2023.06.19 |
[Oracle/오라클] LEAD() 다음 레코드 값, LAG() 이전 레코드 값 조회 (0) | 2021.10.19 |
[Oracle/오라클] FIRST_VALUE() 필드의 첫번째 값, LAST_VALUE() 마지막 값 구하기 (0) | 2021.10.19 |
[오라클/Oracle] INSTER, SUBSTR, REPLACE (0) | 2021.09.18 |