目录
3.SET DIFFERENCE (也叫 MINUS 或者 EXCEPT) -
1.CARTESIAN PRODUCT(笛卡尔积)或者CROSS JOIN
(1)运算要求:自然连接的标准定义要求两个连接属性,或每一对对应的连接属性,在两个关系中具有相同的名称。
(1)计算含义:除法运算对于一种特殊的查询很有用,并不是很常用
(3)看不懂步骤没关系,来跟着做一遍:既然写了博客,那我必把你教会,这是责任。
一、一元关系
1.SELECT σ (sigma)
(1)语法结构:
(2)例子:
σ DNO =4 (EMPLOYEE) :从EMPLOYEE表中选择工号是4的人
(3)性质:
<1> 交换律:
<2> 结合律:
<3> 合并律:
2.PROJECT π (pi)
(1)语法结构:
(2)例子:
(3)性质:
<1> 结果中元组的个数总是小于或等于目标表中的元组的个数
<2> π运算不满足交换律
3.RENAME ρ(rho)
(1)语法结构:
(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)运算含义:
(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)例子:
并且结果每个这样的对的一个属性: 结果为: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的最大值
(2)例子:
如果需要去重的话:参考https://www.jianshu.com/p/f7f9440e30a5
八、其他的很偏门的代数运算
OUTER JOIN :
(1)左outer:![](https://i-blog.csdnimg.cn/blog_migrate/2610614c791eae21135b84049ca77f58.png)
例子: