SQL Join連接

2022-05-20 16:13 更新

SQL 連接(Joins)


 SQL join 用于把來自兩個(gè)或多個(gè)表的行結(jié)合起來。


SQL JOIN


 SQL JOIN 子句用于把來自兩個(gè)或多個(gè)表的行結(jié)合起來,基于這些表之間的共同字段。

 簡(jiǎn)單地說,就是先確定一個(gè)主表作為結(jié)果集,然后,把其他表的行有選擇性地“連接”在主表結(jié)果集上。

 最常見的 JOIN 類型:SQL INNER JOIN(簡(jiǎn)單的 JOIN)。 SQL INNER JOIN 從多個(gè)表中返回滿足 JOIN 條件的所有行。

 讓我們看看選自 "Orders" 表的數(shù)據(jù):

OrderID CustomerID OrderDate
10308 2 1996-09-18
10309 37 1996-09-19
10310 77 1996-09-20

 然后,看看選自 "Customers" 表的數(shù)據(jù):

CustomerID CustomerName ContactName Country
1 Alfreds Futterkiste Maria Anders Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Mexico
3 Antonio Moreno Taquería Antonio Moreno Mexico

 請(qǐng)注意,"Orders" 表中的 "CustomerID" 列指向 "Customers" 表中的客戶。上面這兩個(gè)表是通過 "CustomerID" 列聯(lián)系起來的。

 然后,如果我們運(yùn)行下面的 SQL 語句(包含 INNER JOIN):

實(shí)例

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;

 運(yùn)行結(jié)果如下所示:

OrderID CustomerName OrderDate
10308 Ana Trujillo Emparedados y helados 1996-09-18

不同的 SQL JOIN


 在我們繼續(xù)講解實(shí)例之前,我們先列出您可以使用的不同的 SQL JOIN 類型:

  • INNER JOIN:如果表中有至少一個(gè)匹配,則返回行
  • LEFT JOIN:即使右表中沒有匹配,也從左表返回所有的行
  • RIGHT JOIN:即使左表中沒有匹配,也從右表返回所有的行
  • FULL JOIN:只要其中一個(gè)表中存在匹配,則返回行
  • SELF JOIN:用于將表連接到自己,就好像該表是兩個(gè)表一樣,臨時(shí)重命名了SQL語句中的至少一個(gè)表
  • CARTESIAN JOIN:從兩個(gè)或多個(gè)連接表返回記錄集的笛卡兒積 


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)