SQL Server中的連接查詢(內連接、外連接、交叉連接)


       在數據庫查詢中,經常會用到兩個有關聯的表進行查詢,需要把兩個表中的數據按照某些條件查出來,這時就可以使用連接查詢

       連接查詢分為三種:內連接、外連接和交叉連接

  1. 內連接

       內連接inner join ,和join是一個東西,join是inner join的簡寫。 例如: select * from TestA a inner join TestB b on a.id = b.aId

       內連接是返回被連接表(a表和b表)中所有的列,包括重復列

       在實際使用中,可能連接查詢會應用在a表與b表的數據關系是一對多(比如一個學生可以選擇好多門課),b表對a表是一對一這樣的關系查詢中,此時,查詢結果的行數是一對一那張表(b表)中符合查詢條件的行數

  2. 外連接

       外連接分為: 左(外)連接、右(外)連接、全連接

       左(外)連接 left (outer) join,左連接是以左邊表為主表,右邊表為輔表,返回左表中的所有行,如果左表中的行在右表中沒有匹配行,那么結果中右表的列返回空值。如果左表和右表的數據關系是一對多的關系,那么查詢結果中,左表可能會有重復數據。

       右(外)連接 right (outer) join,右外連接和左外連接正好相反,右外連接是以右表為主表,左表為輔表,會返回右表中的所有行,如果右表中的行在左表中沒有匹配行,那么結果中左表的列返回空值。如果右表與左表是一對多關系,那么查詢結果中,右表可能有重復數據。

       全連接 full join,全連接就是把左表和右表的數據全部都查詢出來,如果左表的行在右表中沒有匹配行,那么結果中右表的列返回空值,如果右表的行在左表中沒有匹配行,那么結果中左表中的列返回空值。

  3. 交叉連接

      交叉連接 cross join,使用交叉連接時,如果不帶where條件,那么查詢結果返回的就是著名的笛卡爾積,也就是左表中的每一條數據都會逐條與右表中每一條數據進行匹配,查詢結果返回的行數是左表行數與右表行數的乘積。

     帶where條件時,返回的就是符合條件的行數

 

     總結:

     左連接:以左表為主,左邊表的數據肯定會完整展示(可能會有重復),右表沒對應的就是null;

     右連接:以右表為主,右表數據肯定會完整展示(可能會有重復),左表沒對應的就是null;

     全連接:兩個表的數據都會完整展示(也可能會有重復數據);

     交叉連接:不帶where條件時查詢結果就是笛卡爾積


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM