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

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

被折叠的 条评论
为什么被折叠?



