程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL的表連接

SQL的表連接

編輯:關於SqlServer

每天給自己掃盲,讓自己變得越博學。

繼續學習《程序員的SQL金典》,這回我們來看看表連接相關的內容。表連接的相關知識在實際的項目開發當中,使用非常廣。

所謂表連接,就是通過關聯多張表,從而檢索出需要的數據。實際的項目,存在多張表的關聯關系。不可能在一張表裡面就能檢索出所有數據。如果沒有表連接的話,那麼我們就需要非常多的操作。比如需要從A表找出限制性的條件來從B表中檢索數據。不但需要分多表來操作,而且效率也不高。比如書中的例子:

SELECT FId

FROM T_Customer

WHERE FName='MIKE'

這個SQL語句返回2,也就是姓名為MIKE 的客戶的FId值為2,這樣就可以到T_Order中檢索FCustomerId等於2 的記錄:

SELECT FNumber,FPrice

FROM T_Order

WHERE FCustomerId=2

下面我們詳細來看看表連接。表連接有多種不同的類型,有交叉連接(CROSS JOIN)、內連接(INNER JOIN)、外連接(OUTTER JOIN)。

(1)內連接(INNER JOIN):內連接組合兩張表,並且只獲取滿足兩表連接條件的數據。

SELECT o.FId,o.FNumber,o.FPrice,

c.FId,c.FName,c .FAge

FROM T_Order o JOIN T_Customer c

ON o.FCustomerId= c.FId

注:在大多數數據庫系統中,INNER JOIN中的INNER是可選的,INNER JOIN 是默認的連接方式。

在使用表連接的時候可以不局限於只連接兩張表,因為有很多情況下需要聯系許多表。例如,T_Order表同時還需要連接T_Customer和T_OrderType兩張表才能檢索到所需要的信息,編寫如下SQL語句即可:

SELECT o.FId,o.FNumber,o.FPrice,

c.FId,c.FName,c .FAge

FROM T_Order o JOIN T_Customer c

ON o.FCustomerId= c.FId

INNER JOIN T_OrderType

ON T_Order.FTypeId= T_OrderType.FId

(2)交叉連接(CROSS JOIN):交叉連接所有涉及的表中的所有記錄都包含在結果集中。可以采用兩種方式來定義交叉連接,分別是隱式和顯式的連接。

下面看看隱式的例子:

SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge,

T_Order.FId, T_Order.FNumber, T_Order.FPrice

FROM T_Customer, T_Order

使用顯式的連接則需要使用CROSS JOIN,例子如下:

SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge,

T_Order.FId, T_Order.FNumber, T_Order.FPrice

FROM T_Customer

CROSS JOIN T_Order

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved