集合運算SQL語句詳解

集合運算SQL語句詳解

ID:17292816

大小:22.22 KB

頁數(shù):17頁

時間:2018-08-29

集合運算SQL語句詳解_第1頁
集合運算SQL語句詳解_第2頁
集合運算SQL語句詳解_第3頁
集合運算SQL語句詳解_第4頁
集合運算SQL語句詳解_第5頁
資源描述:

《集合運算SQL語句詳解》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、集合運算SQL語句詳解  我們一起總認為新的就是好的,而其實久了我們會發(fā)現(xiàn),基礎(chǔ)比什么都重要。而你做到了精通SQL查詢以及SQL性能優(yōu)化了么?沒有的話還是老老實實的先來學(xué)習(xí)基礎(chǔ)吧。而下面小編就為大家分享下SQL語句的集合運算詳解。  概述  本篇主要是對集合運算中并集、交集、差集運算基礎(chǔ)的總結(jié)?! 〖线\算包含四種:  1.并集運算(兩種)  2.交集運算  3.差集運算  下面是集合運算的思維導(dǎo)圖:  為什么使用集合運算  1.在集合運算中比聯(lián)接查詢和EXISTS/NOTEXISTS更方便?! ≡陂喿x下面的章節(jié)時

2、,我們可以先把環(huán)境準備好,以下的SQL腳本可以幫助大家創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表,插入數(shù)據(jù)。  一、集合運算  1.集合運算  (1)對輸入的兩個集合或多集進行的運算?! ?2)多集:由兩個輸入的查詢生成的可能包含重復(fù)記錄的中間結(jié)果集?! ?3)T-SQL支持三種集合運算:并集(UNION)、交集(INTERSECT)、差集(EXCEPT)  2.語法  集合運算的基本格式:  輸入的查詢1  集合運算符>  輸入的查詢2    3.要求  (1)輸入的查詢不能包含ORDERBY字句;  (2)可以為整個集合運算結(jié)果選擇性

3、地增加一個ORDERBY字句;  (3)每個單獨的查詢可以包含所有邏輯查詢處理階段(處理控制排列順序的ORDERBY字句);  (4)兩個查詢必須包含相同的列數(shù);  (5)相應(yīng)列必須具有兼容的數(shù)據(jù)類型。兼容個的數(shù)據(jù)類型:優(yōu)先級較低的數(shù)據(jù)類型必須能隱式地轉(zhuǎn)換為較高級的數(shù)據(jù)類型。比如輸入的查詢1的第一列為int類型,輸入的查詢2的第一列為float類型,則較低的數(shù)據(jù)類型int類型可以隱式地轉(zhuǎn)換為較高級float類型。如果輸入的查詢1的第一列為char類型,輸入的查詢2的第一列為datetime類型,則會提示轉(zhuǎn)換失?。簭?/p>

4、字符串轉(zhuǎn)換日期和/或時間時,轉(zhuǎn)換失敗;  (6)集合運算結(jié)果中列名由輸入的查詢1決定,如果要為結(jié)果分配結(jié)果列,應(yīng)該在輸入的查詢1中分配相應(yīng)的別名;  (7)集合運算時,對行進行進行比較時,集合運算認為兩個NULL相等;  (8)UNION支持DISTINCT和ALL。不能顯示指定DISTINCT字句,如果不指定ALL,則默認使用DISTINCT;  (9)INTERSET和EXCEPT默認使用DISTINCT,不支持ALL。  二、UNION(并集)集合運算  1.并集的文氏圖  并集:兩個集合的并集是一個包含集合

5、A和B中所有元素的集合。  圖中陰影區(qū)域代表集合A與集合B的并集  ALL集合運算  (1)假設(shè)Query1返回m行,Query2返回n行,則Query1UNIONALLQuery2返回(m+n)行;  (2)UNIONALL不會刪除重復(fù)行,所以它的結(jié)果就是多集,而不是真正的集合;  (3)相同的行在結(jié)果中可能出現(xiàn)多次?! ISTINCT集合運算  (1)假設(shè)Query1返回m行,Query2返回n行,Query1和Query2有相同的h行,則Query1UNIONQuery2返回(m+n-h)行;  (2)UN

6、ION會刪除重復(fù)行,所以它的結(jié)果就是集合;  (3)相同的行在結(jié)果中只出現(xiàn)一次?! ?4)不能顯示指定DISTINCT字句,如果不指定ALL,則默認使用DISTINCT?! ?5)當(dāng)Query1與Query2比較某行記錄是否相等時,會認為取值為NULL的列是相等的列。  三、INTERSECT(交集)集合運算  1.交集的文氏圖  交集:兩個集合(記為集合A和集合B)的交集是由既屬于A,也屬于B的所有元素組成的集合?! D中陰影區(qū)域代表集合A與集合B的交集  DISTINCT集合運算  (1)假設(shè)Query1返回m

7、行,Query2返回n行,Query1和Query2有相同的h行,則Query1INTERSECTQuery2返回h行;  (2)INTERSECT集合運算在邏輯上首先刪除兩個輸入多集中的重復(fù)行(把多集變?yōu)榧?,然后返回只在兩個集合中都出現(xiàn)的行;  (3)INTERSECT會刪除重復(fù)行,所以它的結(jié)果就是集合;  (4)相同的行在結(jié)果中只出現(xiàn)一次?! ?5)不能顯示指定DISTINCT字句,如果不指定ALL,則默認使用DISTINCT?! ?6)當(dāng)Query1與Query2比較某行記錄是否相等時,會認為取值為NUL

8、L的列是相等的列?! ?7)用內(nèi)聯(lián)接或EXISTS謂詞可以代替INTERSECT集合運算,但是必須對NULL進行處理,否則這兩種方法對NULL值進行比較時,比較結(jié)果都是UNKNOWN,這樣的行會被過濾掉?! LL集合運算  (1)ANSISQL支持帶有ALL選項的INTERSECT集合運算,但SQLServerXX現(xiàn)在還沒有實現(xiàn)這種運算。后面會提供一種用于

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。