多表关联 join

关联逻辑,会根据on条件,一条一条进行对比,只显示满足on条件的数据。
# join关联 先使用on条件筛选两表数据,然后在生成一张新表

源数据

student

id name
1 张三
2 李四
3 王二麻子

student_score

student_id course score
2 语文 80
3 语文 85
4 语文 90

内连接-inner join

select * from student a inner join student_score b on a.id = b.student_id;
两表数据只显示满足on条件的
image.png
image.png
image.png

左连接-left join

select * from student a left join student_score b on a.id = b.student_id;
左表数据库为主表,左表数据全部显示,右表只显示满足on条件的,不满足条件的数据显示为null

id name student_id course score
1 张三 null null null
2 李四 2 语文 80
3 王二麻子 3 语文 85

image.png
image.png

右连接-right join

select * from student a right join student_score b on a.id = b.student_id;
右表数据库为主表,右表数据全部显示,左表只显示满足on条件的,不满足条件的数据显示为null

id name student_id course score
2 李四 2 语文 80
3 王二麻子 3 语文 85
null null 4 语文 90

image.png
image.png

全连接-full join

select * from student a full join student_score b on a.id = b.student_id;
两个表中的数据全部显示,不满足on条件显示为null

id name student_id course score
1 张三 null null null
2 李四 2 语文 80
3 王二麻子 3 语文 85
null null 4 语文 90

image.png
注意:

  • join 关联和where关联的区别
  • 左连接,右连接,内连接,全连接的区别