目录

SQL 连接


SQL连接

JOIN子句用于根据两个或多个表之间的相关列来组合来自两个或多个表的行。

让我们看一下 "Orders" 表中的一个选择:

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

然后,查看 "Customers" 表中的选择:

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

请注意,"Orders" 表中的"CustomerID" 列引用"Customers" 表中的"CustomerID"。上面两个表之间的关系是"CustomerID"列。

然后,我们可以创建以下 SQL 语句(其中包含 INNER JOIN),选择两个表中具有匹配值的记录:

示例

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
亲自试一试 »

它会产生这样的结果:

OrderID CustomerName OrderDate
10308 Ana Trujillo Emparedados y helados 9/18/1996
10365 Antonio Moreno Taquería 11/27/1996
10383 Around the Horn 12/16/1996
10355 Around the Horn 11/15/1996
10278 Berglunds snabbköp 8/12/1996


不同类型的 SQL JOIN

以下是 SQL 中 JOIN 的不同类型:

  • (INNER) JOIN:返回两个表中具有匹配值的记录
  • LEFT (OUTER) JOIN:返回左表中的所有记录,以及右表中匹配的记录
  • RIGHT (OUTER) JOIN:返回右表中的所有记录,以及左表中匹配的记录
  • FULL (OUTER) JOIN:当左表或右表中有匹配项时返回所有记录

SQL INNER JOIN  SQL LEFT JOIN  SQL RIGHT JOIN  SQL FULL OUTER JOIN


通过练习测试一下

练习:

将缺失的部分插入JOIN连接两个表的子句OrdersCustomers, 使用CustomerID两个表中的字段作为两个表之间的关系。

SELECT *
FROM Orders
LEFT JOIN Customers
=
;

开始练习