구내식당

Union all에 대한것 본문

IT/SQL

Union all에 대한것

구내식당 2016. 11. 15. 11:59

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

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

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

UNION : 합집합

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

1
2
3
4
5
6
7
8
9
10
11
12
-- 부서번호를 조회하는 UNION 예제.
SELECT deptno FROM emp
 UNION
SELECT deptno FROM dept;
 
 
DEPTNO
--------
      10
      20
      30
      40

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- 부서번호를 조회하는 UNION ALL 예제.
SELECT deptno FROM emp
 UNION ALL
SELECT deptno FROM dept;
 
 
DEPTNO
-------
     20
     30
     30
     20
     30
...
18 개의 행이 선택되었습니다.

INTERSECT : 교집합

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

1
2
3
4
5
6
7
8
9
10
11
-- 부서번호를 조회하는 INTERSECT 예제.
SELECT deptno FROM emp
INTERSECT
SELECT deptno FROM dept;
 
 
DEPTNO
---------
       10
       20
       30

MINUS : 차집합

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

1
2
3
4
5
6
7
8
9
-- 사원이 없는 부서를 조회하는 MINUS 예제.
SELECT deptno FROM dept
 MINUS
SELECT deptno FROM emp;
 
 
DEPTNO
---------
       40

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


'IT > SQL' 카테고리의 다른 글

MS_SQL 문법정리  (0) 2016.11.18
쿼리문 group by 여러컬럼  (0) 2016.11.18
mysql 쿼리 조건문  (0) 2016.11.11
MySQL 쓰면서 하지 말아야 할 것 17가지  (0) 2016.11.07
every derived table must have its own alias  (0) 2016.11.07