版权声明:本文为博主原创,未经博主允许不得转载。 https://blog.csdn.net/weixin_36904568/article/details/89508800
一:查询
1:查询语言的组成
- 关系代数
- 元组关系演算
- 域关系演算
2:关系代数——过程化语言
1. 关系运算
(1)基本运算
选择 Select——元组
根据选择谓词p在关系R中查找元组,用σp( R )表示
选择谓词
- 选择连词:与∧,或∨,非¬
- 包含比较符的表达式
投影 Project——属性
根据保留属性A在关系R中保留属性,并去除重复元组,用ΠA1,A2…AN( R )
广义投影
允许在投影列表中使用算术函数来操作属性,用Π算术函数( R )表示
并 Union——元组集
合并两个同种属性的关系,用R∪S表示
- 属性数量相同
- 属性域相同
差 Difference——元组集
去除另一个关系中出现的同样的元组,用R-S表示
- 属性数量相同
- 属性域相同
笛卡尔积 Product——大关系
合并两个关系的所有元组和属性,用R×S表示
- 两个关系的属性没有交集
- 如果有交集,重命名两个关系的相同属性
(2)复合运算
五种基本运算的复合运算
交 Intersection(R - (R-S))——元组集
获取两个关系的同种属性的公共部分,用R⌒S表示。
- 属性数量相同
- 属性域相同
自然连接 Join(ΠA,B…(σR.A=S.A(R×S)))——特定大关系
获取两个关系的同种属性并且属性值相同的部分,并去除重名元组,用R∞S表示
- 属性名相同
- 属性域相同
- 属性值相同
扩展连接 Join
由用户指定连接条件,用R∞θS表示
外连接 Out Join
保留自然连接中某一侧关系不匹配的元组,引入空值
- 左外连接,如果R关系中有一元组没有对应信息,则保留该元组,该信息为null
- 右外连接,如果S关系中有一元组没有对应信息,则保留该元组,该信息为null
- 全外连接,如果R关系或S关系中有一元组没有对应信息,则保留该元组,该信息为null
除 Division——属性
找到包含另一个关系中所有元组集的元组集合并去除其属性,用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 )