热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

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

我们今天来学习一下sql语句中的左连接右连接以及自然连接,先说结论:左连接:以左表为主,显示左表所有的数据,

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


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


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


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

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

首先我们新建2张表

首先是学生表:

 然后是课程表:

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

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


然后我们正式到测试:

首先先来看自然连接:

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

        自然连接

         内连接:

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

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

这里还有一个小的点

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

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

首先是左连接:

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

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

然后我们再看看右连接

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

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

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


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


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


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

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

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


推荐阅读
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文介绍了一个SQL Server自定义函数,用于从字符串中提取仅包含数字和小数点的子串。该函数通过循环删除非数字字符来实现,并附带创建测试表、存储过程以演示其应用。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文介绍如何使用SAS根据输入数据集自动生成并执行SQL查询,其中CASE语句依据另一个数据集中的观测值动态调整。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • Oracle中NULL、空字符串和空格的处理与区别
    本文探讨了在Oracle数据库中使用NULL、空字符串('')和空格('_')时可能遇到的问题及解决方案。重点解释了它们之间的区别,以及在查询和函数中的行为。 ... [详细]
  • Oracle 数据导出为 SQL 脚本的详细步骤
    本文介绍如何使用 PL/SQL Developer 工具将 Oracle 数据库中的数据导出为 SQL 脚本,包括详细的步骤和注意事项。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 1.介绍有时候我们需要一些模拟数据来进行测试,今天简单记录下如何用存储过程生成一些随机数据。2.建表我们新建一张学生表和教师表如下:CREATETABLEstudent(idINT ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • 本文介绍了解决在Windows操作系统或SQL Server Management Studio (SSMS) 中遇到的“microsoft.ACE.oledb.12.0”提供程序未注册问题的方法,特别针对Access Database Engine组件的安装。 ... [详细]
  • PostgreSQL 最新动态 —— 2022年4月6日
    了解 PostgreSQL 社区的最新进展和技术分享 ... [详细]
  • 本文详细介绍了MySQL数据库中的Bin Log和Redo Log,阐述了它们在日志记录机制、应用场景以及数据恢复方面的区别。通过对比分析,帮助读者更好地理解这两种日志文件的作用和特性。 ... [详细]
author-avatar
huai
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有