每个关系运算将一到两个关系做为输入,并产生一个新关系做为输出。
关系运算主要有:
(1)并运算(Union):关系R和S具有相同的属性及域,它们的并运算将产生一个新关系,新关系具有和R,S相同的数据及域,新关系中包含R,S中所有元组(不重复)。记作:R ∪S
(2)交运算(Intersect): 关系R和S具有相同的属性及域,它们的交运算将产生一个新关系,新关系具有和R,S相同的数据及域,新关系包含同时出现在R,S中的元组。记作:
R ∩ S
(3)差运算(Difference):关系R和S具有相同的属性及域,它们的差运算将产生一个新关系,新关系具有和R,S相同的数据及域,新关系包含所有属于R但不属于S的元组。记作:R-S
(4)笛卡尔积(Product):设关系R为n列,k1行,关系S为m列,k2行,则关系R和S的笛卡尔积,是R中每个元组和S中每个元组连接产生的新关系。记作:R×S
注:新关系中属性的个数为n+m,元组的个数为k1×k2.
(5)除运算(Divide):
R ÷ S步骤:
1. 判断除法运算后关系的属性结构:
为R的关系属性与S的关系属性做差运算。
2. 针对步骤1获取的属性,找出属性在关系R中的取值情况:
R中所有取值情况
3.计算每种取值在关系R上的象集:
R上的象集:象集属性由关系R和关系S的交集组成
4. 计算关系R和S的属性交集在关系S上的取值情况:
属性交集在关系S上的取值情况
注:(当提出查询“全部”、“所有”、“至少”这样的关键字时可以考虑使用除法)
5. 判断哪个象集包含了步骤4的结果,则该取值满足结果:
即R上的象集属性值包含了步骤4的结果,就是R ÷ S(属性为步骤一)
注:当提出查询“全部”,“所有”,“至少”这样的关键字时可以考虑使用除法解决。
(6)选择运算
选择操作符是根据某个条件从给定的关系中抽取指定的元组或行。
σDepName= 'IS' AND StuAge < 20(Student)
(相当于where子句)
(7) 投影运算
投影操作符是给定关系中抽取指定的属性和列。删去某些元组(避免重复行)
πStuName,DepName(Student)
(相当于select子句)
(8)连接运算
连接运算符从两个指定的关系构建一个关系。此关系包括两个关系中满足指定条件的元组的所有可能组合。
自然连接还需要取消重复列
注:(能匹配的则匹配,匹配不上的不出现在结果集;连接运算最耗费代价,应以尽量少的数据参与连接运算)