數(shù)據(jù)庫(kù)使用之union、union?all、各種join的用法區(qū)別解析
一、Union 和Union All
1、區(qū)別:
Union去重,而Union All不去重。
2、注意點(diǎn):
1.被合并的每個(gè)SELECT語(yǔ)句的列數(shù)、數(shù)據(jù)類(lèi)型要相同(一一對(duì)應(yīng))。
2.使用Union時(shí),由于可去重性,可能導(dǎo)致數(shù)據(jù)丟失。
3.使用Union All時(shí),由于不可去重性,可能含重復(fù)的記錄。
3、具體舉例
【union】

【union all】

二、Join關(guān)鍵字的區(qū)別
1.left join和inner join區(qū)別

【長(zhǎng)話(huà)短說(shuō)】inner join(內(nèi)連接)得到數(shù)據(jù)更少,直接剔除匹配不到的數(shù)據(jù)(剔除無(wú)關(guān)聯(lián)ID的數(shù)據(jù)),inner join = join。
【例子】如下圖所示,inner join不顯示紅框的數(shù)據(jù),left join會(huì)顯示
SELECT * FROM student s LEFT JOIN score sc on s.id=sc.studentid SELECT * FROM student s INNER JOIN score sc on s.id=sc.studentid

【查詢(xún)匹配失敗的數(shù)據(jù)】
SELECT * FROM student s LEFT JOIN score sc on s.id=sc.studentid WHERE sc.id is null --查詢(xún)從表ID為空的數(shù)據(jù),就是聯(lián)表匹配不到的數(shù)據(jù)
2.聯(lián)表?xiàng)l件寫(xiě)法差異
--聯(lián)表:只要滿(mǎn)足關(guān)聯(lián)關(guān)系,B.IsDeleted是什么則返回什么 SELECT * FROM TABLEA A LEFT JOIN TABLEB B ON A.ID=B.EXID --聯(lián)表不篩選:只要滿(mǎn)足關(guān)聯(lián)關(guān)系,B.IsDeleted≠0 則返回null SELECT * FROM TABLEA A LEFT JOIN TABLEB B ON A.ID=B.EXID AND B.IsDeleted=0 --聯(lián)表且篩選:只要滿(mǎn)足關(guān)聯(lián)關(guān)系,B.IsDeleted≠0 則返回null,假如是null則被where過(guò)濾掉 SELECT * FROM TABLEA A LEFT JOIN TABLEB B ON A.ID=B.EXID WHERE B.IsDeleted=0 --【結(jié)論】數(shù)據(jù)返回多少關(guān)系是:第一種=第二種>第三種 -- 因?yàn)榈诙N是A左聯(lián)篩選后的B表,左外保證A表完整性,和第一種一樣 -- 第三種是連接后再篩選,剔除的數(shù)據(jù)可能包含A表的數(shù)據(jù)
三、Cross Join
計(jì)算所有表的笛卡爾積:

總結(jié)
到此這篇關(guān)于數(shù)據(jù)庫(kù)使用之union、union all、各種join的用法區(qū)別解析的文章就介紹到這了,更多相關(guān)union、union all、join用法區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
清空所有表中的數(shù)據(jù)的存儲(chǔ)過(guò)程
清空所有表中的數(shù)據(jù)的sql語(yǔ)句,需要的朋友可以參考下,利用了存儲(chǔ)過(guò)程。2010-06-06
sql語(yǔ)句查詢(xún)重復(fù)的數(shù)據(jù)(最新推薦)
這篇文章主要介紹了sql語(yǔ)句查詢(xún)重復(fù)的數(shù)據(jù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
sqlserver 中時(shí)間為空的處理小結(jié)
sql server中常常需要使用DateTime類(lèi)型的字段。當(dāng)此類(lèi)型字段值為空時(shí),常常出現(xiàn)各種異常2011-10-10
檢測(cè)SqlServer數(shù)據(jù)庫(kù)是否能連接的小技巧
這篇文章主要介紹了檢測(cè)SqlServer數(shù)據(jù)庫(kù)是否能連接的小技巧,本文使用UDL文件的形式實(shí)現(xiàn)這個(gè)小方法,需要的朋友可以參考下2015-02-02
master數(shù)據(jù)庫(kù)損壞的解決辦法有哪些
由于sqlserver 2008 master數(shù)據(jù)庫(kù)損壞導(dǎo)致sqlserver服務(wù)啟動(dòng)失敗,本文給大家master數(shù)據(jù)庫(kù)損壞的解決辦法,感興趣的朋友一起參考下2015-10-10
SQL語(yǔ)句練習(xí)實(shí)例之四 找出促銷(xiāo)活動(dòng)中銷(xiāo)售額最高的職員
你剛在一家服裝銷(xiāo)售公司中找到了一份工作,此時(shí)經(jīng)理要求你根據(jù)數(shù)據(jù)庫(kù)中的兩張表得到促銷(xiāo)活動(dòng)銷(xiāo)售額最高的銷(xiāo)售員2011-10-10
SqlServer數(shù)據(jù)庫(kù)創(chuàng)建用戶(hù)只賦予某個(gè)視圖權(quán)限
這篇文章主要給大家介紹了關(guān)于SqlServer數(shù)據(jù)庫(kù)創(chuàng)建用戶(hù)只賦予某個(gè)視圖權(quán)限的相關(guān)資料,在SQL Server中,要?jiǎng)?chuàng)建用戶(hù)并為其授權(quán)表可以通過(guò)以下步驟完成,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03

