Oracle笔记_关系代数

来源:互联网 发布:明是非 知善恶 知良莠 编辑:程序博客网 时间:2024/05/18 01:07

关系代数是一种过程化语言,因为用户通过顺序使用一组运算来达到期望的结果。通过对数据表执行集合运算,产生新的结果表,然后将这些结果表用于随后的顺序运算。在Oracle中,所有的运算名市级上都不用做编程术语,这些运算中的大多数都不产生新的结果表。

1、并运算(Union):两张数据表的并运算结果是检索一张或两张表中的所有行。重复的行要从结果表中除去,也就是说,结果表中不能包含具有相同数据值的两行。对于两张数据表执行并运算需要满足两个基本要求:1)两张表必须具有相同的度;2)两张数据表的响应列必须具有相同的域;

2、交运算(Intersection):两张数据表的交运算所产生的结果表包括两张表中共有的行。两张数据表必须是兼容的,才能执行交运算;

3、差运算(Difference):两张数据表的差运算所产生的结果表包括第一章表中出现但地二张表中不出现的那些行。差运算只能再并兼容的表上才能完成;

4、投影运算(Projection):通过投影运算,我们可以从一张表的所有存在列中选择一些期望的列来生成一张新表,不期望的列则可以忽略不管。投影运算返回数据表的“垂直切片(vertical slice)“;

5、选择运算(Selection):选择运算根据一个或多个条件从一张数据表中选择符合条件的行。条件运算符(=、<>、>、>=、<、<=)和逻辑运算符(AND、OR、NOT)与列和值一同使用,可以生成要满足的条件。选择运算返回数据表的”水平切片(horizontal slice)“;

6、乘积运算(Product):两张数据表的乘积是将这两张表的所有信息联合起来。乘积也称为笛卡尔积(Cartesian product)。如果数据表较大,则其乘积会很大。如果第一张数据表包括x行,第二张数据表包括y行,那么其成绩会包括x*y行。如果第一张表包括m列,第二张数据表包括n列,那么其乘积结果包括m+n列;

7、赋值运算(Assignment):这种运算是通过存在的表来创建一张新表。我们在所有其他运算里都已经执行过这种运算。通过赋值(=)运算,我们可以根据其他一些数据表来命名一些新表;

8、连接运算(Join):连接运算是最重要的运算之一,通过这种运算我们可以得到许多表的相关数据。连接运算基于共同的值集,两张数据表中的值集不一定具有相同的名称,但必须具有相同的域。连接运算会增加系统开销,因为连接运算是通过以系列运算完成的。首先执行一个乘积运算,其结果包括m*n行。接着再执行一个选择运算,选出值相等的那些行。最后,执行投影运算,将重复的值列删除;

9、除法运算(Division):除法运算是理解起来难度最大的一种运算。它并不像数学中的除法那么简单。在关系代数中,它识别一张表中与另一张表中的所有行具有一定的关系的那些行。



原创粉丝点击