论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
Mysql
›
MySQL:七种 SQL JOINS 的实现(图文详解)
MySQL:七种 SQL JOINS 的实现(图文详解)
渣渣兔
金牌会员
|
2024-6-11 18:57:04
|
显示全部楼层
|
阅读模式
楼主
主题
808
|
帖子
808
|
积分
2424
媒介
新星计划,等你来造,一起学习进步!
7月3日-7月15日期间,完成计划任务,完成打卡赢好礼,运动报名链接如下:点击跳转
运动奖励:
❀【新秀奖】新注册用户发布第一篇文章(500字以上)得到电子【新秀勋章】;
❀【底子奖】完成任务寻衅用户可获专属电子勋章(潜力新星)+抽奖机会(百分百中奖)
❀【特殊奖】各导师评选团队综合top5,获气力新星实体证书/实体奖牌赤色款二选一+APP作者推荐关注+气力
一、图示表示
二、代码举例
在SQL中,常用的有七种JOIN操作,分别是:
1、INNER JOIN(内连接)
内连接返回两个表中匹配的行。实现方式可以是利用等值连接(ON条件),或者利用隐式的交错连接(WHERE条件)。
SELECT <select_list>
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key
复制代码
2、LEFT JOIN(左连接)
左连接返回左表中的所有行,以及右表中与左表匹配的行。如果右表中没有匹配的行,则返回NULL值。
SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
复制代码
3、RIGHT JOIN(右连接)
右连接返回右表中的所有行,以及左表中与右表匹配的行。如果左表中没有匹配的行,则返回NULL值。
SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
复制代码
4、OUTER JOIN(全连接)
全连接返回左表和右表中的所有行,如果左表或右表中没有匹配的行,则返回NULL值。
SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
复制代码
5、LEFT EXCLUDING JOIN(左排除连接)
左排除连接返回左表中没有在右表中找到匹配的行。它只返回左表中没有与右表匹配的行,而右表中匹配的行将被排除在效果集之外。
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(右排除连接)
右排除连接返回右表中没有在左表中找到匹配的行。它只返回右表中没有与左表匹配的行,而左表中匹配的行将被排除在效果集之外。
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(外部排除连接)
外部排除连接是左排除连接和右排除连接的联合,返回左表和右表中没有匹配的行。它返回左表和右表中没有与对方表匹配的行,而匹配的行将被排除在效果集之外。
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 进行表连接时,以下是一些需要注意的重要点:
我们要控制连接表的数目
。多表连接就相称于嵌套 for 循环一样,非常消耗资源,会让 SQL 查询性能降落得很严重,因此不要连接不须要的表。在许多 DBMS 中,也都会有最大连接表的限定。
【欺压】凌驾三个表禁止 join。需要 join 的字段,数据范例保持绝对一致;多表关联查询时, 保证被关联的字段需要有索引。
说明:纵然双表 join 也要注意表索引、SQL 性能。
泉源:阿里巴巴《Java开发手册》
连接条件
:确保连接条件准确无误。连接条件是指在 ON 子句中指定的列或表达式,用于确定两个表之间的关联关系。错误的连接条件大概导致错误的效果或不完整的数据。
表别名
:利用表别名可以提高 SQL 查询的可读性。通过为每个表指定别名,可以简化查询并避免列名冲突。
数据冗余
:当进行 JOIN 操作时,效果集大概会包罗冗余的数据,尤其是在多对多关系的情况下。需要谨慎处理冗余数据,并在需要时利用 DISTINCT 关键字来消除重复行。
性能影响
:JOIN 操作大概对数据库性能产生影响,特殊是在连接大型表或复杂查询时。确保表中的连接列上有恰当的索引,以提高查询性能。
JOIN 范例选择
:选择恰当的 JOIN 范例非常重要,以确保获取所需的数据。相识每个 JOIN 范例的含义和适用场景,并根据详细需求进行选择。
多个 JOIN 操作
:在某些情况下,大概需要多个 JOIN 操作来连接多个表。确保 JOIN 操作的次序和连接条件的正确性,以得到正确的效果。
利用其他查询条件
:可以在 JOIN 操作中利用其他查询条件,如 WHERE 子句或 HAVING 子句,来进一步筛选所需的数据。
外连接 NULL 值处理
:在利用外连接(LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)时,需要注意处理 NULL 值。确保代码中正确处理大概出现的 NULL 值情况。
自连接的别名
:在利用自连接时,利用不同的表别名来区分自连接的两个表黑白常重要的,否则会导致冲突和错误的效果。
数据一致性
:在进行 JOIN 操作之前,确保参与连接的表之间具有一致的数据范例和数据结构,以避免数据不匹配的标题。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
渣渣兔
金牌会员
这个人很懒什么都没写!
楼主热帖
SqlServer2012升级到SqlServer2016
轻松掌握组件启动之MongoDB(上):高 ...
SaaS软件工程师成长路径
事务的ACID特性
深度干货!一篇Paper带您读懂HTAP | St ...
Redis 缓存过期策略和内存淘汰策略 ...
iOS事件传递链与响应链
Java后端05(初识MyBatis)
.NET for Apache Spark 入门演练
非华为电脑如何与matepad pro进行多屏 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表