核心概念
连接(JOIN)用于根据两个或多个表中的列之间的关系,从这些表中查询数据。为了更直观地理解,我们假设有两个表:
员工表 (Employees)
| employee_id | name | department_id |
|---|---|---|
| 1 | 张三 | 101 |
| 2 | 李四 | 102 |
| 3 | 王五 | NULL |
部门表 (Departments)
| department_id | department_name |
|---|---|
| 101 | 技术部 |
| 102 | 销售部 |
| 103 | 市场部 |
内连接 (INNER JOIN)
定义:只返回两个表中连接条件匹配的记录。
结果:两个表的交集部分。
使用场景:当你只想查看在两边表中都有对应信息的记录时。例如,查询所有有部门的员工及其部门信息。
SQL 语句:
SELECT e.name, d.department_name FROM Employees e INNER JOIN Departments d ON e.department_id = d.department_id;
查询结果:
| name | department_name |
|---|---|
| 张三 | 技术部 |
| 李四 | 销售部 |
注意:员工'王五'的 department_id 为 NULL,在部门表中找不到匹配项,所以没有出现。部门'市场部'在员工表中没有对应的员工,所以也没有出现。
左外连接 (LEFT JOIN / LEFT OUTER JOIN)
定义:返回左表 (FROM 子句中的表) 的所有记录,以及右表中连接条件匹配的记录。如果右表没有匹配的记录,则结果集中右表的部分返回 NULL。
结果:左表的全集 + 右表的匹配部分。
使用场景:当你需要左表的所有记录,无论它们在右表中是否有对应项。例如,列出所有员工,并显示他们所在的部门(即使某些员工没有部门)。
SQL 语句:
SELECT e.name, d.department_name FROM Employees e Departments d e.department_id d.department_id;



