오라클에서 사용할 수 있는 집합 연산자는 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
'DB > Oracle' 카테고리의 다른 글
| ORDER BY 대신에 INDEX 힌트를 사용하자.. (0) | 2016.02.04 |
|---|---|
| 정기적으로 실행되는 이벤트 처리 쉘 (0) | 2016.02.04 |
| Linux Oracle 설치와 활용(Ⅰ) (0) | 2016.02.04 |
| 펌 오라클 관리 명령어 요약 (0) | 2016.02.04 |
| 오라클 log, trc 등 관리 정책 및 쉘 스크립트 예시 (0) | 2016.02.04 |