因为关系模型中,对表的查询结果还是表,所以表之间的关系可以用关系代数来表示。
关系代数有五个基本操作:
- 选择 selection
- 投影 projection
- 集合差 set-difference / minus
- 集合 union
- 笛卡尔积 cross-product
支持这五个基本操作的系统则称为是完备的,所有其它操作都能用这五个操作推导。
选择 selection
用表示。
筛选出符合条件的元组(行)。
:::info
的含义就是筛选出Student表中年龄大于8的元组。
:::
投影 projection
用表示。
排除不在投影列表中的属性。也就是说,筛选出符合条件的属性(列)。
完全重复的元组会被消除。
:::info
的含义就是只取出Student表中的name和age列。
如果两个学生的学号不同,但是name和age都相同,如果按照上面进行选择操作,则结果只有一个元组。
(关系模型中,只要属性完全相同,描述的就一定是同一个对象)
:::
集合差 set-difference / minus
用表示。
返回属于集合A且不属于集合B的元组(行)。
参与二元运算的两个集合必须“并兼容”,也就是说属性的个数和数据类型必须对应相同。
集合 union
用表示。
返回属于集合A或集合B的元组(行)。
参与二元运算的两个集合必须“并兼容”,也就是说属性的个数和数据类型必须对应相同。
笛卡尔积 cross-product
用表示。
返回集合A与集合B的所有元组随机组合的所有结果,结果中的元组数量为A中元组数与B中元组数的乘积。
:::info
对上图两张表进行笛卡尔积,即的结果如下表
:::