目录
3.SET DIFFERENCE (也叫 MINUS 或者 EXCEPT) -
1.CARTESIAN PRODUCT(笛卡尔积)或者CROSS JOIN
(1)运算要求:自然连接的标准定义要求两个连接属性,或每一对对应的连接属性,在两个关系中具有相同的名称。
(1)计算含义:除法运算对于一种特殊的查询很有用,并不是很常用
(3)看不懂步骤没关系,来跟着做一遍:既然写了博客,那我必把你教会,这是责任。
一、一元关系
1.SELECT σ (sigma)
(1)语法结构:
σ <选择条件>(目标表)
(2)例子:
σ SALARY > 30,000 (EMPLOYEE):从EMPLOYEE表中选择薪水SALARY大于30000的人
σ DNO =4 (EMPLOYEE) :从EMPLOYEE表中选择工号是4的人
(3)性质:
<1> 交换律:
<2> 结合律:
<3> 合并律:
2.PROJECT π (pi)
(1)语法结构:
π<属性列表>(目标表)
(2)例子:
π(LNAME, FNAME,SALARY)(EMPLOYEE):将EMPLOYEE表中的LNAME,FNAME,SALARY展示出来
(3)性质:
<1> 结果中元组的个数总是小于或等于目标表中的元组的个数
<2> π运算不满足交换律
3.RENAME ρ(rho)
(1)语法结构:
ρS (B1, B2, …, Bn ) (目标表)
(2)例子:
:从DEP5_EMPS表中选择Fname,Lname,Salary三列,重命名为RESULT表,每一列分别重命名为F,L,SAL
(3) 性质:
无
二、二元关系
1.UNION ∪
(1)运算含义:
R∪S的结果是一个关系,它包含R或者S或者R和S中同时存在的所有元组
就是并集概念,按照并集理解
(2)例子:
2.INTERSECTION ∩
(1)运算含义:
操作R ∩ S的结果是一个关系,它包含R和S中所有的元组。
等同于交运算。
(2)例子:
交运算:
3.SET DIFFERENCE (也叫 MINUS 或者 EXCEPT) -
(1)运算含义:
R - S的结果,是一个关系,它包含了所有在R中但不在S中的元组
(2)例子:
(d) STUDENT - INSTRUCTOR. (e) INSTRUCTOR - STUDENT.
三、针对集合的代数运算
1.CARTESIAN PRODUCT(笛卡尔积)或者CROSS JOIN
(1)运算含义:
R(A1, A2, . . ., An) x S(B1, B2, . . ., Bm)是将两个集合每一条记录依次组合,所以计算之后的集合拥有n*m个元素。尽管有的元素并不存在现实中的关系。
(2)提醒:
一般来说,单独应用CROSS PRODUCT操作是没有意义的,因为这会产生大量的无意义的交叉数据,但是当后面跟着其他操作时,比如匹配来自组件关系的属性值的选择,就会变得有意义。
例如:
这个操作并没有任何意义。
但是:
我们加上select语句和显示语句,这个笛卡尔积就具备了意义。因为我们将这个笛卡尔积作为一个工具而不是结果来使用。
我们来详细展示一下,这些操作的结果是什么:
四、二元运算
1.JOIN ▷◁
(写的时候连起来,这个符号打不出来)
(1)运算含义:
很显然,将笛卡尔积和select结合在一起就是JOIN操作。
(2)基本形式:
R ▷◁<join condition> S
其中R和S可以是由一般关系代数表达式产生的任何关系。
(3)JOIN的特殊形式THETA JOIN
其中:θ是以下关系的任何一个
例如:condition可以写成:
(4)THETA JOIN 的特殊形式EQUIJOIN
顾名思义:当θ是=的时候,就为EQUIJOIN。
2.NATURAL JOIN *
(1)运算要求:自然连接的标准定义要求两个连接属性,或每一对对应的连接属性,在两个关系中具有相同的名称。
(2)例子:
隐式连接条件: R.C=S.C AND R.D=S.D
并且结果每个这样的对的一个属性: 结果为:Q(A,B,C,D,E)
表例子:原始表
(a) proj_dept = project * dept. (b) dept_locs = department * dept_locations.
3.DIVISION 除法 ÷
(1)计算含义:除法运算对于一种特殊的查询很有用,并不是很常用
(2)计算步骤:
R ÷ S:
<1> 找到R与S相同的属性,对S上的相同属性做投影
<2> 对R上的不同属性做消除重复的投影
<3>找到所有R元素的集合
<4>找到那些包含S的 行,答案就是这些行对应的属性。
(3)看不懂步骤没关系,来跟着做一遍:既然写了博客,那我必把你教会,这是责任。
例子1: T = R÷S
<1>找R与S相同属性,那就是A属性,做投影则为{a1,a2,a3}
<2>对R中不同的属性做消除重复的投影:R不同与S的属性是B
投影并消除重复:{b1,b2,b3,b4}
<3>找R的所有元素的集合
b1 = >{a1,a2,a3,a4}
b2 = >{a1,a3}
b3=>{a2,a3,a4}
b4=>{a1,a2,a3}
而S的投影为{a1,a2,a3},只由b1和b4对应的集合包括S的投影,所以答案就是{b1,b4}
例子2:
SSNS = SSN_PNOS ÷SMITH_PNOS
自己做一遍吧。
五、到目前的一元、集合、二元的总结:(英文版)
六、查询树
这个图,自下向上的还原。
七、分组运算
ℑ (script F):
(1)应用:
ℑMAX Salary (EMPLOYEE):从EMPLOYEE表中选择SALARY的最大值
ℑ MIN Salary (EMPLOYEE):从EMPLOYEE表中选择SALARY的最小值
ℑ SUM Salary (EMPLOYEE):从EMPLOYEE表中选择SALARY的和
ℑ COUNT Ssn, AVERAGE Salary (EMPLOYEE):从EMPLOYEE表中选择SALARY的平均值和 数量。
注意::::数量包括所有的行,包括重复的项。
(2)例子:
八、其他的很偏门的代数运算
OUTER JOIN :
(1)左outer:
例子: