데이터베이스/SQL
[DB] SQL SET연산자(집합연산자)_합집합 UNION,교집합 INTERSECT, 차집합 MINUS
박유린
2021. 10. 28. 20:07
SET 연산자 (집합연산자) : SELECT문들의 결과를 처리하는 방법으로 합집합, 교집합, 차집합 연산자가 있다.
- UNION ALL을 제외하고 모두 SORD가 발생하므로, 메모리 소모가 적다.
- 두 SELECT문은 컬럼의 개수, 위치 유형이 동일해야 한다.
- 별칭(ALIAS)는 첫번째 SELECT문에 기술하면 된다.
- 3개 이상의 SELECT문도 사용 가능하다. (위에서 아래로 처리된다.)
- ORDER BY절은 맨 마지막에 기술한다.
- SET연산자의 위치는 두 SELECT문 사이에 기술한다.
▶ 실습을 위한 테이블 2개를 생성
--EMP01테이블 : 부서번호 10, 30
CREATE TABLE EMP01 : AS
SELECT * FROM EMP WHERE DEPTNO IN (10,30);
--EMP02테이블 : 부서번호 30
CREATE TABLE EMP02 AS
SELECT * FROM EMP WHERE DEPTNO = 30;
COMMIT;
1. UNION(합집합) : SELECT1의 결과를 구하고 SELECT2를 처리해서 두결과를 하나로 합친다. (중복값 제거)
UNOIN ALL : UNOIN과 달리 중복값을 제거하지 않고 출력된다.
SELECT EMPNO, JOB, DEPTNO
FROM EMP01
UNION
SELECT EMPNO, JOB, DEPTNO
FROM EMP02;
SELECT EMPNO, JOB, DEPTNO
FROM EMP01
UNION ALL --중복제거 안함
SELECT EMPNO, JOB, DEPTNO
FROM EMP02;
2. INTERSECT(교집합) : SELECT1문을 처리할때, 첫번째 필드를 기준으로 정렬시키면서 결과-레코드 집합을 구하고,
SELECT2문을 처리하고, 첫번째 필드를 기준으로 정렬시키면서 결과-레코드 집합을 구한후,
두 SELECT문의 정렬된 결과-레코드 집합으로부터 공통된 결과-레코드만 추출하여 표시한다.
SELECT EMPNO, JOB, DEPTNO
FROM EMP01
INTERSECT
SELECT EMPNO, JOB, DEPTNO
FROM EMP02;
3. MINUS(차집합) : SELECT1문의 내용에서 SELECT2문의 내용 중 공통된 부분을 제거한 나머지가 출력된다.
SELECT EMPNO, JOB, DEPTNO
FROM EMP01
MINUS
SELECT EMPNO, JOB, DEPTNO
FROM EMP02;