一、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)