我们今天来学习一下sql语句中的左连接右连接以及自然连接,先说结论:
左连接:以左表为主,显示左表所有的数据,右表中没有的显示null值。
右连接:以右表为主,显示右表所有的数据,左表中没有的显示null值.
内连接或者自然连接:只显示两表都有的.
没有看懂,没关系,我们通过简单的示例来让大家清晰的了解他们关系和区别
首先我们新建2张表
首先是学生表:
然后是课程表:
我们往两个表中随便添加一些数据,方便我们等会做测试
注意这里课程号没有5,只有6条数据
然后我们正式到测试:
首先先来看自然连接:
我们查询一下学生选课情况
自然连接
内连接:
结果:内连接和自然连接查询结果一致,并且只有3条数据
分析:自然连接和内连接是一样的,他们都会根据查询条件查询出2个表都有数据的数据
这里还有一个小的点
就是即便不加inner也是可以的,并不影响结果
我们再来看看左连接和右连接
首先是左连接:
结果:我们可以看到,左连接将左表(也就是student表)中所有数据都查询了出来,而右表明明有6条数据,却只查询出了3条
分析:这是因为本次查询为左连接,所以就以左表作为主表,然后当课程号对应连接上右表,当选课的课程号为空或者对应不上右表中的课程号(就像选了一个不存在的课)时右边就为空。
然后我们再看看右连接
结果:我们可以看到,这一次右表中的6条数据都查询出来了,而左表却只查询出了3条
分析:和左连接的分析一样,这次查询因为是右连接,所以以右表为主表,然后按照课程号进行连接,当课程号对应不上学生选课的id时,左表就为空了,而右表即便数据不完整,但是因为是主表,即便只有一个id也还是会被查询出来。
所以我们回过头来再看结论,是不是就很清晰了?
左连接:以左表为主,显示左表所有的数据,右表中没有的显示null值。
右连接:以右表为主,显示右表所有的数据,左表中没有的显示null值.
内连接或者自然连接:只显示两表都有的
好了,这次的分享就到这里,喜欢的同学可以点赞收藏,遇到问题,可以评论,或者留言,我一定会第一时间给到回馈,感谢观看!!
注:本文为本人学习时心得分享,有讲错或者需要改正的地方,请指正,我会虚心接受