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;
'데이터베이스 > SQL' 카테고리의 다른 글
[DB] SQL 서브쿼리 Subquery 사용법, 예제 (0) | 2021.10.28 |
---|---|
[DB] SQL JOIN(조인)_INNER, OUTER, SELF, 3중 JOIN (0) | 2021.10.28 |
[DB] SQL 관계형 데이터베이스 RDBMS 의 키(KEY)_기본키(PK), 외래키(FK), 슈퍼키(SK) (0) | 2021.10.28 |
[DB] SQL SELECT문(4)_GROUP BY절(그룹함수), HAVING절 (0) | 2021.10.27 |
[DB] 오라클 SQL 함수 (6) 그룹 함수(다중행 함수)_SUM, AVG, MAX, MIN, COUNT.. (0) | 2021.10.27 |