学习数据库(3)——关系代数

版权声明:本文为博主原创,未经博主允许不得转载。 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表示

  1. 如果R(A1,A2),B(A2)
  2. 对R的属性A1进行分组
  3. 在分组中,寻找包含了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. 优先级

  1. 投影
  2. 选择
  3. 笛卡尔积
  4. 连接、除
  5. 并、差

4. 运算方法

  • 先进行选择,再进行笛卡尔积,可以减少开销
  • 对于“所有”、“全部”,一般使用除法

二:修改

1:赋值操作

把查询表达为顺序程序,把结果赋给临时关系变量。用temp←查询表达式 表达

2:修改的操作

1. 删除

  1. 通过查询找到目标
  2. 通过差操作移除目标元组
    R ← R - (E)
  3. 级联删除其他关系的元组

2. 插入

  1. 通过查询找到目标
  2. 通过并操作合并目标元组
    R ← R ∪ (E)

3. 更新

  1. 通过查询找到目标
  2. 通过广义投影操作修改目标元组
    R ← Π算术函数 ( R )

猜你喜欢

转载自blog.csdn.net/weixin_36904568/article/details/89508800