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是表結構,其中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,由此可以看出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,我們可以明顯的看出MINUS的特點,圖7減去圖8等于圖6,可以看到的是科目C003被去掉了,只保留了科目C001和C002的最大值,MINUS的特點就是把相同的數據去掉只保留第一個查詢的數據,而第二個查詢的數據不管有沒有重復都不要。
上面我們說到SET 運算符是加減法,由示例一、二、三,我們可以看到的是UNION和UNION ALL都是加法,只不過是UNION只保留一條相同的數據,UNION ALL保留兩條或多條相同的數據,而INTERSECT和MINUS是減法,INTERSECT則是減去不同的數據,且只保留一條相同的數據,而MINUS則是把數據一的數據減去和數據二相同的數據,保留和數據二不同的數據,不保留數據二的任何數據。
總結
以上是生活随笔為你收集整理的ORACLE SQL SET运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快手2021服饰品类洞察报告
- 下一篇: 2021年中国独角兽企业发展研究报告