【Mysql】联表查询

【Mysql】联表查询_第1张图片 

目录

表:

思路:

inner join 

right join 

left join

​编辑 


表:

student表

【Mysql】联表查询_第2张图片

class表

【Mysql】联表查询_第3张图片 

思路:

1.分析查找的字段来自哪些表

2.确定使用哪种连接查询

3.确定交叉点

比如student表的name与class表的name是相等的

inner join 

内联操作,将符合ON条件的A表和B表结果均搜索出来,然后合并为一个结果集。

【Mysql】联表查询_第4张图片

查询 name , age ,subject  ,score的学生

age 字段出现在student 表, subject,score 字段出现在class表

【Mysql】联表查询_第5张图片

where  可以换成 on

As  是起到别名的作用

查询结果如下:

【Mysql】联表查询_第6张图片 

right join 

右联操作:

将符合ON条件的A表结果搜索出来, 然后右联到B表上,然后将合并后的B表输出

【Mysql】联表查询_第7张图片

查询 name , age ,subject  ,score的学生

select s.name , age, subject,score
from student  s
right join class  c
on s.name=c.name;

【Mysql】联表查询_第8张图片

右联操作还有一种情况

【Mysql】联表查询_第9张图片

仍然是查询 name , age ,subject  ,score的学生

student表

【Mysql】联表查询_第10张图片

class表

【Mysql】联表查询_第11张图片

相比student表多了小黑和小白

【Mysql】联表查询_第12张图片

来看结果

【Mysql】联表查询_第13张图片

 

left join

左联操作: 

 将符合ON条件的B表结果搜索出来, 然后左联到A表上,

【Mysql】联表查询_第14张图片 

查询 name , age ,subject  ,score的学生

select s.name , age, subject,score
from student  s
left join class  c
on s.name=c.name;

【Mysql】联表查询_第15张图片

这里有null数据,空数据,原因是从小绿开始到小紫,他们在class表中是没有对应的数据的

他与另一种左联操作不一样

【Mysql】联表查询_第16张图片

这也是一种左联操作,他与上面一个左联操作的不同是从小绿开始到小紫开始在class中是有相应的数据的

所以他的结果里不会有null

student表

【Mysql】联表查询_第17张图片

class表

【Mysql】联表查询_第18张图片

查询 结果

【Mysql】联表查询_第19张图片

 

 

 

你可能感兴趣的:(mysql,mysql,数据库)