본문 바로가기
DataBase

집합 연산자(UNION, UNION ALL, INTERSECT, MINUS) 사용 예제

by eqzero 2006. 5. 16.

오라클에서 사용할 수 있는 집합 연산자는 union, union all, intersect,minus 가 있다.

 아래의 table은 예제에서 사용될 테이블이다.

SQL> select * from dept_a;

    DEPTNO DNAME          LOC
---------- -------------- -------------
     10 ACCOUNTING     NEW YORK
     20 RESEARCH       DALLAS
     30 SALES          CHICAGO
     40 OPERATIONS     BOSTON
     50 RND            SEOUL

SQL> select * from dept_b;

    DEPTNO DNAME          LOC
---------- -------------- -------------
     20 RESEARCH       DALLAS
     30 SALES          CHICAGO
     60 FNA            SEOUL


1. UNION Operator

   union은  두 테이블의 자료를 하나의 결과로 가져올 때,  중복된 row가 있을 경우 하나의 row만을 return한다.. select 문 절에 사용하는 distinct 와 같은 효과로 생각할 수 있다.

SQL> select deptno, dname from dept_a
2  union
3  select deptno, dname from dept_b;

    DEPTNO DNAME
---------- --------------
     10 ACCOUNTING
     20 RESEARCH
     30 SALES
     40 OPERATIONS
     50 RND
     60 FNA

6 rows selected.

 

2. UNION ALL Operator

  union all 은  union이 distinct 를 사용할 때와 달리 중복된 결과를 모두 return한다.  즉, 결과로 나오는 모든 row를 보여주게 된다.

SQL> select deptno, dname from dept_a
2  union all
3  select deptno, dname from dept_b;

    DEPTNO DNAME
---------- --------------
     10 ACCOUNTING
     20 RESEARCH
     30 SALES
     40 OPERATIONS
     50 RND
     20 RESEARCH
     30 SALES
     60 FNA

8 rows selected. 

 


3. INTERSECT Operator

intersect 는 두 테이블의 결과중에 겹치는 row만을 return한다.즉, 교집합된 결과로 생각할 수 있다.

SQL> select deptno, dname from dept_a
2  intersect
3  select deptno, dname from dept_b;

    DEPTNO DNAME
---------- --------------
     20 RESEARCH
     30 SALES

 

4.  MINUS Operator

  minus operator는 첫번째 테이블에서 두번째 테이블의 데이터를 제외한 나머지 row만 return한다.

SQL> select deptno, dname from dept_a
2  minus
3  select deptno, dname from dept_b;

    DEPTNO DNAME
---------- --------------
     10 ACCOUNTING  
     40 OPERATIONS  
     50 RND