MySql数据库学习(二)JOINS

一、SQL JOINS图解

在这里插入图片描述

学生表a:
学生ID 姓名
1 张三
2 李四
3 赵五

成绩表b:
成绩ID 学生ID 成绩为
1 2 60
2 3 85
3 5 90

二、left join 左联

left join: 查找左表(主表)为查找全集,右表(子表)存在的关联出来,不存在的为NULL

select * from  a left join  b on a.学生ID=b.学生ID

查询结果:
学生ID 姓名 成绩 成绩ID
1 张三 NULL NULL
2 李四 60 1
3 赵五 85 2

三、right join 右联

right join: 查找右表(主表)为查找全集,左表(子表)存在的关联出来,不存在的为NULL

select * from  a right join  b on a.学生ID=b.学生ID

查询结果:
学生ID 姓名 成绩 成绩ID
2 李四 60 1
3 赵五 85 2
5 NULL 90 3

四、full join 全集关联

full join: 相当于把left join 和right join 综合起来,即左表(主表)和右表(子表)关联,如果能关联到的显示,如果左有右表没有,则右表显示NULL,如果右表有左表没有 则左表显示NULL

五、join 全连接

join: 查找左表(主表)和右表(子表)都存在的数据

select * from  a  join  b on a.学生ID=b.学生ID

学生ID 姓名 成绩 成绩ID
2 李四 60 1
3 赵五 85 2

六、 联接中on与where的区别

从满足左联的条件中查找出成绩等于60的学生信息;
where是在连接的结果里过滤出符合where条件的信息。
如果不存在符合where条件的信息,则整体查询结果返回NULL

select * from  a left join  b where a.学生ID=b.学生ID where 成绩 = 60

同上左联接,返回左面主表的所有信息;如果没有满足on里面的条件,右表字段查询字段的结果就为NULL

select * from  a left join  b on (a.学生ID=b.学生ID and 成绩 = 60)

猜你喜欢

转载自blog.csdn.net/weixin_40966030/article/details/107464353