MySQL多表查询

1. 嵌套查询
主要用于顺藤摸瓜式的从另一张表查出本表某些字段的具体的值。
例如,Dept表只有部门编号,如果想要查出部门的名称就要使用另一张表(Emp)。

这里写图片描述

- 2.内联结查询

笛卡尔积。

(a,b)×(1,2)= (a1,a2,b1,b2)

如果将表看做集合,每个元素就是一个记录,则表和表的笛卡尔积就是记录×记录的组合。

多表查询的内联结查询通常要生成笛卡尔积然后再加上条件约束,就得到要筛选的数据。

内联结的写法:

传统的:在from后面摆上多个表,+where子句写上表之间的联结条件。

这里写图片描述

新的写法:
from 表1 inner join 表2 on 联结条件.

这里写图片描述

  • 3.自联结查询

将同一张表通过重命名变成另一张表然后进行多表内联结查询。

这里写图片描述

- 4.子查询

将查询的结果当做一个表,然后再去查询。
要点:通过select输出得到一张临时表,重命名,然后再以新表名去查询。

这里写图片描述

- 5.外联结查询

两张表查询,内联结是满足两表的关系的记录才被筛选出来,外联结是以一张表为基础,查询另一张表的记录,如果没有则用NULL来表示。
有左外联结和右外联结区分,左外联结以前面的表为基准,右外则以后面的为基准。

这里写图片描述

- 6.联合查询

将多个表的查询结果用union组合在一起。

这里写图片描述

字段名字可以不同,但是列数必须要相同。
查询的结果会自动去重,如果不要去重,使用union all。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页