基本运算:
1. 并(Union,表示为U):两个表或集合的联合。
例:R1=(A,B),R2=(B,C,D)。
则R1UR2=(A,B,C,D)。
注:U集里不包含重复的属性。
2. 差(Difference,表示位-):两个表或集合的区别。
例:R1=(A,B),R2=(B,C,D)。
则R1-R2=(A)。
注:-集里的元素个数不能大于初始。
3. 笛卡儿积(Product,表示为X):两个表或集合的组合个数。
例1:R1=(A,B),R2=(B,C,D)。
则R1xR2=(AB,AC,AD,BB,BC,BD)。
注:R1xR2集的元素个数为R1的元素个数乘R2的元素个数;
例2:求S1和S2的笛卡儿积?
得:
4. 投影(Project,表示为π):从表中抽取特定的列值。
表达式:πM(R)={ t(M) |t∈R }.
释义:R表示一个关系表;
T表示R中的一条横向的记录;
M表示T中的M列的交叉属性值;
πM(R)={ t(M) |t∈R }表示在关系表R中T行M列的一个属性值;
例:如上图中S1和S2.求πsno,sname(S1)?
既求S1表中列为Sno,和Sname的值。
结果如图:
5. 选择(Select,表示为σ--Sigma):从表中选取与给定条件相符的行。
表达式:σA=a(R)={ t(A)=a |t∈R }.
A表示R表中的一个字段或属性类型;
t∈R表示R表中的一条记录;
t(A)=a表示记录t中A属性的具体值等于a;
σA=a(R)={ t(A)=a |t∈R }表示在R表中选择A=a的一条记录;
例:给出S 1和S2两张(见上图)表。求S1中Sno= No003的那条记录?
6.交(Intersection,∩):两个及以上的集合或表中具有相同属性的集合。
7.联接(join,表示为▷◁):通过共同属性连接两个表。
表现在数据库中简单来说是通过字段值相同的条件下,将两个表中的记录连接在一起。
例:给出表S1和S2,求S1▷◁S2 ?
既求 S1中是否有和S2中属性值相同的记录,有则连接;
8.除(Division,表水为÷):除运算需要满足两个条件:表R和表S的属性集合要有相同性;R÷S的商是R和S非相同属性集合的一个投影的子集,该子集和S的笛卡尔积必须包含在R中。
例:求R÷S?
给出表
第一步:具有相同的属性集
R=(ABCD),S=(CD)----具有相同的属性集(CD);
第二步:非相同属性集合的投影;
R1=(AB)
第三步:该子集(R1)和S的笛卡尔积必须包含在R中.
R1和S的笛卡尔积图为:
和R比较发现R1中只(c,a)和S的笛卡尔积不在R中,所以删掉,最终的图:
此为R÷S的商。