數(shù)據(jù)庫使用之union、union?all、各種join的用法區(qū)別解析
一、Union 和Union All
1、區(qū)別:
Union去重,而Union All不去重。
2、注意點:
1.被合并的每個SELECT語句的列數(shù)、數(shù)據(jù)類型要相同(一一對應(yīng))。
2.使用Union時,由于可去重性,可能導(dǎo)致數(shù)據(jù)丟失。
3.使用Union All時,由于不可去重性,可能含重復(fù)的記錄。
3、具體舉例
【union】
【union all】
二、Join關(guān)鍵字的區(qū)別
1.left join和inner join區(qū)別
【長話短說】inner join(內(nèi)連接)得到數(shù)據(jù)更少,直接剔除匹配不到的數(shù)據(jù)(剔除無關(guān)聯(lián)ID的數(shù)據(jù)),inner join = join。
【例子】如下圖所示,inner join不顯示紅框的數(shù)據(jù),left join會顯示
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
【查詢匹配失敗的數(shù)據(jù)】
SELECT * FROM student s LEFT JOIN score sc on s.id=sc.studentid WHERE sc.id is null --查詢從表ID為空的數(shù)據(jù),就是聯(lián)表匹配不到的數(shù)據(jù)
2.聯(lián)表條件寫法差異
--聯(lián)表:只要滿足關(guān)聯(lián)關(guān)系,B.IsDeleted是什么則返回什么 SELECT * FROM TABLEA A LEFT JOIN TABLEB B ON A.ID=B.EXID --聯(liá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)表且篩選:只要滿足關(guān)聯(lián)關(guān)系,B.IsDeleted≠0 則返回null,假如是null則被where過濾掉 SELECT * FROM TABLEA A LEFT JOIN TABLEB B ON A.ID=B.EXID WHERE B.IsDeleted=0 --【結(jié)論】數(shù)據(jù)返回多少關(guān)系是:第一種=第二種>第三種 -- 因為第二種是A左聯(lián)篩選后的B表,左外保證A表完整性,和第一種一樣 -- 第三種是連接后再篩選,剔除的數(shù)據(jù)可能包含A表的數(shù)據(jù)
三、Cross Join
計算所有表的笛卡爾積:
總結(jié)
到此這篇關(guān)于數(shù)據(jù)庫使用之union、union all、各種join的用法區(qū)別解析的文章就介紹到這了,更多相關(guān)union、union all、join用法區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Sql數(shù)據(jù)庫中去掉字段的所有空格小結(jié)篇
這篇文章主要介紹了Sql數(shù)據(jù)庫中去掉字段的所有空格小結(jié)篇,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05關(guān)于SQL中CTE(公用表表達(dá)式)(Common Table Expression)的總結(jié)
WITH AS短語,也叫做子查詢部分(subquery factoring),可以讓你做很多事情,定義一個SQL片斷,該SQL片斷會被整個SQL語句所用到2012-08-08MsSQL數(shù)據(jù)庫基礎(chǔ)與庫的基本操作方法
文章主要介紹了數(shù)據(jù)庫的基礎(chǔ)知識,包括數(shù)據(jù)庫的定義、主流數(shù)據(jù)庫系統(tǒng)(如MySQL、PostgreSQL等)、數(shù)據(jù)庫操作(如創(chuàng)建、修改、刪除數(shù)據(jù)庫,備份和恢復(fù)等)以及查看連接情況,感興趣的朋友一起看看吧2025-02-02SQL SERVER 中構(gòu)建執(zhí)行動態(tài)SQL語句的方法
這篇文章主要介紹了SQL SERVER 中構(gòu)建執(zhí)行動態(tài)SQL語句的方法,需要的朋友可以參考下2017-06-06SQL Server誤區(qū)30日談 第15天 CheckPoint只會將已提交的事務(wù)寫入磁盤
這個誤區(qū)是由于太多人對日志和恢復(fù)系統(tǒng)缺少全面的了解而存在已久。CheckPoint會將自上次CheckPoint以來所有在內(nèi)存中改變的頁寫回磁盤(譯者注:也就是臟頁),或是在上一個CheckPoint讀入內(nèi)存的臟頁寫入磁盤2013-01-01