对于inner join、left join、right join的解释,书本的解释讲得比较专业,有时候难以理解,以下将会以最简单的方式帮助你理解这三者的区别
这里先准备两张表
student(学生表)
stu_score(学生成绩表)
我们接下来都将使用两表的 id 属性进行连接
简单理解:在做表连接时,选取两个表都存在的数据
对于inner join的sql语句如下:
select s.name,s.sex,ss.score
from student s inner join stu_score ss
on s.id = ss.id;
执行结果如下:
可见,student表中的4、5行并没有连接进来,因为在stu_score表中没有对应数据
简单理解:以左表为主,在做表连接时,保留左表中的数据,如果右表中没有对应的值就用空值代替
对于left join的sql语句如下(from 中 student 在左边 ,stu_score 在右边 ,与图示对应 ):
select s.name,s.sex,ss.score
from student s left join stu_score ss
on s.id = ss.id;
执行结果如下:
可见,保留了左表(student)中的值,但是由于右表(stu_student)中没有与之对应的id值,所以赋值为null,这样我们就可以得到所有学生的信息,并且还能知道谁没有参加考试
简单理解:与左连接相对应,以右表为主,在做表连接时,保留右表中的数据,如果左表中没有对应的值就用空值代替
(为了方便演示,故在右表增加了一些字段)
对于right join的sql语句如下(from 中 student 在左边 ,stu_score 在右边 ,与图示对应 ):
select s.name,s.sex,ss.score
from student s right join stu_score ss
on s.id = ss.id;
执行结果如下:
可见右表所有数据保留,左表中没有对应关系的数据则使用了null表示
信息加载中,请等待
微信客服(速回)
微信客服(慢回)