7.7. UNION [ALL], INTERSECT, MINUS 연산자

2019. 4. 19. 00:11 Database/Oracle SQL

UNION과 UNION ALL의 차이는 정렬작업의 수행 여부이다.

UNION은 중복을 제거해야 하기 때문에 정렬작업을 수행하므로 성능이 저하된다.

UNION, MINUS, INTERSECT는 전체범위를 모두 액세스 하는 정렬작업을 수행하기 때문에 부분범위처리가 불가능하다.

UNION : 합집합

UNION은 두 테이블의 결합을 나타내며, 결합시키는 두 테이블의 중복되지 않은 값들을 반환 한다.

-- 부서번호를 조회하는 UNION 예제.
SELECT deptno FROM emp
 UNION
SELECT deptno FROM dept;
 
 
DEPTNO
--------
      10
      20
      30
      40

UNION ALL : 중복을 포함하는 합집합

UNION과 같으나 두 테이블의 중복되는 값 까지 반환 한다.

-- 부서번호를 조회하는 UNION ALL 예제.
SELECT deptno FROM emp
 UNION ALL
SELECT deptno FROM dept;
 
 
DEPTNO
-------
     20
     30
     30
     20
     30
...
18 개의 행이 선택되었습니다.


INTERSECT : 교집합

INTERSECT는 두 행의 집합중 공통된 행을 반환 한다.

-- 부서번호를 조회하는 INTERSECT 예제.
SELECT deptno FROM emp
INTERSECT
SELECT deptno FROM dept;
 
 
DEPTNO
---------
       10
       20
       30

MINUS : 차집합

MINUS는 첫 번째 SELECT문에 의해 반환되는 행 중에서 두 번째 SELECT문에 의해 반환되는 행에 존재하지 않는 행들을 반환 한다.

-- 사원이 없는 부서를 조회하는 MINUS 예제.
SELECT deptno FROM dept
 MINUS
SELECT deptno FROM emp;
 
 
DEPTNO
---------
       40


출처 : http://www.gurubee.net/lecture/1507

'Database > Oracle SQL' 카테고리의 다른 글

10.2. VIEW 테이블  (0) 2019.04.24
10.1. 인덱스(Index)  (0) 2019.04.24
9.2. 데이터 사전(Data Dictionary) 정보조회  (0) 2019.04.24
9.1. 데이터 사전(Data Dictionary)이란?  (0) 2019.04.24
7.6. Scalar Subquery  (0) 2019.04.19
7.5. Inline View (From절 Subquery)  (0) 2019.04.19
7.4. Multiple-Column Subquery  (0) 2019.04.19
7.3. Multiple-Row Subquery  (0) 2019.04.19