mysql中多表之间的连接之join关键字

本文介绍了MySQL中三种表连接方式:内连接(INNER JOIN)、左外连接(LEFT JOIN)和右外连接(RIGHT JOIN)。内连接包括隐式和显示形式,它们根据主外键关联获取匹配的记录。左外连接以左表为主,显示所有左表记录及匹配的右表记录,否则显示NULL。右外连接则以右表为主,情况与左外连接相反。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在数据库中,表与表的连接是通过主外键来连接的,一张表的主键关联另一张表的外键。
在mysql中有三种连接方式
1、内连接(inner join)
内连接,理解为多种表关联,只显示多张表中匹配到的结构,没有匹配到的不会出现在查找结构中。
内连接又分为显示内连接和隐式内连接,区别在于有没有用join关键字。
隐式内连接(使用where实现)
现有如下两张表员工表(emp)和部门表(dept):
员工表(emp)
部门表(dept)

  • 使用隐式内连接查找员工对应的部门名称
  • 我们从员工表中只能看到部门id,这时就需要使用部门id关联部门表中的 部门id来得到部门名称
select * 
from emp,dept
where emp.dept_id=dept.id;

这种方式就是隐式内连接,那么显示内连接又是怎么样的呢?
显示内连接如下:

select * 
from emp
inner join dept
on emp.dept_id=dept.id;

两种查询方式最后结果都为
在这里插入图片描述
2、左外连接(left join)
左连接是以左表为主表,左表中的内容不管怎么样都会查找出来,如果右表内容能匹配,则显示,否则为null;

select * 
from emp
left join dept
on emp.dept_id=dept.id;

哪张表在left 左表,那张表就是左表,以关键字left作为分解,结果如下:
在这里插入图片描述
3、右外连接(right join)
右连接是以右表为主表,右表中的内容不管怎么样都会查找出来,如果左表内容能匹配,则显示,否则为null;

select * 
from emp
right join dept
on emp.dept_id=dept.id;

查询结果如下:
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值