집합 연산자(UNION, UNION ALL, INTERSECT, MINUS) 사용 예제
오라클에서 사용할 수 있는 집합 연산자는 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