ORACLE

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

 

about author

PHRASE

Level 60  머나먼나라

미운 벌레(가) 모로 긴다 , 미운 사람의 행동은 무엇이든 다 비위에 거슬린다는 말.

댓글 ( 4)

댓글 남기기

작성

ORACLE 목록    more