<집합연산자 (UNION, INTERSECT, MINUS)>
-
집합 A(1,2,3), B(3,4,5)가 있다고 가정
-
UNION ALL : (1,2,3,3,4,5) 합집합. 중복을 포함한 결과의 합 검색
-
UNION: (1,2,3,4,5) 합집합. 중복을 제거한 결과의 합을 검색
-
INTERSECT: (3) 교집합. 양쪽 모두에서 포함된 행을 검색
-
MINUS: (1,2) 차집합. 첫 번째 검색 결과에서 두 번째 검색 결과를 제외한 나머지를 검색
-
UNION: employees 테이블의 employee_id, job_id와 job_history 테이블의 employee_id, job_id를 중복을 제외하고 합하여 조회 (중복이 제외된 115개의 행이 출력됨)
1
2
3
4
5
|
SELECT employee_id, job_id
FROM employees
UNION
SELECT employee_id, job_id
FROM job_history;
|
cs |
-
UNION ALL: employees 테이블의 employee_id, job_id와 job_history 테이블의 employee_id, job_id를 중복을 포함하고 합하여 조회 (중복을 포함 두 테이블의 모든 행을 합한 117개의 행이 출력됨)
1
2
3
4
5
|
SELECT employee_id, job_id
FROM employees
UNION ALL
SELECT employee_id, job_id
FROM job_history;
|
cs |
-
INTERSECT: employees 테이블의 employee_id, job_id와 job_history 테이블의 employee_id, job_id의 중복된 값을 조회 (교집합 2행이 출력됨 (2행이 중복된다는 뜻))
1
2
3
4
5
|
SELECT employee_id, job_id
FROM employees
INTERSECT
SELECT employee_id, job_id
FROM job_history;
|
cs |
-
MINUS: employees 테이블의 employee_id, job_id와 job_history 테이블의 employee_id, job_id의 중복된 값을 제외한 나머지 행을 조회 (차집합 105행이 출력됨)
1
2
3
4
5
|
SELECT employee_id, job_id
FROM employees
MINUS
SELECT employee_id, job_id
FROM job_history;
|
cs |
<집합연산자 예제>
-
employees 테이블의 department_id 집합과 departments 테이블의 department_id 집합을 UNION 연산자를 이용해 합치기
1
2
3
4
5
|
SELECT department_id
FROM employees
UNION
SELECT department_id
FROM departments;
|
cs |
-
employees 테이블의 department_id 집합과 departments 테이블의 department_id 집합을 UNION ALL 연산자를 이용해 합치기
1
2
3
4
5
|
SELECT department_id
FROM employees
UNION ALL
SELECT department_id
FROM departments;
|
cs |
-
employees 테이블의 department_id 집합과 departments 테이블의 department_id 집합의 교집합을 INTERSECT 연산자를 이용해 합치기
1
2
3
4
5
|
SELECT department_id
FROM employees
INTERSECT
SELECT department_id
FROM departments;
|
cs |
-
departments 테이블의 department_id 집합에서 employees 테이블의 department_id 집합을 MINUS 연산자를 이용해 빼보기
1
2
3
4
5
|
SELECT department_id
FROM departments
MINUS
SELECT department_id
FROM employees;
|
cs |
'Learning > SQL' 카테고리의 다른 글
데이터 조작어(DML) - INSERT 데이터의 입력 (0) | 2020.06.19 |
---|---|
트랜잭션 (0) | 2020.06.19 |
서브쿼리 - 다중열 (0) | 2020.06.18 |
서브쿼리 - 다중행 (0) | 2020.06.18 |
서브쿼리 - 단일행 (0) | 2020.06.18 |