渣渣兔 发表于 2024-6-11 18:57:04

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

媒介

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

一、图示表示

https://img-blog.csdnimg.cn/5958d6ad3c84443d98fad4b8e0ea97fe.png
二、代码举例

在SQL中,常用的有七种JOIN操作,分别是:
1、INNER JOIN(内连接)

内连接返回两个表中匹配的行。实现方式可以是利用等值连接(ON条件),或者利用隐式的交错连接(WHERE条件)。
https://img-blog.csdnimg.cn/819783a560804dbda708f150e07adb27.png
SELECT <select_list>
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key
2、LEFT JOIN(左连接)

左连接返回左表中的所有行,以及右表中与左表匹配的行。如果右表中没有匹配的行,则返回NULL值。
https://img-blog.csdnimg.cn/dd6e7b205d0b48afbb309f4b994ba2a2.png
SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
3、RIGHT JOIN(右连接)

右连接返回右表中的所有行,以及左表中与右表匹配的行。如果左表中没有匹配的行,则返回NULL值。
https://img-blog.csdnimg.cn/6b58e4c5025f41cd9ba119f31e297ae3.png
SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
4、OUTER JOIN(全连接)

全连接返回左表和右表中的所有行,如果左表或右表中没有匹配的行,则返回NULL值。
https://img-blog.csdnimg.cn/08b561a7b8d8418995af08c53f1b40f1.png
SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
5、LEFT EXCLUDING JOIN(左排除连接)

左排除连接返回左表中没有在右表中找到匹配的行。它只返回左表中没有与右表匹配的行,而右表中匹配的行将被排除在效果集之外。
https://img-blog.csdnimg.cn/1227527abe6f4f43abc52ef17f4b72f6.png
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(右排除连接)

右排除连接返回右表中没有在左表中找到匹配的行。它只返回右表中没有与左表匹配的行,而左表中匹配的行将被排除在效果集之外。
https://img-blog.csdnimg.cn/a219cd860374452793931600a53770db.png
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(外部排除连接)

外部排除连接是左排除连接和右排除连接的联合,返回左表和右表中没有匹配的行。它返回左表和右表中没有与对方表匹配的行,而匹配的行将被排除在效果集之外。
https://img-blog.csdnimg.cn/54fc5a7889d447dda1f7aa33e4aa4962.png
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企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: MySQL:七种 SQL JOINS 的实现(图文详解)