关系代数
并、差、交
投影选择
笛卡尔积、连接
重命名
什么是关系代数
是一种抽象的数据查询语言
用对关系的运算来表达查询
关系运算符分类
传统的集合运算符
U-N
把关系看成元组的集合
所有运算对象必须具有相同的结构
专门的关系运算符
选择和投影 σ π
笛卡尔积,连接 x ⋈
重命名 ρ
辅助专门的关系运算符
比较运算符 < <= > >= = < >
逻辑运算符 ┌ ∧ ∨(非与或)
传统的集合运算(交并差)
先决条件
R 和S 的属性个数必须相同
对应属性必须取自同一个域
R U
S
并(union)
结果由属于R或属于S的所有元组组成
R ∩
S
- 交(intersection),结果由既属于R又属于S的元组组成
R –
S
- 差(difference),结果由属于R而不属于S的所有元组组成
专门的关系运算符
投影和选择
投影(projection)
- 用于从R中选择出若干属性列组成新的关系(默认去重)
L为R中的属性列表
结果为只包含R中某些列的新的关系
结果要去掉重复元组
语法
-- 数据库的下标是从1开始的
π[列名1,...,列名n]|[列名下标1,...,列名下标n](表名)
选择(Selection)
- 用于在关系R中选择满足给定条件的各个元组
C:选择条件,是一个逻辑表达式
结果为只包含R中某些元组的新的关系
语法
-- σ5 ='IS' (Student)
σ[列名1,...,列名n]|[列名下标1,...,列名下标n]=[你的条件值](表名)
笛卡尔积和连接
笛卡尔积(Product)
R关系: n个属性, k1个元组
S关系: m个属性, k2个元组
R x S
将R中的每个元组t1和S中的每个元组t2配对连接
列数: n+m
前n列是关系R的一个元组t1
后m列是关系S的一个元组t2
行数:k1× k2
当R和S中有重名属性A时,则采用R.A和S.A分别命名对应的属性列
连接(Join)
连接也称为θ连接
R ⋈ S
A θ B
A和B:分别为R和S上度数相等且可比的属性组
θ:比较运算符
连接运算从R和S的笛卡尔积R× S中选取(R关系)在A属性组上的
值与(S关系)在B属性组上值满足比较条件的元组
两类常用的等值连接
等值连接
什么是等值连接
- θ为“=”的连接运算称为等值连接
R ⋈ S
- A=B
等值连接的含义
- 从关系R与S的笛卡尔积中选取A、 B属性值相等的那些元组
自然连接
自然连接是在公共属性(组)上进行的等值连接
两个关系中必须具有公共属性(组)
在结果中把重复的属性列去掉
R ⋈ S
重命名ρ
ρS (A1,…,An)(R)
将关系R重命名为S
将关系S中的各属性命名为A1,A2…An
语法
-- ρS (A1,…,An)(R)
ρ新表名(列名1,...,列名n)(原表名))