在機房收費系統個人重構的時候,很多的功能都需要根據資料庫中的一個表中的資訊,去查詢另一個表中相比對的資訊,我們用到了視圖,但是你有沒有注意到下面的sql語句呢?(select...from...join...on...),接下來我們就一起來了解sql中的join.
join是關系型資料庫系統的重要操作之一,sql server中包含的常用join:内聯接、外聯接和交叉聯接等,join用于根據兩個或者多個表中的列之間的關系,從這些表中查詢資料。
建立兩張表作為例子,表如下
sql語句
結果如下
運作的結果是得到兩個表之間的交集。用右邊的圖可以看出,inner join符合交換律:“a inner join b”,“b inner join a”一樣。
sql語句
運作結果
left:
運作的結果:産生表a的完全集,而b表中比對的則有值,沒有比對的則以null值取代。
right:
從運作的結果一眼就可以看出來,該聯接産生表b的完全集,而a表中比對的則有值,沒有比對的則以null值取代。
運作結果:
由結果可知:該聯接産生a和b的并集。但是需要注意的是,對于沒有比對的記錄,則會以null做為值。
sql語句
由運作結果可知:交叉聯接運作的結果就是咱們在資料庫系統原理中學的笛卡爾積(cartesian product),産生一個6*6=36行記錄的結果集。
本文章所講的聯接語句都是将不同表的列進行縱向拼接,因為在做機房收費系統個人重構的時候,隻涉及到縱向拼接表的查詢,有縱向,那麼肯定也有橫向,橫向拼接也有多種方式:not
in,union和intersect,這裡隻做簡單介紹,not in是去兩個結果集的差集。union是兩個集合的并集,會自動删除重複的記錄,也可以用union all來保留所有記錄行。intersect是兩個集合的交集,即同時存在于兩個集合中的記錄。
如果有什麼不妥的地方,歡迎各位博友斧正!!!