文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-08-16 18:28

关注


前言

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



一、图示表示

在这里插入图片描述

二、代码举例

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

1、INNER JOIN(内连接)

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

在这里插入图片描述

SELECT FROM Table_A AINNER JOIN Table_B BON A.Key = B.Key

2、LEFT JOIN(左连接)

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

在这里插入图片描述

SELECT FROM Table_A ALEFT JOIN Table_B BON A.Key = B.Key

3、RIGHT JOIN(右连接)

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

在这里插入图片描述

SELECT FROM Table_A ARIGHT JOIN Table_B BON A.Key = B.Key

4、OUTER JOIN(全连接)

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

在这里插入图片描述

SELECT FROM Table_A AFULL OUTER JOIN Table_B BON A.Key = B.Key

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

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

在这里插入图片描述

SELECT FROM Table_A ALEFT JOIN Table_B BON A.Key = B.KeyWHERE B.Key IS NULL

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

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

在这里插入图片描述

SELECT FROM Table_A ARIGHT JOIN Table_B BON A.Key = B.KeyWHERE A.Key IS NULL

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

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

在这里插入图片描述

SELECT FROM Table_A AFULL OUTER JOIN Table_B BON A.Key = B.KeyWHERE A.Key IS NULL OR B.Key IS NULL

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

三、注意事项

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

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

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

  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 操作之前,确保参与连接的表之间具有一致的数据类型和数据结构,以避免数据不匹配的问题。

来源地址:https://blog.csdn.net/weixin_52533007/article/details/131240219

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯