UNION
查詢選修了180101號或180102號課程或二者都選修了的學生學號、課程號和成績。
(SELECT 學號, 課程號, 成績
FROM 學習
WHERE 課程號='180101')
UNION
(SELECT 學號, 課程號, 成績
FROM 學習
WHERE 課程號='180102')
與SELECT子句不同,UNION運算自動去除重復。因此,在本例中,若只輸出學生的學號,則相同的學號只出現一次。如果想保留所有的重復,則必須用UNION ALL代替UNION,且查詢結果中出現的重復元組數等於兩個集合中出現的重復元組數的和。
INTERSECT
查詢同時選修了180101和180102號課程的學生學號、課程號和成績。
(SELECT 學號, 課程號, 成績
FROM 學習
WHERE 課程號='180101')
INTERSECT
(SELECT 學號, 課程號, 成績
FROM 學習
WHERE 課程號='180102')
INTERSECT運算自動去除重復,如果想保留所有的重復,必須用INTERSECT ALL代替INTERSECT,結果中出現的重復元組數等於兩集合出現的重復元組數里較少的那個。
intersect運算 返回查詢結果中相同的部分既他們的交集
minus-(oracle)
返回在第一個查詢結果中與第二個查詢結果不相同的那部分行記錄,
即兩個結果的差集
select * from abc2
minus
select * from abc ;
EXCEPT
查詢選修了180101號課程的學生中沒有選修180102號課程的學生學號、課程號和成績。
(SELECT 學號, 課程號, 成績
FROM 學習
WHERE 課程號='180101')
EXCEPT
(SELECT 學號, 課程號, 成績
FROM 學習
WHERE 課程號='180102')
EXCEPT運算自動去除重復,如果想保留所有的重復,必須用EXCEPT ALL代替EXCEPT,結果中出現的重復元組數等於兩集合出現的重復元組數之差(前提是差是正值)。
在不支持INTERSECT和EXCEPT運算的DBMS中,必須使用其它方法實現,其中,嵌套查詢是十分有效的一種方法。
