在 SQL 中,外连接(OUTER JOIN)是一种用于联结多个表的操作,它会返回符合联结条件的行,并且如果某个表中没有满足条件的匹配行,则使用 NULL 值填充。外连接包括左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。接下来,我将为你介绍这三种外连接的使用方法和示例。
-
左外连接(LEFT OUTER JOIN):
左外连接返回左表的所有行以及与其关联的右表中的匹配行,如果右表中没有匹配行,则用 NULL 值填充。语法如下:SELECT 列列表 FROM 表1 LEFT OUTER JOIN 表2 ON 关联条件;
示例:
假设我们有两个表:
Customers
和Orders
,它们包含以下数据:Table: Customers
CustomerID CustomerName 1 Alice 2 Bob 3 Charlie Table: Orders
OrderID CustomerID Product 1 1 ProductA 2 1 ProductB 3 2 ProductC 4 3 ProductD 5 3 ProductE 使用左外连接查询:
SELECT Orders.OrderID, Customers.CustomerName, Orders.Product FROM Customers LEFT OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
查询结果如下:
OrderID CustomerName Product 1 Alice ProductA 2 Alice ProductB 3 Bob ProductC 4 Charlie ProductD 5 Charlie ProductE NULL NULL NULL 通过左外连接,我们将所有的顾客信息与订单信息关联起来,并返回了包含订单详细信息和对应顾客名称的结果。而没有匹配到的订单则显示为 NULL。
-
右外连接(RIGHT OUTER JOIN):
右外连接返回右表的所有行以及与其关联的左表中的匹配行,如果左表中没有匹配行,则用 NULL 值填充。语法如下:SELECT 列列表 FROM 表1 RIGHT OUTER JOIN 表2 ON 关联条件;
示例:
使用右外连接查询:
SELECT Orders.OrderID, Customers.CustomerName, Orders.Product FROM Customers RIGHT OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
查询结果如下:
OrderID CustomerName Product 1 Alice ProductA 2 Alice ProductB 3 Bob ProductC 4 Charlie ProductD 5 Charlie ProductE NULL NULL NULL 通过右外连接,我们将所有的订单信息与顾客信息关联起来,并返回了包含订单详细信息和对应顾客名称的结果。而没有匹配到的顾客则显示为 NULL。
-
全外连接(FULL OUTER JOIN):
全外连接返回左表和右表中的所有行,并使用 NULL 值填充没有匹配行的一侧。语法如下:SELECT 列列表 FROM 表1 FULL OUTER JOIN 表2 ON 关联条件;
示例:
使用全外连接查询:
SELECT Orders.OrderID, Customers.CustomerName, Orders.Product FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
查询结果如下:
OrderID CustomerName Product 1 Alice ProductA 2 Alice ProductB 3 Bob ProductC 4 Charlie ProductD 5 Charlie ProductE NULL NULL NULL 通过全外连接,我们将左表和右表的所有行都关联起来,并返回了包含订单详细信息和对应顾客名称的结果。没有匹配到的行显示为 NULL。