天天看點

你真的會玩SQL嗎?内連接配接、外連接配接

大多數人一般寫多表查詢會這樣寫select * from tbA ,tbB  沒有用到JOIN關鍵字,太Low了,官網标準建議是用JOIN明确表間的關系,下面具體來講。

連接配接類型:

交叉聯接 得到所連接配接表的所有組合 (笛卡兒集)cross join

内聯接得到連接配接表的滿足條件的記錄組合inner join  on

外聯接(左、右)得到一個表的所有行,及其餘表滿 足連接配接條件的行 full | left | right  outer join  on

     交叉聯接  

  在這類聯接的結果集内,兩個表中每兩個可能成對的行占一行。

    但是如果在交叉聯接中加入where 子句就相當與是内聯接

    例:

這就相當于我們一最開始的寫法:SELECT title, pub_name  FROM titles , publishers Where titles.pub_id = publishers.pub_id

執行過程:

你真的會玩SQL嗎?内連接配接、外連接配接

       内聯接  

僅顯示兩個聯接表中的比對行的聯接。(這是查詢設計器中的預設聯接類型。)

例:

   執行過程:

你真的會玩SQL嗎?内連接配接、外連接配接

     左向外聯接  

包括第一個命名表("左"表,出現在 JOIN 子句的最左邊)中的所有行。不包括右表中的不比對行。

右向外聯接  

包括第二個命名表("右"表,出現在 JOIN 子句的最右邊)中的所有行。不包括左表中的不比對行。

 執行過程:

你真的會玩SQL嗎?内連接配接、外連接配接

完整外部聯接  

包括所有聯接表中的所有行,不論它們是否比對。

練習:

此後用到的用例資料庫是SQL2008裡面的

參考SQL:

你真的會玩SQL嗎?内連接配接、外連接配接
你真的會玩SQL嗎?内連接配接、外連接配接

View Code

你真的會玩SQL嗎?内連接配接、外連接配接
你真的會玩SQL嗎?内連接配接、外連接配接