Oracle SQL 강좌
UNION [ALL], INTERSECT, MINUS 연산자 19 9 99,999+

by 김정식 집합 쿼리 UNION UNION ALL INTERSECT MINUS [2002.08.30]


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

참고링크

- 강좌 URL : http://www.gurubee.net/lecture/1507

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by smile [2005.11.09 20:29:51]
퍼갑니다. ^^

by 시근땀 [2006.03.20 15:46:50]
핫핫핫. 이렇게 한번에 이해할 수 있었던 구문은 처음이었던 것 같아요.
학교다닐 때 집합 공부를 많이 해서 그런가??
일반수학의정석에서 집합만 너덜너덜하게 봤어요. ㅠㅠ

by 식후?? [2007.05.10 11:31:55]
너덜너덜.

by 어익후 [2007.05.23 16:31:34]
GPOP!!
UnderStand?

by BULGO [2007.08.06 10:56:10]
너무 정리가 잘 되어 있어..욕심이...크크크....퍼갑니다....
BLOG.NAVER.COM/BULGO77

by 핫도리한조 [2007.11.01 16:00:49]
minus 에서는 비교테이블의 컬럼타입이 clob일경우에는 타입이 일치하지않는다고 에러가뜨네요 왜그럴까요?

by leeyang [2009.04.08 17:41:30]
clob 형식을 varchar2 형석으로 변환..
dbms_lob.substr( B.DS_VOC, 4000, 1 )

by 정존 [2013.07.12 13:20:59]
감사합니다.

by 박군 [2013.12.31 18:25:20]

아.... 좋다..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입