日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

ORACLE SQL SET运算符

發布時間:2025/3/15 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORACLE SQL SET运算符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

**

ORACLE SQL SET運算符

**

開發工具與關鍵技術:Oracle sql*plus PLSQL Developer 作者:何任賢 撰寫時間:2019年01月01日

SET運算符,主要是對兩個查詢或多個查詢的結果進行運算,不過只有加減,意思是能把結果進行加減,不過該加減不是數字的加減而是集的加減。
SET運算符四大關鍵字(UNION 、 UNION ALL、INTERSECT、MINUS),意思分別是并集
(去重復)、并集(不去重復)、交集、差集。
注意事項:使用SET運算符時,要保證兩個查詢或多個查詢數據數據類型一致,列數一致,但必須保證列數和數據類型一致,若列名不一致則默認為第一個查詢的列名。
1、 UNION,合并數據并且把重復的數據去掉
2、 UNION ALL, 只合并數據不會把重復的數據去掉
可以理解為UNION只是比UNION ALL多了一個去重復,具體如示例一
示例一:

圖1 圖2

圖1是表數據 、圖2是表結構,其中SNO代表學號、CNO代表科目號、SCORE代表成績。

題目:獲取每個科目成績的最小值和每個科目成績的最大值,并且要求把成績的最大值和成績的最小值合并,然后再列出科目號、成績。

代碼1:
SELECT CNO,MAX(SCORE) as SCORE FROM SC GROUP BY CNO
UNION
SELECT CNO,MIN(SCORE) as SCORE FROM SC GROUP BY CNO
代碼2:
SELECT CNO,MAX(SCORE) as SCORE FROM SC GROUP BY CNO
UNION ALL
SELECT CNO,MIN(SCORE) as SCORE FROM SC GROUP BY CNO

圖3 圖4

代碼一的結果為圖3 ,代碼二的結果為圖4,由此可以看出UNION和UNION ALL區別,明顯的可以看到UNION不僅會把數據合并,并且會把重復的數據去掉,只保留重復數據中的其中一條,而UNION ALL只是合并數據不并會把數據進行任何的改動。
這就是UNION和UNION ALL的特點,我們可以根據自己的需求來應用。

3、 INTERSECT,獲取兩個查詢或多個查詢的數據的相同的數據,意思是保留相同的數據不同的去掉,且只保留一條相同的。
示例二:
圖1是表數據 、圖2是表結構,其中SNO代表學號、CNO代表科目號、SCORE代表成績。

題目:獲取每個科目成績的最小值和每個科目成績的最大值,并且要求把它們之間相同的數據保留出來,然后再列出科目號、成績。

代碼:
SELECT CNO,MAX(SCORE) as SCORE FROM SC GROUP BY CNO
INTERSECT
SELECT CNO,MIN(SCORE) as SCORE FROM SC GROUP BY CNO
結果為圖5

圖5
從結果可以看到INTERSECT的特點,它代表交集,它是把相同的部分保留一份出來,不同的全部去掉,該特點跟數學的交集非常相似。

4、 MINUS,差集,意思是集合一減去集合二所剩下的數據,叫做差集,差是被減數-減數=差,集是集合的意思。
示例三:
圖1是表數據 、圖2是表結構,其中SNO代表學號、CNO代表科目號、SCORE代表成績。

題目:獲取每個科目成績的最小值和每個科目成績的最大值,并且要求將最大值的數據減去最小值的數據,然后再列出科目號、成績。
代碼:
SELECT CNO,MAX(SCORE) as SCORE FROM SC GROUP BY CNO
MINUS
SELECT CNO,MIN(SCORE) as SCORE FROM SC GROUP BY CNO

結果為圖6、最大值的數據為圖7、最小值數據為圖8

圖6 圖7 圖8

由圖6、圖7、圖8,我們可以明顯的看出MINUS的特點,圖7減去圖8等于圖6,可以看到的是科目C003被去掉了,只保留了科目C001和C002的最大值,MINUS的特點就是把相同的數據去掉只保留第一個查詢的數據,而第二個查詢的數據不管有沒有重復都不要。
上面我們說到SET 運算符是加減法,由示例一、二、三,我們可以看到的是UNION和UNION ALL都是加法,只不過是UNION只保留一條相同的數據,UNION ALL保留兩條或多條相同的數據,而INTERSECT和MINUS是減法,INTERSECT則是減去不同的數據,且只保留一條相同的數據,而MINUS則是把數據一的數據減去和數據二相同的數據,保留和數據二不同的數據,不保留數據二的任何數據。

總結

以上是生活随笔為你收集整理的ORACLE SQL SET运算符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。