前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL连接的可视化表示

SQL连接的可视化表示

作者头像
lyudev
发布2022-08-04 10:51:59
6380
发布2022-08-04 10:51:59
举报
文章被收录于专栏:代码即数据

原文链接:https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

A.jpg

B.jpg

Visual_SQL_JOINS_orig.jpg

1.Left JOIN (左连接)

Left JOIN.jpg

该查询将返回左表(表A)中的所有记录,而不管这些记录是否与右表(表B)中的任何记录相匹配。它还将返回右表中的任何匹配记录。这个连接写法如下:

代码语言:javascript
复制
SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key

LEFT JOIN.jpg

2.Right JOIN(右连接)

Right JOIN.jpg

该查询将返回右表(表B)中的所有记录,而不管这些记录是否与左表(表a)中的任何记录相匹配。它还将返回左表中的任何匹配记录。这个链接写如下:

代码语言:javascript
复制
SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key

RIGHT JOIN.jpg

3.Inner JOIN (内连接)

Inner JOIN.jpg

这是最简单、最容易理解的连接,也是最常见的连接。这个查询将返回左表(表A)中与右表(表B)中有匹配记录的所有记录。

代码语言:javascript
复制
SELECT <select_list> 
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key

INNER JOIN.jpg

4.Left Excluding JOIN(左连接不包含内连接)

Left Excluding JOIN.jpg

这个查询将返回左表(表A)中所有与右表(表B)中任何记录不匹配的记录。

代码语言:javascript
复制
SELECT <select_list> 
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL

Left Excluding JOIN.jpg

5.Right Excluding JOIN(右连接不包含内连接)

Right Excluding JOIN.jpg

这个查询将返回右表(表B)中与左表(表A)中任何记录不匹配的所有记录。

代码语言:javascript
复制
SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL

Right Excluding JOIN.jpg

6.Outer Excluding JOIN

Outer Excluding JOIN.jpg

这个查询将返回左表(表A)中的所有记录和右表(表B)中的所有不匹配的记录。我还需要使用这种类型的连接,但是我经常使用其他所有类型的连接。这个连接写法如下:

代码语言:javascript
复制
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

由于mysql不支持full join,只能通过下面代码模拟实现

代码语言:javascript
复制
SELECT  * FROM stu_movie A LEFT JOIN stu_student B ON A.cid = B.cid WHERE B.cid IS NULL UNION ALL SELECT * FROM stu_movie A RIGHT JOIN stu_student B ON A.cid = B.cid WHERE A.cid IS NULL;

Outer Excluding JOIN.jpg

7.Outer JOIN(外连接、全连接)

Outer JOIN.jpg

此联接也可以称为完整的外部联接或完整联接。这个查询将返回来自两个表的所有记录,连接来自左表(表A)的记录,这些记录与来自右表(表B)的记录相匹配。

代码语言:javascript
复制
SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key

上面代码在mysql执行是报错的,因为mysql不支持全连接,只能用以下代码实现效果,含义是左连接+右连接+去重=全连接:

代码语言:javascript
复制
SELECT  A.cid AS A_cid,B.cid AS B_cid FROM stu_movie A LEFT JOIN  stu_student B ON A.cid = B.cid UNION SELECT  A.cid AS A_cid,B.cid AS B_cid FROM stu_movie A RIGHT JOIN  stu_student B ON A.cid= B.cid

Outer JOIN.jpg

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 代码即数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档