MySQL中的表连接是将多个表中的数据进行关联,生成新的结果集的过程。常见的表连接有四种类型:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)。下面分别进行讲解和示例。
内连接(INNER JOIN)
内连接是指只返回两个表中互相匹配的数据。内连接中有两个常见的语法格式:使用 ON 关键字和使用 WHERE 关键字。其中 ON 和 WHERE 都是设置连接条件的关键字。
语法格式:
SELECT *
FROM 表1
INNER JOIN 表2
ON 连接条件;
示例:
-- 创建表格t1和t2并插入数据
CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR(20));
CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, age INT);
INSERT INTO t1 VALUES (1, 'A'), (2, 'B'), (3, 'C'), (4, 'D');
INSERT INTO t2 VALUES (1, 1, 20), (2, 2, 25), (3, 3, 30), (4, 4, 35);
-- 内连接查询t1和t2中id相同的数据
SELECT *
FROM t1
INNER JOIN t2
ON t1.id = t2.t1_id;
左连接(LEFT JOIN)
左连接是指返回左表中所有数据以及右表中和左表匹配的数据。如果右表中没有和左表匹配的数据,则返回 NULL。
语法格式:
SELECT *
FROM 表1
LEFT JOIN 表2
ON 连接条件;
示例:
-- 左连接查询t1和t2中所有数据
SELECT *
FROM t1
LEFT JOIN t2
ON t1.id = t2.t1_id;
右连接(RIGHT JOIN)
右连接是指返回右表中所有数据以及左表中和右表匹配的数据。如果左表中没有和右表匹配的数据,则返回 NULL。
语法格式:
SELECT *
FROM 表1
RIGHT JOIN 表2
ON 连接条件;
示例:
-- 右连接查询t1和t2中所有数据
SELECT *
FROM t1
RIGHT JOIN t2
ON t1.id = t2.t1_id;
全连接(FULL JOIN)
全连接是指返回两个表中所有的数据,如果没有匹配的数据则返回 NULL。
语法格式:
SELECT *
FROM 表1
FULL JOIN 表2
ON 连接条件;
示例:
-- 全连接查询t1和t2中所有数据
SELECT *
FROM t1
FULL JOIN t2
ON t1.id = t2.t1_id;