如何在MySQL中使用外连接?

MySQL中的外连接用于查询两个表中的数据,包括那些在相关表中没有关联行的行。它分为左外连接、右外连接和全外连接三种。
左外连接(LEFT JOIN):返回左表所有行,如果右表有匹配行则显示,无匹配行则显示NULL。

sql
SELECT * 
FROM table1 LEFT JOIN table2 
ON table1.col = table2.col;

右外连接(RIGHT JOIN):返回右表所有行,如果左表有匹配行则显示,无匹配行则显示NULL。

sql
SELECT *
FROM table1 RIGHT JOIN table2  
ON table1.col = table2.col;

全外连接(FULL OUTER JOIN):返回左右表所有行,无关联行也显示,使用NULL填充。

sql 
SELECT *
FROM table1 FULL OUTER JOIN table2  
ON table1.col = table2.col;

例1:左外连接

sql
CREATE TABLE customers ( 
    id INT, 
    name VARCHAR(20) 
); 

CREATE TABLE orders (
    id INT, 
    customer_id INT,
    amount DECIMAL(8,2)
);  

INSERT INTO customers VALUES(1, 'John'), (2, 'Emma'), (3, 'Brad');
INSERT INTO orders VALUES(1, 1, 100), (2, 3, 200);  

SELECT * 
FROM customers LEFT JOIN orders
ON customers.id = orders.customer_id;  

结果:

id  name customer_id  amount
1   John        1       100
2   Emma       NULL     NULL  
3   Brad        3       200 

Emma没有下订单,所以在orders表中对应行为NULL。

外连接的主要作用是查询两个表的全部数据,包括那些未关联的数据,它实现了一种包含未匹配行的连接。