union和union all的區別是,union會自動壓縮多個結果集合中的重複結果,而union all則將所有的結果全部顯示出來,不管是不是重複。
Union:對兩個結果集進行並集操作,不包括重複行,同時進行默認規則的排序;
Union All:對兩個結果集進行並集操作,包括重複行,不進行排序;
Intersect:對兩個結果集進行交集操作,不包括重複行,同時進行默認規則的排序;
Minus:對兩個結果集進行差操作,不包括重複行,同時進行默認規則的排序。
可以在最後一個結果集中指定Order by子句改變排序方式。
例子:
在scott用戶下,創建表emp2,該表只包含emp中20部門員工的信息:
代碼:create table emp2 as select * from emp where deptno=20;
先看下emp和emp2兩個表的區別:
[emp表結構及內容]
[emp2表結構及內容]
~ 驗證UNION及UNION ALL
UNION:select * from emp UNION select * from emp2;/*使用此語句,重複的內容不再顯示*/
UNION ALL:select * from emp UNION ALL select * from emp2;/*使用此語句,重複的內容依然顯示*/
~ 驗證INTERSECT
INTERSECT:select * from emp INTERSECT select * from emp2;/*使用此語句,只顯示兩個表中彼此重複的記錄*/
~ 驗證MINUS
MINUS:select * from emp MINUS select * from emp2;/*使用此語句,返回顯示差異的記錄*/