1. 基本的关系操作
<aside>
📖 常用的关系操作
- 查询操作
- 数据更新
- 关系操作的特点
- 集合操作方式:操作的对象和结果都是集合,一次一集合的方式
</aside>
2. 关系代数
<aside>
📖 关系代数
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询
- 运算对象是关系
- 运算结果亦为关系
- 关系代数的运算符有两类:集合运算符和专门的关系运算符
- 传统的集合运算是从关系的“水平”方向即行的角度进行
- 专门的关系运算不仅涉及行而且涉及列
</aside>
<aside>
📖 记号
- $t\in R$ 表示t是R的一个元组
- $t[A_i]$ 表示元组t中相应于属性$A_i$的一个分量
- $t[A] = (t[A_i1],t[A_i2],…,t[A_ik])$表示元组t在属性列A上诸分量的集合
- $\bar A$ 则表示……中去掉……后剩余的属性组
- $\overset{\large\frown}{t_r t_s}$ 元组的连接,是一个n + m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
- 象集 $Z_x$ 表示R中属性组X上值为x的诸元组在Z上分量的集合
</aside>
<aside>
📖 选择 Selection
选择(Selection)又称为限制(Restriction)
- 选择运算符的含义:在关系R中选择满足给定条件的诸元组
$$
⁍
$$
- $F$:选择条件,是一个逻辑表达式,取值为“真”或“假”
- 基本形式为:$*X_1θY_2$,*θ表示比较运算符,它可以是>,≥,<,≤,=或<>
- 在基本的选择条件上可以进一步进行逻辑运算(与,或,非)
选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算
</aside>
<aside>
📖 投影 Projection
从R中选择出若干属性列组成新的关系
$$
\Pi_A(R)=\{t[A]|t\in R\}
$$
- $A$: R中的属性列
- 投影操作主要是从列的角度进行运算
- 投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
</aside>
<aside>
📖 连接 Join
连接(Join)也称为θ连接
是从两个关系的笛卡尔积中选取属性间满足一定条件的元组
$$
R\underset{A\theta B}\bowtie S = \{\overset{\large\frown}{t_r t_s} | t_r ∈ R∧t_s ∈S∧t_r[A]~θ~t_s[B] \}
$$
- A和B:分别为R和S上度数相等且可比的属性组
- θ:比较运算符
- 连接运算从R和S的广义笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组
$$
A\bowtie_\theta B=\sigma_\theta{(A\times B)}
$$
- 等值连接(equijoin)
- 自然连接(Natural join):一种特殊的等值连接
</aside>
<aside>
📖 悬浮元组(Dangling tuple)
- 两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组。
</aside>
<aside>
📖 外连接(Outer Join)
- 如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
- 左外连接(LEFT OUTER JOIN或LEFT JOIN)
- 右外连接(RIGHT OUTER JOIN或RIGHT JOIN)