MySQL中常见的连接方式
常见的连接方式如下:
内连接、外连接(左外连接、右外连接)、自连接和笛卡尔积
一、示例表结构
假设存在两个表:Employees 表和 Departments 表,其结构和示例数据如下:
Employees 表
employee_id | employee_name | department_id |
---|---|---|
1 | Alice | 10 |
2 | Bob | 20 |
3 | Charlie | NULL |
Departments 表
department_id | department_name |
---|---|
10 | HR |
20 | IT |
30 | Finance |
二、不同连接的使用和返回结果
1.内连接(INNER JOIN)
内连接只返回两个表中匹配的行。也就是说,只有当 Employees 表中的 department_id 与 Departments 表中的 department_id 相等时,对应的行才会被包含在结果中。SQL语句书写中INNER可以省略.
SELECT
e.employee_name,
d.department_name
FROM
Employees e
INNER JOIN
Departments d ON e.department_id = d.department_id;
结果:
employee_name | department_name |
---|---|
Alice | HR |
Bob | IT |
2.左外连接(LEFT JOIN)
左外连接返回左表(Employees 表)中的所有行,以及右表(Departments 表)中匹配的行。如果左表中的某一行在右表中没有匹配项,则右表的列将显示为 NULL。
SELECT
e.employee_name,
d.department_name
FROM
Employees e
LEFT JOIN
Departments d ON e.department_id = d.department_id;
结果:
employee_name | department_name |
---|---|
Alice | HR |
Bob | IT |
Charlie | NULL |
右外连接返回右表(Departments 表)中的所有行,以及左表(Employees 表)中匹配的行。如果右表中的某一行在左表中没有匹配项,则左表的列将显示为 NULL。
其实右外连接和左外连接同理,而且也可以进行相互转换,只要将连接表顺序对调则逻辑和结果一模一样
3.自连接(SELF JOIN)
自连接是指将一个表与自身进行连接。通常用于处理表中存在层次关系或关联关系的数据。假设 下面的Employees 表中有一个 manager_id 列,表示员工的上级经理。
employee_id | employee_name | manager_id |
---|---|---|
1 | Alice | 2 |
2 | Bob | NULL |
3 | Charlie | 1 |
SELECT
e1.employee_name AS employee,
e2.employee_name AS manager
FROM
Employees e1
LEFT JOIN
Employees e2 ON e1.manager_id = e2.employee_id;
结果:
employee | manager |
---|---|
Alice | Bob |
Bob | NULL |
Charlie | Alice |
4.笛卡尔积(CROSS JOIN)
笛卡尔积返回两个表中所有可能的行组合。也就是说,结果集中的行数等于左表的行数乘以右表的行数。
SELECT
e.employee_name,
d.department_name
FROM
Employees e
CROSS JOIN
Departments d;
结果:
employee_name | department_name |
---|---|
Alice | HR |
Alice | IT |
Alice | Finance |
Bob | HR |
Bob | IT |
Bob | Finance |
Charlie | HR |
Charlie | IT |
Charlie | Finance |
总结
本文简单介绍了SQL中不同连接方式的使用,可以帮助读者了解不同连接方式的特点和使用场景,根据实际需求选择合适的连接方式来组合数据。
都看到这里了,还不点赞,关注,收藏么
٩(๑•̀ω•́๑)۶
我是V哥,今后也将分享更多的编码小技巧,请多多期待吧~