文章目录
6.1关系代数
- 一种过程化查询语言
- 包括一个运算的集合,以一个或两个关系为输入,产生一个新的关系作为结果
6.1.1 基本运算
选择运算
sigma(σ)
表示选择,将谓词写作σ的下标,参数关系写在括号中- 谓词的比较: > , = , < , ≤ , ≥ , ≠ >,=,<,≤,≥,\neq >,=,<,≤,≥,=
- 连词:or(⋁),and(⋀),not( ¬ \neg ¬ )
投影运算
- 返回作为参数的关系,但把某些属性排除在外
- 所有重复行均被去除
pi(Π)
,希望在结果中出现的属性作为下标,参数关系在括号中
并运算
r∪s
:- 两关系必须同元,即属性数目必须相同
- 对所有的i,r的第i个属性必须和s的第i个属性域相同
差运算-
- 在一个关系中而不在另一个关系中的元组
- 保证在相容的关系间进行
笛卡尔积运算
更名运算
rho(ρ)
附加的关系代数运算
用于简化常用的查询
交运算
自然连接运算
- A ⋈ B A \Join B A⋈B
- 首先形成他的参数的笛卡尔积,然后基于两个关系模式中都出现的属性上的相等性进行选择,最后去除重复属性
- 自然连接是可结合的
- theta连接:
- 把一个选择运算和一个笛卡尔积运算合并为单独的一个运算
- r ⋈ θ s = σ θ ( r × s ) r \Join_{\theta} s=\sigma_{\theta} (r \times s) r⋈θs=σθ(r×s)
赋值运算
- ⬅:将右侧的表达式的结果赋给左侧的关系变量
外连接运算
左外连接、右外连接、全外连接
关于null
扩展的关系代数运算
广义投影运算
- 允许在投影列表中使用算术运算符和字符串函数等来对投影进行扩展
聚集
- 聚集函数:是对输入值的一个汇集,将单一值作为结果返回
- 去重
distinct
:附加在函数名后 - 可以使用更名运算,将其看作聚合操作的一部分
多重集关系代数:
sql与关系代数:
元组关系演算
- 非过程化的查询语言
- 查询表达:
{t|P(t)}
- 是所有使谓词P为真的元组t的集合
- 用t[A]表示元组t在属性A上的值
- 用t∈r表示元组t在关系r中
查询示例
形式化定义
- 自由变量:元组变量不被
∃
\exists
∃或
∀
\forall
∀修饰,否则称为受限变量
表达式的安全性
语言的表达能力