集合操作有 並,交,差 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