一、集合運算操作符
UNION:(并集)傳回兩個集合去掉重複值的所有的記錄
UNION ALL:(并集)傳回兩個集合去掉重複值的所有的記錄
INTERSECT:(交集)傳回兩個集合的所有記錄,重複的隻取一次
MINUS:(差集)傳回屬于第一個集合,但不屬于第二個集合的所有
記錄
集合運算中各個集合必須有相同的列數,且類型一緻,集合運算的結
果将采用第一個集合的表頭作為最終的表頭,order by必須放在每個
集合後
二、集合運算
使用UNION操作符查詢scott表中10部門和20部門的員工資訊
Sql代碼
SQL> select * from emp
2 where deptno=10
3 union
4 select * from emp
5 where deptno=20;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 880 20
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已選擇8行。
使用UNION操作符統計scott使用者下emp表中得各個部門的總工資,
和各部門各職位的工資
Sql代碼
SQL> break on deptno skip 2;
SQL> select deptno,job,sum(sal) from emp group by deptno,job
2 union
3 select deptno,to_char(null),sum(sal) from emp group by deptno
4 union
5 select to_number(null),to_char(null),sum(sal) from emp;
DEPTNO JOB SUM(SAL)
---------- --------- ----------
10 CLERK 1300
MANAGER 2450
PRESIDENT 5000
8750
20 ANALYST 6000
CLERK 1980
MANAGER 2975
10955
30 CLERK 950
MANAGER 2850
SALESMAN 5600
9400
29105
已選擇13行。
使用UNION ALL操作符查詢scott使用者下dept表中的資訊
Sql代碼
SQL> select * from dept
2 union all
3 select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
已選擇8行。
使用INTERSECT操作符查詢scott使用者下dept表和emp表中都存在的
部門号
Sql代碼
SQL> select deptno from emp
2 intersect
3 select deptno from dept;
DEPTNO
----------
10
20
30
使用MINUS操作符查詢scott使用者下dept表中存在而emp表中
不存在的部門号
Sql代碼
SQL> select deptno from dept
2 minus
3 select deptno from emp;
DEPTNO
----------
40
使用MINUS操作符查詢scott使用者下emp表中的員工工資屬于
(1200-2000)這個檔,而不屬于(1400-3000)這個檔的員工
Sql代碼
SQL> select empno,ename,job,sal
2 from emp
3 where sal between 1200 and 2000
4 minus
5 select empno,ename,job,sal
6 from emp
7 where sal between 1400 and 3000;
EMPNO ENAME JOB SAL
---------- ---------- --------- ----------
7521 WARD SALESMAN 1250
7654 MARTIN SALESMAN 1250
7934 MILLER CLERK 1300
原文:http://www.cnblogs.com/tian830937/p/4641089.html