MySQL:七种 SQL JOINS 的实现(图文详解)

这篇具有很好参考价值的文章主要介绍了MySQL:七种 SQL JOINS 的实现(图文详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



前言

新星计划,等你来造,一起学习进步!
7月3日-7月15日期间,完成计划任务,完成打卡赢好礼,活动报名链接如下:点击跳转
活动奖励:
❀【新秀奖】新注册用户发布第一篇文章(500字以上)获得电子【新秀勋章】;
❀【基础奖】完成任务挑战用户可获专属电子勋章(潜力新星)+抽奖机会(百分百中奖)
❀【特别奖】各导师评选团队综合top5,获实力新星实体证书/实体奖牌红色款二选一+APP作者推荐关注+实力



一、图示表示

MySQL:七种 SQL JOINS 的实现(图文详解)

二、代码举例

在SQL中,常用的有七种JOIN操作,分别是:

1、INNER JOIN(内连接)

内连接返回两个表中匹配的行。实现方式可以是使用等值连接(ON条件),或者使用隐式的交叉连接(WHERE条件)。

MySQL:七种 SQL JOINS 的实现(图文详解)

SELECT <select_list>
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key

2、LEFT JOIN(左连接)

左连接返回左表中的所有行,以及右表中与左表匹配的行。如果右表中没有匹配的行,则返回NULL值。

MySQL:七种 SQL JOINS 的实现(图文详解)

SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key

3、RIGHT JOIN(右连接)

右连接返回右表中的所有行,以及左表中与右表匹配的行。如果左表中没有匹配的行,则返回NULL值。

MySQL:七种 SQL JOINS 的实现(图文详解)

SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key

4、OUTER JOIN(全连接)

全连接返回左表和右表中的所有行,如果左表或右表中没有匹配的行,则返回NULL值。

MySQL:七种 SQL JOINS 的实现(图文详解)

SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key

5、LEFT EXCLUDING JOIN(左排除连接)

左排除连接返回左表中没有在右表中找到匹配的行。它只返回左表中没有与右表匹配的行,而右表中匹配的行将被排除在结果集之外。

MySQL:七种 SQL JOINS 的实现(图文详解)

SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL

6、RIGHT EXCLUDING JOIN(右排除连接)

右排除连接返回右表中没有在左表中找到匹配的行。它只返回右表中没有与左表匹配的行,而左表中匹配的行将被排除在结果集之外。

MySQL:七种 SQL JOINS 的实现(图文详解)

SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL

7、OUTER EXCLUDING JOIN(外部排除连接)

外部排除连接是左排除连接和右排除连接的结合,返回左表和右表中没有匹配的行。它返回左表和右表中没有与对方表匹配的行,而匹配的行将被排除在结果集之外。

MySQL:七种 SQL JOINS 的实现(图文详解)

SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS NULL

这些 JOIN 类型提供了不同的数据关联方式,可根据具体需求选择适当的 JOIN 类型来获得所需的查询结果。请注意,具体的 JOIN 语法可能会因数据库管理系统而有所不同,但概念和原则是相似的。

三、注意事项

在使用 SQL JOINs 进行表连接时,以下是一些需要注意的重要点:

  1. 我们要控制连接表的数量。多表连接就相当于嵌套 for 循环一样,非常消耗资源,会让 SQL 查询性能下降得很严重,因此不要连接不必要的表。在许多 DBMS 中,也都会有最大连接表的限制。

【强制】超过三个表禁止 join。需要 join 的字段,数据类型保持绝对一致;多表关联查询时, 保证被关联的字段需要有索引。
说明:即使双表 join 也要注意表索引、SQL 性能。
来源:阿里巴巴《Java开发手册》文章来源地址https://www.toymoban.com/news/detail-491601.html

  1. 连接条件:确保连接条件准确无误。连接条件是指在 ON 子句中指定的列或表达式,用于确定两个表之间的关联关系。错误的连接条件可能导致错误的结果或不完整的数据。
  2. 表别名:使用表别名可以提高 SQL 查询的可读性。通过为每个表指定别名,可以简化查询并避免列名冲突。
  3. 数据冗余:当进行 JOIN 操作时,结果集可能会包含冗余的数据,尤其是在多对多关系的情况下。需要谨慎处理冗余数据,并在需要时使用 DISTINCT 关键字来消除重复行。
  4. 性能影响:JOIN 操作可能对数据库性能产生影响,特别是在连接大型表或复杂查询时。确保表中的连接列上有适当的索引,以提高查询性能。
  5. JOIN 类型选择:选择适当的 JOIN 类型非常重要,以确保获取所需的数据。了解每个 JOIN 类型的含义和适用场景,并根据具体需求进行选择。
  6. 多个 JOIN 操作:在某些情况下,可能需要多个 JOIN 操作来连接多个表。确保 JOIN 操作的顺序和连接条件的正确性,以获得正确的结果。
  7. 使用其他查询条件:可以在 JOIN 操作中使用其他查询条件,如 WHERE 子句或 HAVING 子句,来进一步筛选所需的数据。
  8. 外连接 NULL 值处理:在使用外连接(LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)时,需要注意处理 NULL 值。确保代码中正确处理可能出现的 NULL 值情况。
  9. 自连接的别名:在使用自连接时,使用不同的表别名来区分自连接的两个表是非常重要的,否则会导致冲突和错误的结果。
  10. 数据一致性:在进行 JOIN 操作之前,确保参与连接的表之间具有一致的数据类型和数据结构,以避免数据不匹配的问题。

到了这里,关于MySQL:七种 SQL JOINS 的实现(图文详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 27、Flink 的SQL之SELECT (SQL Hints 和 Joins)介绍及详细示例(2-1)

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月07日
    浏览(40)
  • Java单例模式详解--七种单例模式实现+单例安全+实际应用场景

    保证了一个类只有一个实例,并且提供了一个全局访问点。单例模式的主要作用是节省公共资源,方便控制,避免多个实例造成的问题。 实现单例模式的三点: 私有构造函数 私有静态变量维护对象实例 公有静态方法提供获取实例对象 七种单例模式实现 1.静态类:第一次运

    2024年02月04日
    浏览(62)
  • Windows安装SQL Servers2022和SSMS教程(图文详解)

    目录 1 下载 2 安装 SQL Server 3 安装SSMS 如果是重装SQL Server,一定要先百度,把旧的sql server卸载干净,否则装不上新的SQL server 官方下载网址: SQL Server 下载 |微软 (microsoft.com) 这里我选择安装 Developer版本的,点击下载之后,会跳出下载  选好自己想要下载的地方。下载好之后

    2024年02月10日
    浏览(49)
  • SQL的七种JOIN

    在使用 join 时, on 和 where 条件的区别如下: on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。 where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 join 的含义了,条件不符的就全部过滤掉。 数据准备,我

    2024年04月15日
    浏览(54)
  • [MySQL]数据类型(图文详解)

    说明: 数值类型在定义时不加unsigned限定的,都会被创建为有符号数。 只能将数值类型范围内的数据插入表中。 在C/C++语言中,数据类型不匹配时,编译器可能会进行截断、隐式类型转化等方式将不同类型的数据相互赋值,在MySQL中这是不被允许的,在MySQL中数值类型是一种

    2024年02月12日
    浏览(32)
  • 【新星计划2023】SQL SERVER (01) -- 基础知识

    1.1 Official Website 官方文档(小技巧) Officail Website: https://learn.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver16. Officail Website(中文): https://learn.microsoft.com/zh-cn/sql/sql-server/?view=sql-server-ver16. 1.2 Conn Tool 官方自带的 SQL Server Management Studio (SSMS) SSMS Install: https://learn.microsoft.com/en-us/sql/ssm

    2024年02月04日
    浏览(42)
  • MySQL的登录与退出(图文详解)

    目录 一、服务的启动 1、方式1:使用图形界面工具启动 方式2:使用命令行工具启动 二、服务的停止  方式1:使用图形界面工具停止 方式2:使用命令行工具停止 二、自带客户端的登录与退出 登录方式1:MySQL自带客户端  登录方式2:windows命令行 退出登录 MySQL安装完毕之后

    2024年04月13日
    浏览(31)
  • MySQL的下载、安装、配置(图文详解)

    MySQL Community Server 社区版本 ,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。 MySQL Enterprise Edition 企业版本 ,需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。

    2024年02月07日
    浏览(35)
  • MySql安装教程(图文详解,最详细)

    创建一个名为my.ini的配置文件 文件里面的内容如下(直接复制过去就可以): 管理员模式下打开cmd 输入mysqld --initialize-insecure 初始化mysql 然后再输入mysqld install 安装mysql 启动mysql(如果启动失败就进入mysql下的bin目录进行启动) 直接输入mysql进入,配置文件设置的初始化没有

    2024年02月04日
    浏览(40)
  • MySQL的下载、安装和配置(图文详解)

    目录 一、MySQL的4大版本 二、软件的下载 1. 下载地址 2. 打开官网,点击DOWNLOADS 3. 点击 MySQL Community Server 三、MySQL8.0 版本的安装 四、配置MySQL8.0 五、配置MySQL8.0 环境变量 六、MySQL5.7 版本的安装、配置 MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,

    2024年02月12日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包