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