三、关系代数

2.关系代数的基本操作

7.交(Intersection,∩)

R ∩ S

返回同时属于关系 R 和关系 S 的所有元组。要求:R 和 S 的属性必须相同。

8.自然连接(natural-join,⋈)

把两个关系(表)在所有同名属性上做等值匹配,然后把匹配上的元组合并成一行,公共属性只保留一列。它自动找出“公共列”并据此连接

9.除  (division, ÷)

r÷s

关系 s 的属性是关系 r 的属性的真子集(即 s⊂r,并且 r 有至少一个额外的属性)。运算结果的属性 = rrr 的所有属性 – sss 的所有属性。

结果包含的是 rrr 中那些和 sss 里所有元组都关联的属性值

10.赋值运算符 (Assignment Operator, ←)

T←E

T:临时变量(类似编程里的变量名)

E:任意关系代数表达式

把某个复杂查询的中间结果保存到一个临时关系中,以便后续继续使用。

赋值运算不改变数据库中的原始关系,只是产生一个临时的“命名结果”。目的是让复杂的查询分步骤表达,更清晰可读。后续可以用这个临时变量继续做投影、选择、集合运算等。

11.广义投影 (Generalized Projection)

πF1​,F2​,…,Fn​​(E)

E:任意关系代数表达式

Fi​:算术表达式,基于属性和常量,可以包含:加(+),减(-),乘(×),除 (÷)。

结果是一个新关系,包含计算后的属性。

eg:πID,name,salary÷12​(Instructor)

12.聚集 (Aggregate Functions)

G1​,G2​,…,Gn​gF1​(A1​),F2​(A2​),…,Fm​(Am​)(E)

E:一个关系代数表达式(输入关系)

G1​,G2​,…,Gn​:分组属性(可以没有)

Fi​:聚集函数

Ai​:应用聚集函数的属性

聚集函数:以值是一个集合为输入、返回单个值的函数。

avg:平均值

min:最小值

max:最大值

sum:求和

count:计数(行数)

聚集运算中 null 值不会被计算(除了 count

13.外连接 (Outer Join)

外连接为自然连接的扩展,为了避免信息的丢失

计算连接,然后将一个关系中与另一个关系中的元组不匹配的元组添加到连 接的结果中。

左外连接⟕

保留左边关系中的所有元组。

如果右边没有匹配,就用 null 填充

右外连接⟖

保留右边关系中的所有元组。

如果左边没有匹配,就用 null 填充。

全外连接⟗

左外连接 + 右外连接的结合。

保留两边所有元组,如果没有匹配就用 null 补齐。

14.空值null

算术运算:任何涉及 null 的运算,结果都是 null。

聚集函数:自动忽略 null 值。

15.删除 (Deletion)

目的:从关系中移除符合条件的元组。

语法:

r  ←  r−E

r:要操作的关系

E:一个关系代数表达式,表示要删除的元组集

只能删除整行元组,不能只删某个属性的值。

16.插入 (Insertion)

向关系中添加新的元组。

r  ←  r∪E

E:一个关系代数表达式,返回要插入的元组集合。

插入单个元组:让 EEE 是一个常量关系。

插入多个元组:让 EEE 是查询结果。

17.更新 (Updating)

修改已有元组中的部分属性值

广义投影 (π) 重新构造出新的关系,并用赋值符号覆盖原关系

r←πF1​,F2​,…,Fn​​(r)

Fi​:要更新的属性表达式(未更新的属性保持不变)。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐