千家信息网

SQL的内连接和外连接怎么用

发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,这篇文章主要介绍"SQL的内连接和外连接怎么用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SQL的内连接和外连接怎么用"文章能帮助大家解决问题。SQL 中的
千家信息网最后更新 2025年11月15日SQL的内连接和外连接怎么用

这篇文章主要介绍"SQL的内连接和外连接怎么用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SQL的内连接和外连接怎么用"文章能帮助大家解决问题。

SQL 中的 JOIN 是什么?

JOIN 运算符允许您以各种方式组合相关信息,正如我在上面简要解释的那样。连接有多种类型,分为两大类 - 内部连接和外部连接。

INNER JOIN 和 OUTER JOIN 之间的最大区别在于,内连接将仅保留来自彼此相关的两个表(在结果表中)的信息。另一方面,外部联接还将保留与结果表中的另一个表无关的信息。

让我们详细了解 INNER JOIN 和 OUTER JOIN 如何工作以更好地理解它们。

如何在 SQL 中使用 INNER JOIN

内部联接将仅保留来自两个相关联的表的信息。如果您将这两个表想象为维恩图,则由 INNER JOIN 生成的表将是下面它们重叠的绿色突出显示部分:

内连接的维恩图表示

这是内部联接的语法:

SELECT * FROM table1    JOIN table2    ON relation;

内连接语法

我们将在下面通过一个例子来了解它是如何工作的。

如何在 SQL 中使用 OUTER JOIN

如果要保留所有数据,而不仅仅是相互关联的数据,则可以使用 OUTER 联接。

有三种类型的外部联接:LEFT JOIN,RIGHT JOIN,和FULL JOIN。它们之间的差异涉及它们保留哪些不相关的数据--它可以来自第一个表、第二个表或两者。没有要填充的数据的单元格的值为NULL。

注意:LEFT JOIN是所有版本的 SQL 中最普遍实现的。但是对于RIGHT JOIN和FULL JOIN就不是这样了,在早期的各种SQL版本中都没有实现(但oracle数据库在数据表连接方面实现得比较充分)。

让我们看看每个人是如何单独工作的。然后我们将通过下面的示例了解它们是如何工作的。

SQL中的左外连接

LEFT OUTER JOIN,或简称Left Join,将保留左(第一个)表中的不相关数据。

您可以用带有两个圆圈的维恩图来想象它,结果表是绿色突出显示的部分,其中包括公共/重叠部分和左侧圆圈的其余部分。

左外连接的维恩图表示

语法如下所示。您会看到它类似于 Inner Join 语法,但添加了LEFT关键字。

SELECT columns  FROM table1  LEFT JOIN table2  ON relation;

左外连接

SQL 中的右外部联接

RIGHT OUTER JOIN,或简称为Right Join,将保留与第一个表无关的第二个表中的数据。

您可以用带有两个圆圈的维恩图来想象它,结果表是绿色突出显示的部分,其中包括重叠部分和右侧圆圈的其余部分。

右外连接的维恩图表示

语法如下,唯一的区别是RIGHT关键字。

SELECT columns  FROM table1  RIGHT JOIN table2  ON relation;

右外连接

SQL 中的完全外部联接

您可以将 FULL OUTER JOIN 视为左连接和右连接的组合。它将保留两个表中的所有行,缺失的数据将用NULL.

您可以用带有两个圆圈的维恩图来想象它,结果表是绿色突出显示的部分,其中包括所有内容:重叠部分、左圆和右圆。

完全外连接的维恩图表示

语法如下,使用FULL关键字。

SELECT columns  FROM table1  FULL JOIN table2  ON relation;

全外连接

SQL JOIN 运算符示例

兽医诊所可能的数据库可以有一张用于宠物的表和一张用于主人的表。由于一个所有者可能有多个宠物,因此 pets 表将有一owner_id列指向所有者表。

身份证姓名年龄所有者_ID
1菲多71
2小姐31
3娘娘腔102
413
5料斗20
身份证姓名电话号码
1约翰尼4567823
2奥利7486513
3伊莱尼亚3481365
4路易丝1685364

您可以使用简单的查询来获取一个带有彼此相邻的宠物名称和所有者名称的表。让我们用所有不同的 JOIN 运算符来做。

SQL 内部联接示例

让我们首先使用JOIN.

在这种情况下,你会SELECT选择在pets表中的列name(并将其重命名pet_name)。然后从owners表中选择列name,并将其重命名为owner.。这将是这样的:SELECT pets.name AS pet_name, owners.name AS owner

接着,可以使用FROM关键字声明列来自pets表,并使用JOIN关键字声明想与owners表进行连接:FROM pets JOIN owner

最后,当需要加入的两列一一对应时,使用ON关键字将pets表的owner_id与owners表的id使用等号连接起来: pets.owner_id = owners.id

这是全部:

SELECT pets.name AS pet_name, owners.name AS owner  FROM pets  JOIN owners  ON pets.owner_id = owners.id;

您将得到如下表格,其中仅包括与主人有关的宠物和与宠物有关的主人。

宠物名称所有者
菲多约翰尼
小姐约翰尼
娘娘腔奥利
伊莱尼亚

SQL LEFT JOIN 示例

让我们执行相同的查询,LEFT JOIN以便您可以看到不同之处。除了添加LEFT关键字之外,查询是相同的。

SELECT pets.name AS pet_name, owners.name AS owner  FROM pets  LEFT JOIN owners  ON pets.owner_id = owners.id;

在这种情况下,左表中的行pets, 全部保留,当owners表中缺少数据时,用 填充NULL。

宠物名称所有者
菲多约翰尼
小姐约翰尼
娘娘腔奥利
伊莱尼亚
料斗

似乎有一只宠物没有在主人那里注册。

SQL 右连接示例

如果您使用 using 执行相同的查询RIGHT JOIN,则会得到不同的结果。

SELECT pets.name AS pet_name, owners.name AS owner  FROM pets  RIGHT JOIN owners  ON pets.owner_id = owners.id;

在这种情况下,右表中的所有行owners, 都被保留,如果有缺失值,则用 填充NULL。

宠物名称所有者
菲多约翰尼
小姐约翰尼
娘娘腔奥利
伊莱尼亚
路易丝

似乎有一个没有注册宠物的主人。

SQL 全连接示例

您可以再次执行相同的查询,使用FULL JOIN.

SELECT pets.name AS pet_name, owners.name AS owner  FROM pets  FULL JOIN owners  ON pets.owner_id = owners.id;

结果表再次不同--在这种情况下,两个表中的所有行都被保留。

宠物名称所有者
菲多约翰尼
小姐约翰尼
娘娘腔奥利
伊莱尼亚
料斗
路易丝

在我们的数据库中似乎有没有主人的宠物和没有宠物的主人。

关于"SQL的内连接和外连接怎么用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

宠物 数据 部分 约翰 约翰尼 两个 所有者 维恩 主人 关键 关键字 结果 名称 示例 语法 不同 圆圈 娘娘 娘娘腔 小姐 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖南发货单软件开发 小型服务器 知乎 北京新创互联网科技 有名的l2tp服务器托管 临沂商城软件开发哪家靠谱 英雄联盟技能无法连接到服务器 ip地址正确为什么连不上服务器 暗黑破坏神3总是和服务器断开 太原展厅触摸翻书软件开发公司 云顶改服务器 查看数据库实例是否开启 四川超频服务器销售厂 我的世界服务器添加管理员 伟为服务器管理端口 2022年软件开发考研 数据库语言有什么不同 山东电脑软件开发靠谱吗 qq邮件与服务器 大学生网络安全的监管机制 软件开发应用技术工程师考试 牟平区电商软件开发公司有哪些 河北标准软件开发服务咨询报价 英雄联盟技能无法连接到服务器 数据库如何建立外键联系 四川超频服务器销售厂 办公网络安全培训ppt模板 如何查看公司邮箱服务器密码 r720服务器远程管理 安装sql数据库流程 数据库试题B树计算题
0