一:基本概念
1. 关系操作的特点
操作对象和操作结果都是集合,而不是一个记录
2. 关系数据语言的分类:
- 关系代数语言
- 关系演算语言
- 元组关系演算
- 域关系演算
- 关系代数语言+关系演算语言(SQL)
3. 关系代数运算符
- 集合运算符:并∪,交∩,差-,笛卡尔积×
- 关系运算符:选择σ,投影Π,连接∞,除÷
- 算术比较符:>,>=,<,<=,=,≠
- 逻辑运算符:与∧,或∨,非¬
二:关系代数运算——过程化语言
查询
1. 关系运算
(1)基本运算
选择 Select——元组
根据选择谓词p在关系R中查找元组,用σp( R )表示
选择谓词:
- 对象:属性名或属性序号、常数
- 连接符:逻辑运算符、算术比较符
投影 Project——属性
在关系R中保留属性A,并去除重复元组,用ΠA1,A2…AN( R )
广义投影
允许在投影列表中使用算术函数来操作属性,用Π算术函数( R )表示
并 Union——元组集
合并两个同元的关系,用R∪S表示
- 属性数量相同
- 属性域相同
差 Difference——元组集
去除另一个同元关系中出现的同样的元组,用R-S表示
- 属性数量相同
- 属性域相同
笛卡尔积 Product——大关系
对于M目关系R(T1个元组)和N目关系S(T2个元组),合并两个关系的所有元组和属性形成(M+N)目关系(T1×T2个元组),用R×S表示
- 两个关系的属性没有交集
- 如果有交集,重命名两个关系的相同属性
(2)复合运算
五种基本运算的复合运算
交 Intersection(R - (R-S))——元组集
获取两个同元关系的公共部分,用R⌒S表示。
- 属性数量相同
- 属性域相同
连接 Join——特定大关系
Θ连接(σp(R×S))
在R和S的笛卡尔积中,选择属性组R.A和S.B满足一定条件Θ的元组集合,用R ⋈AΘB S表示
等值连接(σp(R×S))
当Θ为‘=’时,Θ连接也是等值连接,用R ⋈A=B S表示
自然连接 (ΠA,B…(σp(R×S)))
在等值连接中,两个相互比较的A和B为相同属性组,并去除重复属性列,用R ⋈ S表示
- 属性名相同
- 属性域相同
- 属性值相同
外连接 Out Join
保留自然连接中某一侧关系不匹配的元组,引入空值
- 左外连接,如果R关系中有一元组没有对应信息,则保留该元组,该信息为null。用R⋊S表示
- 右外连接,如果S关系中有一元组没有对应信息,则保留该元组,该信息为null,用R⋉S表
- 全外连接,如果R关系或S关系中有一元组没有对应信息,则保留该元组,该信息为null
除 Division——属性
找到包含另一个关系中所有元组集T的元组集合并去除属性列T,用R÷S表示
- 如果R(A1,A2),B(A2)
- 对R的属性A1进行分组
- 在分组中,寻找包含了B出现的元组集合
- q是q×s包含于关系r中的最大子集
(3)其他运算
更名运算 Rename
使用其他名字指代关系或者属性,用ρname(A1,A2…AN)( R )表示
(4)扩展运算
聚集函数:输入属性值的集合,根据分组属性进行分组并计算,返回单一值
- avg:平均值
- min:最小值
- max:最大值
- sum:值的总和
- count:值的数量
聚集函数的运算表示:(分组属性G)默认全部属性 g (函数F(A))as新属性名(关系R)
(5)多重集
默认的关系模式中,关系是一个集合,不会出现重复元组。可以用多重集来重新定义关系运算
- 选择:σp( R1 ),如果R1中有多个重复元组并且满足条件p,则都会被选择
- 投影:ΠA( R1 ),如果R1中的属性A有多个重复属性值,则都会被投影
- 笛卡尔积:R1×R2,如果R1有A个重复元组,R2中有B个重复元组,那么总共会有A×B个重复元组
2. 特点
- 并、交、差:为双目、等目同元运算
- 笛卡尔积、自然连接、除:双目运算
- 投影、选择为单运算
3. 优先级
- 投影
- 选择
- 笛卡尔积
- 连接、除
- 交
- 并、差
4. 运算方法
- 先进行选择,再进行笛卡尔积,可以减少开销
- 对于“所有”、“全部”,一般使用除法
修改
1. 赋值操作
把查询表达为顺序程序,把结果赋给临时关系变量。用temp←查询表达式 表达
2. 修改操作
(1)删除
- 通过查询找到目标
- 通过差操作移除目标元组
R ← R - (E) - 级联删除其他关系的元组
(2)插入
- 通过查询找到目标
- 通过并操作合并目标元组
R ← R ∪ (E)
(3)更新
- 通过查询找到目标
- 通过广义投影操作修改目标元组
R ← Π算术函数 ( R )