左连接,右连接与自然连接语法以及注意点

我们今天来学习一下sql语句中的左连接右连接以及自然连接,先说结论:

左连接:以左表为主,显示左表所有的数据,右表中没有的显示null值。

右连接:以右表为主,显示右表所有的数据,左表中没有的显示null值.

内连接或者自然连接:只显示两表都有的.

没有看懂,没关系,我们通过简单的示例来让大家清晰的了解他们关系和区别

首先我们新建2张表

首先是学生表:

 然后是课程表:

我们往两个表中随便添加一些数据,方便我们等会做测试

注意这里课程号没有5,只有6条数据

然后我们正式到测试:

首先先来看自然连接:

我们查询一下学生选课情况

        自然连接

         内连接:

结果:内连接和自然连接查询结果一致,并且只有3条数据

分析:自然连接和内连接是一样的,他们都会根据查询条件查询出2个表都有数据的数据

这里还有一个小的点

 就是即便不加inner也是可以的,并不影响结果

我们再来看看左连接和右连接

首先是左连接:

结果:我们可以看到,左连接将左表(也就是student表)中所有数据都查询了出来,而右表明明有6条数据,却只查询出了3条

分析:这是因为本次查询为左连接,所以就以左表作为主表,然后当课程号对应连接上右表,当选课的课程号为空或者对应不上右表中的课程号(就像选了一个不存在的课)时右边就为空

然后我们再看看右连接

结果:我们可以看到,这一次右表中的6条数据都查询出来了,而左表却只查询出了3条

分析:和左连接的分析一样,这次查询因为是右连接,所以以右表为主表,然后按照课程号进行连接,当课程号对应不上学生选课的id时,左表就为空了,而右表即便数据不完整,但是因为是主表,即便只有一个id也还是会被查询出来。

所以我们回过头来再看结论,是不是就很清晰了?

左连接:以左表为主,显示左表所有的数据,右表中没有的显示null值。

右连接:以右表为主,显示右表所有的数据,左表中没有的显示null值.

内连接或者自然连接:只显示两表都有的

好了,这次的分享就到这里,喜欢的同学可以点赞收藏,遇到问题,可以评论,或者留言,我一定会第一时间给到回馈,感谢观看!!

注:本文为本人学习时心得分享,有讲错或者需要改正的地方,请指正,我会虚心接受

自然连接左连接的效率取决于具体的情况。在某些情况下,左连接可能会比自然连接更快,而在其他情况下,自然连接可能更快。关于左连接效率的解释有几个观。首先,左连接时,数据库会优先执行左边的表,因为左边的表被无条件返回,而右边的表对结果集没有影响,所以左连接的执行速度会相对较快。其次,左连接需要对数据进行过滤,所以速度可能会慢一些。至于自然连接的效率,根据引用内容并没有明确的解释。但是对于自然连接来说,如果两个表的关联条件不需要过滤数据,可能会比左连接更快。总之,具体情况下,自然连接左连接的效率可能会有所不同,需要根据实际情况进行评估和测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [左连接和内连接查询效率比较及原因](https://blog.csdn.net/weixin_35640856/article/details/76515968)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [关于SQL左连接效率问题](https://blog.csdn.net/weixin_39984578/article/details/116367711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值