【数据库技术】关系代数连接运算(等值连接/自然连接/外连接)

考点频率 :★★★★★(下午题必考,选择题常考,是关系代数中最重要的运算)

难度 :⭐⭐⭐⭐

建议:重点掌握三种连接的定义和区别,尤其是自然连接与等值连接的差异,以及外连接的三种形式

1️⃣ 为什么需要连接运算?

上一篇文章我们学了五种基本运算:选择、投影、并、差、笛卡尔积。其中笛卡尔积有一个大问题------它会把两张表的所有行两两组合,产生大量无意义的组合。

打个比方 :你有学生表和课程表,做笛卡尔积会得到"每个学生 × 每门课"的所有组合------包括学生选了这门课和没选这门课的。我们需要一种方法,只保留那些有意义的组合(比如只保留学生实际选了的课)。

连接运算 就是在笛卡尔积的基础上,加上连接条件 ,只保留满足条件的组合。它相当于:

连接=选择连接条件(笛卡尔积)\text{连接} = \text{选择}_{\text{连接条件}}(\text{笛卡尔积})连接=选择连接条件(笛卡尔积)

连接运算是关系代数中使用最频繁的运算,也是软考下午题必考的内容。

2️⃣ 等值连接(Equi-Join)

2.1 定义

等值连接 是在笛卡尔积的基础上,选择两个关系中指定属性值相等的元组。

符号 :R⋈R.A=S.BSR \Join_{R.A = S.B} SR⋈R.A=S.BS

2.2 关键特征

特征 说明
连接条件 使用 "=" 比较两个属性(属性名可以不同)
结果列数 两个关系列数之和(保留所有列)
重复列 保留重复列(两个表中的连接属性都会出现在结果中)

注意:等值连接只要求连接条件用"=",两个属性名可以不同,只要值类型相容即可。

2.3 示例

学生表 R:

学号 姓名 班级号
001 张三 101
002 李丽 102
003 王五 101

班级表 S:

班级编号 班级名称
101 计科1班
102 计科2班

等值连接 R⋈R.班级号=S.班级编号SR \Join_{R.班级号 = S.班级编号} SR⋈R.班级号=S.班级编号S:

学号 姓名 班级号 班级编号 班级名称
001 张三 101 101 计科1班
002 李丽 102 102 计科2班
003 王五 101 101 计科1班

注意:班级号 和 班级编号 两列都保留了,且值相等。

3️⃣ 自然连接(Natural Join)

3.1 定义

自然连接 是等值连接的一种特例。它要求:

  1. 两个关系必须有同名属性
  2. 在这个同名属性上做等值连接
  3. 结果中去掉重复的属性列

符号 :R⋈SR \Join SR⋈S(不写连接条件)

3.2 与等值连接的关键区别

这是软考选择题的高频考点,务必分清:

对比项 等值连接 自然连接
连接条件 必须指定(可以属性名不同) 自动在同名属性上连接
重复列 保留(两列都存在) 去除(只保留一列)
属性名要求 不要求同名 必须有同名属性
结果列数 两表列数之和 列数之和 - 同名属性数

一句话区分:等值连接保留重复列,自然连接去掉重复列。自然连接是等值连接的特例(有同名属性 + 去重)。

3.3 示例(与等值连接对比)

自然连接 R⋈SR \Join SR⋈S (假设同名属性为 班级号):

学号 姓名 班级号 班级名称
001 张三 101 计科1班
002 李丽 102 计科2班
003 王五 101 计科1班

注意:班级号 只出现一次(去掉了重复列),而等值连接中 班级号 和 班级编号 两列都存在。

4️⃣ 外连接(Outer Join)

4.1 为什么需要外连接?

等值连接和自然连接都只保留满足连接条件的元组。如果一个学生没有选课,或者一门课没有被任何学生选,这些元组就会被丢弃。

有时候我们需要保留不满足连接条件的元组------比如要查询"所有学生及其选课情况",没选课的学生也应该出现在结果中,只是课程信息为空。

4.2 三种外连接

类型 保留哪一方的未匹配元组 符号
左外连接(Left Outer Join) 保留左表中所有元组 R⋈ ⁣ ⁣ ⁣ ⁣ ⁣⊃SR \Join\!\!\!\!\!\supset SR⋈⊃S
右外连接(Right Outer Join) 保留右表中所有元组 R⊂ ⁣ ⁣ ⁣ ⁣ ⁣⋈SR \subset\!\!\!\!\!\Join SR⊂⋈S
全外连接(Full Outer Join) 保留两表中所有元组 R⋈ ⁣ ⁣ ⁣ ⁣ ⁣⋈SR \Join\!\!\!\!\!\Join SR⋈⋈S

记忆技巧 :左外连接 = 左表全要 (右边的没有就填NULL);右外连接 = 右表全要 ;全外连接 = 两边全要。

4.3 示例

选课表 R:

学号 课程号
001 C01
001 C02
003 C01
004 C03

课程表 S:

课程号 课程名
C01 数学
C02 语文
C03 英语
C04 物理

左外连接 R⋈ ⁣ ⁣ ⁣ ⁣ ⁣⊃SR \Join\!\!\!\!\!\supset SR⋈⊃S(保留选课表全部):

学号 课程号 课程名
001 C01 数学
001 C02 语文
003 C01 数学
004 C03 英语

右外连接 R⊂ ⁣ ⁣ ⁣ ⁣ ⁣⋈SR \subset\!\!\!\!\!\Join SR⊂⋈S(保留课程表全部):

学号 课程号 课程名
001 C01 数学
001 C02 语文
003 C01 数学
004 C03 英语
NULL C04 物理

注意:物理课没有被任何学生选,在右外连接中保留,学号填NULL。

5️⃣ 五种连接操作全景对比表(重点!)

对比项 笛卡尔积 等值连接 自然连接 外连接
是否有连接条件 无 有(指定属性相等) 有(同名属性自动相等) 有
是否去重 否 否 是(同名属性只保留一列) 否
是否保留未匹配元组 是(所有组合) 否 否 是(部分/全部)
结果列数 列数之和 列数之和 列数和 - 同名属性数 列数之和
软考考频 ★★★☆☆ ★★★★★ ★★★★★ ★★★★☆

6️⃣ 经典例题

例题1 :设有两个关系 R(A,B,C)R(A, B, C)R(A,B,C) 和 S(B,C,D)S(B, C, D)S(B,C,D),自然连接 R⋈SR \Join SR⋈S 的结果关系有几个属性?

A. 3

B. 4

C. 5

D. 6

解析 :R有3个属性,S有3个属性,同名属性为B和C(2个),结果属性数 = 3 + 3 - 2 = 4。选 B。


例题2:下列关于等值连接和自然连接的叙述中,正确的是( )。

A. 自然连接一定包含等值连接的结果

B. 等值连接必须在同名属性上进行

C. 自然连接会自动去除重复列

D. 等值连接的结果中不会出现重复列

解析 :A错误------自然连接的前提是必须有同名属性;B错误------等值连接可以在不同名 的属性上进行;D错误------等值连接保留所有列 ,可能有重复列。C正确。选 C。


例题3(判断):左外连接的结果中,左表的所有元组都会出现,右表中未匹配的元组不会出现。( )

解析:正确。左外连接保留左表全部,右表只保留匹配的元组;右表未匹配的元组不会出现在结果中。

7️⃣ 记忆口诀

等值连接指定条件,同名异名都能连。

自然连接同名连,去除重复留一边。

外连接分左右全,未匹配的不丢弃。

8️⃣ 小测验(评论区对答案)

设有关系 R(A,B)R(A, B)R(A,B) 和 S(B,C)S(B, C)S(B,C),自然连接 R⋈SR \Join SR⋈S 与等值连接 R⋈R.B=S.BSR \Join_{R.B = S.B} SR⋈R.B=S.BS 的结果相比,( )。

A. 两者的结果完全相同

B. 自然连接结果中B列只出现一次,等值连接中B列出现两次

C. 自然连接结果中B列出现两次,等值连接中B列只出现一次

D. 两者结果的行数不同

🔔 本专栏日更,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容

#软考中级 #软件设计师 #关系代数 #等值连接 #自然连接 #外连接 #数据库技术基础 #软考备考

相关推荐
禾小西25 分钟前
Redis 数据结构:快速的 Redis 有哪些慢操作?
数据结构·数据库·redis
weixin_4481199426 分钟前
Datawhale Easy Data × AI:笔记1 已重做,看新的笔记
笔记
数据库小学妹40 分钟前
数据共享交换平台选型:交换方式对比与避坑指南
数据库·信创·数据同步·数据交换平台·政务数据共享·数据共享交换平台·数据库底座
要开心吖ZSH1 小时前
MySQL 慢 SQL 排查操作手册-个人笔记版
java·笔记·sql·mysql·慢查询
咖啡忍者2 小时前
【SAP】程制造生产计划PP-PI(Production Planning for Process Industries)
笔记
loong_XL2 小时前
决策模型做内容安全检测:从踩坑到上线
数据库·安全·jev·决策模型
这个DBA有点耶2 小时前
数据库双轨并行实战:全量并行策略、增量延迟控制、双向回切与一致性校验
数据库·架构·dba
adinnet20263 小时前
保单、赔付与渠道问数:保险经营数据如何实现按需查询
大数据·数据库·人工智能
Titan20243 小时前
MySQL索引学习笔记
笔记·学习·mysql
云贝贝贝3 小时前
PostgreSQL 分区表:从设计到运维,大表不再卡
运维·数据库·postgresql