天天看點

SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語

    在機房收費系統個人重構的時候,很多的功能都需要根據資料庫中的一個表中的資訊,去查詢另一個表中相比對的資訊,我們用到了視圖,但是你有沒有注意到下面的sql語句呢?(select...from...join...on...),接下來我們就一起來了解sql中的join.

SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語

   join是關系型資料庫系統的重要操作之一,sql server中包含的常用join:内聯接、外聯接和交叉聯接等,join用于根據兩個或者多個表中的列之間的關系,從這些表中查詢資料。

SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語

 建立兩張表作為例子,表如下

SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語
SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語

  sql語句

結果如下

SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語
SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語

  運作的結果是得到兩個表之間的交集。用右邊的圖可以看出,inner join符合交換律:“a inner join b”,“b inner join a”一樣。

   sql語句

運作結果

  left:

SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語
SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語

  運作的結果:産生表a的完全集,而b表中比對的則有值,沒有比對的則以null值取代。

  right:

SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語

  從運作的結果一眼就可以看出來,該聯接産生表b的完全集,而a表中比對的則有值,沒有比對的則以null值取代。

運作結果:

SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語
SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語

 由結果可知:該聯接産生a和b的并集。但是需要注意的是,對于沒有比對的記錄,則會以null做為值。

 sql語句

SQL JOIN1、什麼是JOIN?2、怎麼使用JOIN?3、結束語

 由運作結果可知:交叉聯接運作的結果就是咱們在資料庫系統原理中學的笛卡爾積(cartesian product),産生一個6*6=36行記錄的結果集。

 本文章所講的聯接語句都是将不同表的列進行縱向拼接,因為在做機房收費系統個人重構的時候,隻涉及到縱向拼接表的查詢,有縱向,那麼肯定也有橫向,橫向拼接也有多種方式:not

in,union和intersect,這裡隻做簡單介紹,not in是去兩個結果集的差集。union是兩個集合的并集,會自動删除重複的記錄,也可以用union all來保留所有記錄行。intersect是兩個集合的交集,即同時存在于兩個集合中的記錄。

 如果有什麼不妥的地方,歡迎各位博友斧正!!!