在数据库中,表与表的连接是通过主外键来连接的,一张表的主键关联另一张表的外键。
在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;
查询结果如下: