集合操作有 並,交,差 3種運算。 union :得到兩個查詢結果的並集,並且自動去掉重複行。不會排序 union all:得到兩個查詢結果的並集,不會去掉重複行。也不會排序 intersect:得到兩個查詢結果的交集,並且按照結果集的第一個列進行排序 minus:得到兩個查詢結果的減集,以第一列進行排序 例子: 下面是兩個表:一個主修課程表,一個選修課程表。 這個是主修課程表:minors create table minors( minor_id number primary key, minor_name varchar2(30) not null, credit_hour number(2) ) 插入3條記錄: insert into minors values(10101,'電腦原理',4) insert into minors values(10201,'自動控制原理',3) insert into minors values(10301,'工程製圖原理',4) 下面建立選修課程表minors2 create table minors2( minor_id number primary key, minor_name varchar2(30) not null, credit_hour number(2) ) 插入兩條記錄: insert into minors2 values(10201,'自動控制原理',3) insert into minors2 values(10301,'工程製圖原理',4) (1)兩個表使用union all:得到如下結果 select minor_id,minor_name,credit_hour from minors union all select minor_id,minor_name,credit_hour from minors2 order by credit_hour 結果: MINOR_ID MINOR_NAME CREDIT_HOUR ---------- ------------------------------ ----------- 10201 自動控制原理 3 10201 自動控制原理 3 10101 電腦原理 4 10301 工程製圖原理 4 10301 工程製圖原理 4 (2)兩個表使用union :得到如下結果 select minor_id,minor_name,credit_hour from minors union select minor_id,minor_name,credit_hour from minors2 order by credit_hour 結果: MINOR_ID MINOR_NAME CREDIT_HOUR ---------- ------------------------------ ----------- 10201 自動控制原理 3 10101 電腦原理 4 10301 工程製圖原理 4 (3)兩個表使用intersect :得到如下結果 select minor_id,minor_name,credit_hour from minors intersect select minor_id,minor_name,credit_hour from minors2 結果: MINOR_ID MINOR_NAME CREDIT_HOUR ---------- ------------------------------ ----------- 10201 自動控制原理 3 10301 工程製圖原理 4 (4)兩個表使用minus :得到如下結果 select minor_id,minor_name,credit_hour from minors minus select minor_id,minor_name,credit_hour from minors2 結果: MINOR_ID MINOR_NAME CREDIT_HOUR ---------- ------------------------------ ----------- 10101 電腦原理 4
來自:http://www.douban.com/note/154030850/