[DATABASE] 집합연산자란?

@욕심쟁이

·

2020. 11. 11. 10:22

반응형

1. 합집합 / 여러 쿼리문의 결과를 모아서 보는 연산자 

1-1. UNION

- 출력 결과에서 중복값 제거, 결과를 정렬해서 출력 같은 컬럼에 출력될 값들은 같은 종류의 데이터타입어야 함

SELECT department_id, salary
FROM employees
WHERE salary > 10000
AND department_id = 90
UNION
SELECT department_id, salary
FROM employees
WHERE salary > 10000
AND department_id = 80;

1-2. UNION ALL 

- 출력 결과에서 중복값 제거하지 않고 결과를 정렬없이 출력

SELECT department_id, salary
FROM employees
WHERE salary > 10000
AND department_id = 90
UNION ALL
SELECT department_id, salary
FROM employees
WHERE salary > 10000
AND department_id = 80;

1-3. null

- 합집합 연산할 쿼리구문의 컬럼수가 다르거나 서로 다른 데이터타입의 컬럼을 출력해야 할 때

   NULL을 사용해서 출력 가능

SELECT department_id, salary, last_name, null
FROM employees
WHERE salary > 10000
AND department_id = 90
UNION ALL
SELECT salary, department_id, null, hire_date
FROM employees
WHERE salary > 10000
AND department_id = 80;

2. 공통으로 있는 데이터 찾기 / 교집합

2-1. INTERSECT

- 두 쿼리문의 교집합을 찾는 구문

- 출력 결과는 정렬된 상태로 출력된다.

SELECT salary
FROM employees
WHERE department_id >= 70
INTERSECT
SELECT salary
FROM employees
WHERE department_id < 70;

3. 특정 결과만 제외한 결과 출력 / 차집합

3-1. MINUS

- 위쪽의 집합에서 아래쪽 집합의 내용을 제외한 결과를 출력

- 결과는 정렬되어 출력

SELECT salary
FROM employees
MINUS
SELECT salary
FROM employees
WHERE department_id = 100;

 

반응형