数据库的关系代数
关系就是表
属性(Attribute)是关系中的列.例如,关系 “学生” 中可能有属性 “学号”、“姓名”、“班级”。
元组(Tuple)是关系中的一行数据
1. 基本运算符
-
选择(Selection)
-
符号:σ
-
作用:从关系中选择满足特定条件的元组(行)。
-
示例:σ_{age>30}(Student) 表示从Student表中选择年龄大于30的学生。
-
-
投影(Projection)
-
符号:π
-
作用:从关系中选择特定的属性(列)。
-
示例:π_{name, age}(Student) 表示从Student表中选择姓名和年龄两列。
-
选择和投影配合使用(重点)
在选择运算的基础上,把需要符合条件的通过投影运算查询出来
-
并集(Union)
-
符号:∪
-
作用:将两个关系的元组合并,去除重复元组。
-
条件:两张表格的元一样(两张表格列数一样)
-
示例:R ∪ S 表示将关系R和S的元组合并。
-
-
差集(Difference)
-
符号:-
-
作用:从一个关系中去除与另一个关系相同的元组。
-
条件:两个表格列数一样,两个表格的属性都相同,两个表进行了差运算之后,都仍然是n列
-
示例:
S-R
表:S表
中有任意一个元组和R表
的一样,S表
就去掉这个元组R-S
表:R表
中有任意一个元组和S表
的一样,R表
就去掉这个元组简言之:就是一张表,嫌弃另外一张表,我身上有那里和你一样,我改还不行嘛!
-
-
笛卡尔积(Cartesian Product)
-
符号:×
-
作用:将两个关系的元组进行组合,生成一个新的关系。
-
条件:没有任何使用限制,万物皆可笛卡尔积。
-
示例:R × S 表示关系R和S的笛卡尔积,结果中的每个元组是R和S元组的组合。
-
R表
:n元
关系,k1
个元组(k1行,n列
)
S表
:m元
关系,k2
个元组(k2行,m列
)
R表
和S表
进行笛卡尔积得到一个
(k1 * k2)元
,(n + m)
列的新表,如下
2. 扩展运算符
-
交(Intersection)
-
符号:∩
-
作用:找出两个关系中共同的元组。
-
条件:表格的列数相同,表格的属性都相同
-
示例:R ∩ S 表示既在关系R中又在关系S中的元组。
-
-
连接(Join)
-
符号:⨝
-
作用:从两个关系的笛卡尔积中选择属性之间满足一定关系的元组(在两张表的笛卡尔积后得到的那张大表中再次选取一些符合我们条件的元组)
-
类型:
-
自然连接(Natural Join):基于相同属性名的等值连接。
-
外连接(Outer Join):包括未匹配的元组。
- 左外连接(Left Outer Join):保留左表的所有元组,即使右表中没有匹配的元组。
- 右外连接(Right Outer Join):保留右表的所有元组,即使左表中没有匹配的元
- 全外连接(Full Outer Join):保留左右表的所有元组。
-
-
示例:R ⨝ S 表示关系R和S的自然连接。
-
-
除(Division)
-
符号:÷
-
作用:找出满足特定条件的所有元组。
-
示例:R ÷ S 表示在关系R中满足与关系S中所有元组相关的元组。
-