JOIN 连接概述
JOIN 是 SQL 的连接操作——把两张(或更多)表按关联条件拼在一起,让分散在不同表里的信息能一次查出来。数据库中数据按范式设计,员工在一个表、部门在另一个表、订单又在一个表。JOIN 负责把这些分开的数据在查询时织成一张大网。
五种基本 JOIN 类型:
| JOIN 类型 | 含义 | 结果 |
|---|---|---|
INNER JOIN | 内连接 | 两表匹配的行 |
LEFT JOIN | 左外连接 | 左表全部 + 右表匹配的(无匹配补 NULL) |
RIGHT JOIN | 右外连接 | 右表全部 + 左表匹配的(无匹配补 NULL) |
FULL JOIN | 全外连接 | 两表全部(无匹配补 NULL) |
CROSS JOIN | 笛卡尔积 | 两表所有行的组合 |
JOIN 的核心是 ON 子句——定义两表之间的关联条件。ON 和 WHERE 不同:ON 在连接阶段生效,决定哪些行配对;WHERE 在连接后过滤。对 INNER JOIN 来说两者效果相同,但对 LEFT/RIGHT JOIN ,把条件放在 ON 里还是 WHERE 里,结果可能完全不同。
另外还有 UNION 和 UNION ALL——它们不是 JOIN,但也是多表并集的重要操作,把多条 SELECT 的结果上下堆叠。
下面几篇逐一展开每种 JOIN 的具体用法。