一种抽象查询语言,用运算对象是关系的表达,结果也是关系。一般有以下两种↓
- 集合运算:集合运算是从关系的水平方向即行的角度进行
- 专门的关系运算:专门的关系运算不仅涉及行并且涉及列
两者的运算符号如下:
传统的集合运算
并
R和S两个表都有n个属性,相应的属性都取自于同一个域。结果就是把两个表合并起来了。$$
R \cup S = { t \mid t \in R \lor t \in S }
$$ 如图会进行一个查重的操作 ### 差 R-S就是R有但是把S的删去了。$$
R - S = { t \mid t \in R \land t \notin S }
$$### 交 R和S都有的才留下来成表。$$
R \cap S = { t \mid t \in R \land t \in S }
$$交运算也可以通过并运算和差运算推导得出: $$
R \cap S = R - (R - S)
$$### 笛卡尔积 笛卡尔积可以两个表属性不同。 - R:n列,$k_1$行 - S:m列,$k_2$行 $$
R \times S = { \overbrace{t_r t_s} \mid t_r \in R \land t_s \in S }
$$结果是$k_1 * k_2$个元组,n+m列  ## 专门的关系运算 **相关记号说明:** - ① 关系模式为 $R(A_1, A_2, \dots, A_n)$,它的一个关系为 $R$,$t \in R$ 表示 $t$ 是 $R$ 的一个元组。$t[A_i]$ 则表示元组 $t$ 中相应于属性 $A_i$ 的一个分量。 - ② 若 $A = \{A_{i_1}, A_{i_2}, \dots, A_{i_k}\}$,其中 $A_{i_1}, A_{i_2}, \dots, A_{i_k}$ 是 $A_1, A_2, \dots, A_n$ 中的一部分,则 $A$ 称为属性列或属性组。 - $t[A] = (t[A_{i_1}], t[A_{i_2}], \dots, t[A_{i_k}])$ 表示元组 $t$ 在属性列上诸分量的集合。$\overline{A}$ 则表示 $\{A_1, A_2, \dots, A_n\}$ 中去掉 $\{A_{i_1}, A_{i_2}, \dots, A_{i_k}\}$ 后剩余的属性组。 - ③ $R$ 为 $n$ 目关系,$S$ 为 $m$ 目关系,$t_r \in R$,$t_s \in S$,$\overset{\frown}{t_r t_s}$ 称为元组的连接。$\overset{\frown}{t_r t_s}$ 是一个 $n+m$ 列的元组,前 $n$ 个分量为 $R$ 中的一个 $n$ 元组,后 $m$ 个分量为 $S$ 中的一个 $m$ 元组。 (笛卡尔积) $$
选择
选择符合条件的行
$$\sigma_F(R) = \{ t \mid t \in R \land F(t) = '真' \} $$
其中: $F$ 为选择条件,而R就是要选择的表。其中F的基本形式为:
$$ X_1 \theta Y_1 $$
其中,$\theta$ 表示比较运算符,它可以是 $>$,$\geqslant$,$<$,$\leqslant$,$<>$。 $X_1$,$Y_1$ 等是属性名,或为常量,或为简单函数;属性用它的序号来代替。比如Age<18不能看某些东西。例题:

投影
选择列
$$\pi_A(R) = \{ t[A] \mid t \in R \} $$
这里的A就是选择哪个属性(哪一列)R就是哪个表,最终显示的是不重复的记录
例题
连接
表示两个关系的笛卡尔积中选取属性间满足一定条件的元组。
$$ R \underset{A\theta B}{\bowtie} S = \left\{ \overset{\frown}{t_r t_s} \mid t_r \in R \land t_s \in S \land t_r[A] \theta t_s[B] \right\} $$
$A$ 和 $B$:分别为 $R$ 和 $S$ 上度数相等且可比的属性组。 $\theta$:比较运算符。自然连接(Natural join) 自然连接是一种特殊的等值连接,两个关系中进行比较的分量必须是相同属性组,在结果中把重复的属性列去掉。 自然连接的含义:$R$ 和 $S$ 具有相同的属性组 $B$。
$$ R \bowtie S = \left\{ \overset{\frown}{t_r t_s} \mid t_r \in R \land t_s \in S \land t_r[B] = t_s[B] \right\} $$
例题:
- 悬浮元组:两个关系 $R$ 和 $S$ 在自然连接时,关系 $R$ 和 $S$ 中被舍弃的元组称为悬浮元组。
- 外连接:如果把悬浮元组(被舍弃的元组)也保存在结果关系中,在其他属性上填空值($\text{Null}$),这种连接就叫做外连接($\text{JOIN}$)。
绿色的就是悬浮元组,外连接就是把这个东西连到结果上去。 - 左外连接:如果只保留左边关系 $R$ 中的悬浮元组叫做左外连接($\text{LEFT OUTER JOIN}$ 或 $\text{LEFT JOIN}$)。
- 右外连接:如果只保留右边关系 $S$ 中的悬浮元组叫做右外连接($\text{RIGHT OUTER JOIN}$ 或 $\text{RIGHT JOIN}$)。

除
除的概念直接看容易看不懂,我们直接看公式和例题
$$ R \div S = \{ t_r[X] \mid t_r \in R \land \pi_Y(S) \subseteq Y_{t_r[X]} \} $$
例题

其实就是找R和S都有的属性,接着找属性A的象集,如果该象集包含S中BC全部的话,那么就输出该属性A的值。

说些什么吧!