数据库系统原理---扩展运算及空值
扩展关系代数运算
扩展运算的三个组成部分分别是
- 广义投影
- 聚集函数
- 外连接
广义投影
基本的投影是在所操作的关系内保留一些属性,形成新的关系,而广义投影是在投影过程中可以进行函数运算,举一个例子,有一个学生关系S={姓名,出生年月,学号},我们想得到新的学生关系之中,含有年纪,那我们可以使用广义投影,在投影过程中用现在时间减去出生年月,可以得到年龄
聚集函数
聚集函数是指函数的输入是一个集合,一个属性里面所有值的集合,然后返回值是单一的,下面是一些聚集函数
- avg:平均值
- sum:求和
- max:最大值
- min:最小值
- count:统计多少个输入值
可以看到上面的聚集函数输入都是多值,输出都只有一个值 - E是指关系
- G1,G2,G3,……,Gn是属性,把属性值相同的分一组,聚集函数就作用在每一组上。
- F()是聚集函数
- A是属性
把关系r的C求平均
把关系中属性A分组,对每一组中的C求和
把关系B中属性B分组,对每一组中的C求平均
聚集函数用处很多,可以在学生选课表中用来选择一个学生的所有成绩的平均分,绩点等等之类的
外连接
在自然连接中,我们会把两关系笛卡尔积之后相同属性值不相同的元组去除,而外连接作为自然连接的补充,可以不用去除那些多余的元组。
-
左外连接:指的是左边的表的多余元组在笛卡尔积之后不用去除
-
右外连接:指的是右边的表的多余元组在笛卡尔积之后不用去除
-
对于左外连接出现了空值,我们用null来表示
空值 -
元组的某些属性值可以为空
-
null表示的是未知值或值不存在
-
涉及空的算术运算表达式的结果为空
-
聚集函数有空值为例外,不会结果为空,而是会忽略
-
为了消除重复和分组,空值和其它值同等对待
-
与空值相比较会返回一个特殊值叫:unknown
unkonw是介于true和false之间的一个状态,看下面的图表
数据库的修改
数据库的内容可以使用下面的操作来修改:
- 删除
- 插入
- 更新
所有这些操作都可以使用赋值操作表示
第一个–删除
-
删除请求的表达与查询的表达非常相似,不同的是,前者不是要将找出的元组显示给用户,而是将它们从数据库中去除
-
这样只能将元组整个地删除,而不能仅删除某些属性上的值
-
使用关系代数,删除可表达为:
r -E → r
其中r是指关系,E是指查询出来的元组第二个运算–插入
-
为了将数据插入关系中:
要么指明一个要插入的元组
要么写出一个查询,其结果是要插入的元组集合
第三个运算–更新 -
某些情况下,可能只希望改变元组中的某个值,而不希望改变元组中的所有制
-
可以用广义投影运算来完成这个任务:
-
-