MySQL连接方式全解


常见的连接方式如下:

内连接、外连接(左外连接、右外连接)、自连接和笛卡尔积


一、示例表结构

假设存在两个表:Employees 表和 Departments 表,其结构和示例数据如下:

Employees 表

employee_idemployee_namedepartment_id
1Alice10
2Bob20
3CharlieNULL

Departments 表

department_iddepartment_name
10HR
20IT
30Finance

二、不同连接的使用和返回结果

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_namedepartment_name
AliceHR
BobIT

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_namedepartment_name
AliceHR
BobIT
CharlieNULL

右外连接返回右表(Departments 表)中的所有行,以及左表(Employees 表)中匹配的行。如果右表中的某一行在左表中没有匹配项,则左表的列将显示为 NULL。
其实右外连接和左外连接同理,而且也可以进行相互转换,只要将连接表顺序对调则逻辑和结果一模一样

3.自连接(SELF JOIN)

自连接是指将一个表与自身进行连接。通常用于处理表中存在层次关系或关联关系的数据。假设 下面的Employees 表中有一个 manager_id 列,表示员工的上级经理。

employee_idemployee_namemanager_id
1Alice2
2BobNULL
3Charlie1
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;

结果:

employeemanager
AliceBob
BobNULL
CharlieAlice

4.笛卡尔积(CROSS JOIN)

笛卡尔积返回两个表中所有可能的行组合。也就是说,结果集中的行数等于左表的行数乘以右表的行数。

SELECT 
    e.employee_name, 
    d.department_name
FROM 
    Employees e
CROSS JOIN 
    Departments d;

结果:

employee_namedepartment_name
AliceHR
AliceIT
AliceFinance
BobHR
BobIT
BobFinance
CharlieHR
CharlieIT
CharlieFinance

总结

本文简单介绍了SQL中不同连接方式的使用,可以帮助读者了解不同连接方式的特点和使用场景,根据实际需求选择合适的连接方式来组合数据。

都看到这里了,还不点赞,关注,收藏

٩(๑•̀ω•́๑)۶

我是V哥,今后也将分享更多的编码小技巧,请多多期待吧~

新人卖萌求赞求关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值