关系代数是—种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。个人认为屁用没有,纯纯为了考试而学。
关系代数包含两类运算:关系运算的运算对象是关系,运算结果也是关系。
- 传统的集合运算:如并、交、差、笛卡儿积,这类运算将关系看成元组的集合,其运算是从关系的“水平”方向、行的角度来进行的。
- 扩充的关系运算:如选择、投影、连接、除,这类运算不仅涉及行,而且涉及列。
- 五种基本操作:并、差、笛卡儿积、选择、投影 —->(∪、-、×、σ、Π)
- 三种组合操作:交、连接、除 —->(∩、⨝、÷)
并(∪)操作:R∪S
运算结果:至少出现在两个关系中之一的元组的集合。
运算前提:R和S必须是相容的:
- 关系R和S必须是同元的,即它们的属性数目必须相同。
- 对任意正整数i,R的第i个属性和S的第i个属性的数据类型必须相同。
差(—)操作:R—S
运算结果:是由属于R,但是不属于S的元组构成的集合。
运算前提:R和S必须同类型(属性集相同,但属性名可以不同)。
交(∩)操作:R∩S
运算结果:所有同时出现在两个关系中的元组集合。
运算前提:
- 交运算可以通过差运算来实现:R∩S=R-(R-S) 或 S-(S-R)
- R和S必须同类型(属性集相同、次序相同,属性名可以不同)
笛卡尔积(×):R×S
运算结果:
- 关系R和S的笛卡儿积是两个关系的元组对的集合所组成的新关系。
- 关系R×S的字段名可分为两部分,前r个字段名来自R,后s个字段名来自S。
- 关系R×S的字段数为R和S字段数之和,元组个数为R和S元组数之积。
选择(σ)操作:
投影(Π)操作:
- 对一个关系R进行垂直分割,消去某些列,并重新安排列的顺序。
- ΠA1A2…An(R),表示从R中选择属性集A1,A2…….,An组成新的关系
- 属于列的运算,投影运算的结果中,也要去除可能的重复元组