关系代数中中的除法怎么用SQL语句写出来

关系代数中中的除法怎么用SQL语句写出来

参考一下:

select distinct R.A, R.B

from R , S

where R.C=S.C and R.D=S.D

关系代数运算练习答案

关系代数表达式: 由关系代数运算经有限次复合而成的式子称为关系代数表达式。 这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。 关系代数(演算)要求掌握各种语句的应用 1:设教学数据库中有3个关系: 学生关系S(SNO,SNAME,AGE,SEX) 学习关系SC(SNO,CNO,GRADE) 课程关系C(CNO,CNAME,TEACHER) 下面用关系代数表达式表达每个查询语句。 (1) 检索学习课程号为C2的学生学号与成绩。 πSNO,GRADE(σCNO='C2'(SC)) (2) 检索学习课程号为C2的学生学号与姓名 πSNO,SNAME(σCNO='C2'(S SC)) 由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。

此查询亦可等价地写成: πSNO,SNAME(S)(πSNO(σCNO='C2'(SC))) 这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。 (3)检索选修课程名为MATHS的学生学号与姓名。 πSNO,SANME(σCNAME='MATHS'(S SC C)) (4)检索选修课程号为C2或C4的学生学号。 πSNO(σCNO='C2'∨CNO='C4'(SC)) (5)检索选修课程号为C2和C4的学生学号。 π1(σ1=4∧2='C2'∧5='C4'(SC×SC)) 这里(SC×SC)表示关系SC自身相乘的乘积操作,其中数字1,2,4,5都为它的结果关系中的属性序号。 比较这一题与上一题的差别。 (6)检索不学C2课的学生姓名与年龄。 πSNAME,AGE(S)-πSNAME,AGE(σCNO='C2'(S SC))

关系代数讲解与例题

关系代数 关系代数是关系数据库系统查询语言的理论基础。 关系代数的9种操作: 并、交、差、乘、选择、投影、联接、除、自然联接运算。 五个基本操作: 并(∪) 差(-) 笛卡尔积(×)投影(σ) 选择(π) 四个组合操作: 交(∩) 联接(等值联接)自然联接(RS) 除法(÷) 关系代数表达式: 由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。 关系代数(演算)要求掌握各种语句的应用,多做书中的例题可以帮助自己熟能生巧。 关系代数表达式举例 用关系代数表示数据查询的典型例子 [例]设教学数据库中有3个关系: 学生关系S(SNO,SNAME,AGE,SEX) 学习关系SC(SNO,CNO,GRADE) 课程关系C(CNO,CNAME,TEACHER) 下面用关系代数表达式表达每个查询语句。 (1) 检索学习课程号为C2的学生学号与成绩。 πSNO,GRADE(σCNO='C2'(SC)) (2) 检索学习课程号为C2的学生学号与姓名 πSNO,SNAME(σCNO='C2'(SSC)) 由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。 此查询亦可等价地写成: πSNO,SNAME(S)(πSNO(σCNO='C2'(SC))) 这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。 (3)检索选修课程名为MATHS的学生学号与姓名。 πSNO,SANME(σCNAME='MATHS'(SSCC)) (4)检索选修课程号为C2或C4的学生学号。 πSNO(σCNO='C2'∨CNO='C4'(SC)) (5)检索至少选修课程号为C2或C4的学生学号。 π1(σ1=4∧2='C2'∧5='C4'(SC×SC)) 这里(SC×SC)表示关系SC自身相乘的乘积操作,其中数字1,2,4,5都为它的结果

关系代数

第二章关系代数 教学目的: 本章实际上研究的是关系的运算。 学习目的: 关系运算是设计关系数据库操作语言的基础,因为其中的每一个询问往往表示成一个关系运算表达式,在我们的课程中,数据及联系都是用关系表示的,所以实现数据间的联系也可以用关系运算来完成。 通过本章学习,应重点掌握: (1)关系数据库的基本概念; (2)如何用关系代数表达式来表达实际查询问题; (3)如何用元组演算表达式来表达实际查询问题; (4)如何用域演算表达式来表达实际查询问题; (5)如何将关系代数表达式转换为元组演算表达式或转换为域演算表达式。 了解和掌握关系数据结构中涉及到的域、笛卡儿积、关系模式等有关内容的含义; 掌握关系的实体完整性和参照完整性的定义; 掌握关系代数中的并、交、差、笛卡儿积运算,以及选择、投影和连接运算。 教学重点: 关系的实体完整性和参照完整性的定义; 关系代数中的并、交、差、笛卡儿积运算,以及选择、投影和连接运算。 教学难点:关系代数中的并、交、差、笛卡儿积运算,以及选择、投影和连接运算。 教学方法:实例法 教学内容:如下: 关系模型 关系模型是一种简单的二维表格结构,每个二维表称做一个关系,一个二维表的表头,即所有列的标题称为一个元组,每一列数据称为一个属性,列标题称估属性名。同一个关系中不允许出现重复元组和相同属性名的属性。 1.关系模型组成 关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。关系操作分为两大部分如图所示。

2.关系操作的特点 关系操作的特点是操作对象和操作结果都是集合。而非关系数据模型的数据操作方式则为一次一个记录的方式。 关系数据语言分为三类: (1)关系代数语言:如ISBL ; (2)关系演算语言:分为元组关系演算语言(如Alpha ,Quel)、域关系演算语言(如QBE); (3)具有关系代数和关系演算双重特点的语言:如SQL 。 3.关系数据结构及其形式化定义 (1)域 定义 域是一组具有相同数据类型的值的集合。 (2)笛卡尔积 定义 设D 1,D 2,D 3,…,D n ,为任意集合,定义D l ,D 2,D 3,…,D n 的笛卡尔积为 D 1×D 2×D 3×…×D n ={(d1,d2,d3,…dn)[di ∈Di ,i =1,2,3…,n] 其中每一个元素(dl ,d2,d3,…,dn ,)叫做一个n 元组(n 一tuple)或简称为元组(Tuple),每一个值di 叫做一个分量(Component),若Di(i =l ,2,…n)为有限集,其基数(Cardinal number)为mi(i=l ,2,3,…,n), 则D 1×D 2×D 3×…×D n 的基数M 为 M = ∏=n i 1 mi

数据库关系代数除法讲解

【数据库原理】关系代数篇——除法讲解 陈宇超编辑总结: 除法运算的一般形式示意图 如何计算R÷S呢,首先我们引进”象集”的概念,具体意义看下面的陈述即可理解 关系R和关系S拥有共同的属性B、C , R÷S得到的属性值就是关系R包含而关系S不包含的属性,即A属性 在R关系中A属性的值可以取{ a1,a2,a3,a4 } a1值对应的象集为{ (b1,c2) , (b2,c1) , (b2,c3) } a2值对应的象集为{ (b3,c7) , (b2,c3) } a3值对应的象集为{ (b4,c6) } a4值对应的象集为{ (b6,c6) } 关系S在B、C上的投影为{ (b1,c2) , (b2,c1) , (b2,c3) } 只有a1值对应的象集包含关系S的投影集,所以只有a1应该包含在A属性中为 【例题一】为了更好的理解除法的实际作用,请看下面的例题 设有教学数据库有3个关系(以下四小问均用除法的思想解决)

学生信息关系student(sno,sname,age,sex) 学生选课关系sc(sno,cno,score) 学校课程关系course(cno,cname) SQL语言中没有全称量词,具体实现时可以把带有全称量词的谓词转换为等价的带有存在量词的谓词。 解决这类的除法问题一般采用双嵌套not exists 解决所谓forall的问题。 (1)检索所学课程包含了C002课程的学生学号 解关系代数表达式:∏sno ( sc÷∏cno(σcno=’C002’ (course) ) Sql语句 从略 (2)求至少选择了C001和C003两门课程的学生学号 解关系代数表达式:∏sno ( sc÷∏cno(σcno=’C001’ or cno=’C003’(course) ) Sql语句 select distinct sno from sc A where not exists ( select*from course B where cno in('C002','C003')and

数据库关系代数除法讲解

数据库关系代数除法讲解 This manuscript was revised by JIEK MA on December 15th, 2012.

【数据库原理】关系代数篇——除法讲解 陈宇超编辑总结: 除法运算的一般形式示意图 如何计算R÷S呢,首先我们引进”象集”的概念,具体意义看下面的陈述即可理解 关系R和关系S拥有共同的属性B、C , R÷S得到的属性值就是关系R包含而关系S不包含的属性,即A属性 在R关系中A属性的值可以取{ a1,a2,a3,a4 } a1值对应的象集为 { (b1,c2) , (b2,c1) , (b2,c3) } a2值对应的象集为 { (b3,c7) , (b2,c3) } a3值对应的象集为 { (b4,c6) } a4值对应的象集为 { (b6,c6) } 关系S在B、C上的投影为 { (b1,c2) , (b2,c1) , (b2,c3) } 只有a1值对应的象集包含关系S的投影集,所以只有a1应该包含在A属性中为 设有教学数据库有3个关系(以下四小问均用除法的思想解决) 学生信息关系student(sno,sname,age,sex) 学生选课关系 sc(sno,cno,score) 学校课程关系 course(cno,cname)

S003C00269 S005C00277 S005C00398 有存在量词的谓词。 解决这类的除法问题一般采用双嵌套not exists来实现带全称量词的查询解决所谓forall的问题。 (1)检索所学课程包含了C002课程的学生学号 解关系代数表达式:∏sno ( sc÷∏cno(σcno=’C002’ (course) ) Sql语句 从略 (2)求至少选择了C001和C003两门课程的学生学号 解关系代数表达式:∏sno ( sc÷∏cno(σcno=’C001’ or cno=’C003’(course) ) Sql语句 select distinct sno from sc A where not exists ( select*from course B where cno in('C002','C003')and not exists ( select*from sc C where=and= ) ) 也可以采用自连接 select from (select*from sc where cno='C001')as s1, (select*from sc where cno='C003')as s2 where= (3)求至少学习了学生S003所学课程的学生学号 解关系代数表达式:∏sno ( sc÷∏cno(σsno=’S003’ (sc) ) select distinct sno from sc A where not exists ( select*from sc B where sno='S003'and not exists ( select*from sc C where=and= ) ) (4)求选择了全部课程的学生的学号 解此例的等价自然语义是,输出这样的学号,不存在某门课程在他的选课记录里没有选这门课 关系代数表达式:∏sno (sc÷∏cno(course) ) Sql语句 select distinct sno from sc A where not exists

关系代数全解

因为关系被解释为某个谓词的外延,关系代数的每个运算在谓词演算中都有对应者。例如,自然连接是逻辑AND()的对应者。如果关系R和S分别表示谓词p1和p2的外延,则R和S的自然连接(R S)是表示谓词p1p2的外延的关系。 认识到 Codd 的代数事实上关于一阶逻辑不完备是很重要的。实现它会引起不可

R S = {r s| r R, s S} 主条目:投影 (关系代数) 投影是写为的一元运算,这里的是属性名字的集合。这种投影的结果定义为当所有在中的元组被限制为集合的时候所获得的集合。

广义选择是写为 的一元运算,这里的 是由正常选择中所允许的原子 和逻辑算子 (与)、(或) 和 (非)构成的命题公式。这种选择选出 中使 成立的所有元组。 主条目:重命名 (关系代数) 重命名是写为 的一元运算,这里的结果同一于 ,除了在所有元组中 的 字段被重命名为 字段之外。它被简单的用来重命名关系的属性或关系自身。 连接和类似连接的运算 自然连接 (?) 自然连接是写为 (R ? S ) 的二元运算,这里的 R 和 S 是关系。[1]自然连接的结果是在 R 和 S 中的在它们的公共属性名字上相等的所有元组的组合。例如下面是表格“雇员”和“部门”和它们的自然连接: 雇员 Name EmpI d DeptNa me Harry 3415 财务 Sally 2241 销售 George 3401 财务 Harrie t 2202 销售 部门 DeptNa me Manage r 财务 George 销售 Harrie t 生产 Charle s 雇员 ? 部门 Name EmpI d DeptNa me Manage r Harry 3415 财务 George Sally 2241 销售 Harrie t George 3401 财务 George Harrie t 2202 销售 Harrie t

关系代数表达式总结-数据库

关系代数表达式总结 一、并 例1 求选修了课程号为1或2的课程的学生学号。 分析:可以先求出选修了课程号为1的课程的学生学号,再求出选修了课程号为2的课程的学生学号,最后使用并运算的方法求出选修课程号为1或2的课程的学生学号。本例也可以使用或条件来表示。 πSno(σCno=’1’(SC))∪πSno(σCno=’2’(SC)) 或πSno(σCno=’1’∨Cno=’2’(SC)) 二、交 例2 检索至少选修课程号为2和3的课程的学生学号。 分析: 方法一:只涉及到一个表,但不能直接用∧(为什么?) 特别注意,本例不能写为: πSno(σCno=’2’∧Cno=’3’(SC)) 因为选择运算为行运算,在同一行中Cno不可能既为2,又为3。 第一步:转换(SC×SC) 笛卡尔积将垂直的条件展开为水平的条件。

选修课程号为2和3的学生: σ1=4∧2=’2’∧5=’3’(SC×SC) 最后取出学生的学号: π1(σ1=4∧2=’2’∧5=’3’(SC×SC)) 方法二:πSno(σCno=’2’(SC))∩πSno(σCno=’3’(SC)) 三、差 例3 将学生信息(‘95001’,’李勇’,‘男’,20,‘CS’)从Student表删除。 分析:可以将这行数据看成由一个元组构成的表,将Student表与该表进行差运算。 因此,该删除操作可表示为: Student-{‘95001’,’李勇’,‘男’,20,‘CS’} 注意:但是当查询涉及到否定或全部值时,上述形式就不能表达了,就要用到差操作或除操作。 例4 求没有选修课程号为2的课程的学生学号。 分析:可以认为是在全部学号中去掉选修课程号为2的课程的学生学号,就得出没有选修课程号为2的学生学号。由于在并、交、差运算中,参加运算的关系要求是兼容的,故应当先投影,再进行差运算。 πSno(Student)- πSno(σCno=’2’(SC)) 特别注意,本题不能写为:πSno(σCno≠’2’(SC))。因为,选择运算为行运算,并且SC 表中包含的只是选修了课程的学生学号,对那些没选任何课程的学生学号,在SC中找不到。根据题意,要查询没有选修课程号为‘2’课程的学生学号,显然包括没选任何课程的学生学号。 当查询涉及到针对“否定”特征含义的查询要求,如“不”、“没有”等字眼,一般要

SQL与关系代数对应

数据库关系代数表达式学习 关系代数是关系数据库系统查询语言的理论基础。很有必要学习一下,有些是用代数表达式很方便的东西,用SQL写出来还是挺麻烦的,并不是想象当中那么直接。 一、关系代数的9种操作: 关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。 五个基本操作: 并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π) 四个组合操作: 交(∩)、联接(等值联接)、自然联接(R S)、除法(÷) 注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列) 注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列

二、关系代数表达式: 由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。 三、举例说明: 设教学数据库中有3个关系: 学生关系S(SNO,SNAME,AGE,SEX) 学习关系SC(SNO,CNO,GRADE) 课程关系C(CNO,CNAME,TEACHER) (1) 检索学习课程号为C2的学生学号与成绩 ------------------------------------ SELECT SNO,GRADE FROM SC WHERE CNO='C2' ------------------------------------

πSNO,GRADE(σCNO='C2'(SC)) ************************************ (2) 检索学习课程号为C2的学生学号与姓名 ------------------------------------ SELECT SC.SNO,S.SNAME FROM SC,S WHERE SC.SNO=S.SNO AND https://www.360docs.net/doc/354194958.html,O='C2' ------------------------------------ πSNO,SNAME(σCNO='C2'(S SC)) 此查询涉及S和SC,先进行自然连接,然后再执行选择投影操作。---- πSNO,SNAME(S)(πSNO(σCNO='C2'(SC))) 自然连接的右分量为"学了C2课的学生学号的集合"。 此表达式比前一个表达式优化,执行起来要省时间、省空间。 ************************************ (3) 检索选修课程名为MATHS的学生学号与姓名 ------------------------------------

关系代数

一、关系代数的9种操作: 关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。 五个基本操作: 并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π) 四个组合操作: 交(∩)、联接(等值联接)、自然联接(R S)、除法(÷) 注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列) 注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列 二、关系代数表达式: 由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。 三、举例说明: 设教学数据库中有3个关系: 学生关系S(SNO,SNAME,AGE,SEX) 学习关系SC(SNO,CNO,GRADE) 课程关系C(CNO,CNAME,TEACHER) (1) 检索学习课程号为C2的学生学号与成绩 ------------------------------------ SELECT SNO,GRADE FROM SC WHERE CNO='C2'

πSNO,GRADE(σCNO='C2'(SC)) ************************************ (2) 检索学习课程号为C2的学生学号与姓名 ------------------------------------ SELECT SC.SNO,S.SNAME FROM SC,S WHERE SC.SNO=S.SNO AND https://www.360docs.net/doc/354194958.html,O='C2' ------------------------------------ πSNO,SNAME(σCNO='C2'(S SC)) 此查询涉及S和SC,先进行自然连接,然后再执行选择投影操作。---- πSNO,SNAME(S)(πSNO(σCNO='C2'(SC))) 自然连接的右分量为"学了C2课的学生学号的集合"。 此表达式比前一个表达式优化,执行起来要省时间、省空间。 ************************************ (3) 检索选修课程名为MATHS的学生学号与姓名 ------------------------------------ SELECT SC.SNO,S.SNAME FROM SC,S,C WHERE SC.SNO=S.SNO AND https://www.360docs.net/doc/354194958.html,O=https://www.360docs.net/doc/354194958.html,O AND https://www.360docs.net/doc/354194958.html,AME='MATHS' ------------------------------------ πSNO,SANME(σCNAME='MATHS'(S SC C)) ************************************ (4) 检索选修课程号为C2或C4的学生学号

关系运算 除法

1.关系运算的分类 (1)基本运算操作:并、差、笛卡尔积、投影和选择。 (2)组合运算操作:交、联接、自然联接和除。 另外,还有几种扩充的关系代数操作:外联接(左外联接和右外联接)、外部并和半联接。 2.除法定义的理解 设两个关系R和S的元数分别为r和s(r>s>0),那么R÷S是一个(r-s)元的元组的集合。(R÷S)是满足下列条件的最大关系,其中每个元组t与S中每个元组u组成的新元组必在关系R中。 3.例题讲解 有很多学员对除法运算定义不是很理解,那么,我们下面用图示的方法来进行讲解。 例题1(2002年试题40) ● 关系R、S如下表所示,R÷(πAl,A2(σ1<3(S)))的结果为__(40)__。 (40) A.{d} B. {c,d} C.{c,d,8} D. {(a,b),(b,a),(c,d),(d,f)} 例题1分析 首先看πAl,A2(σ1<3(S)) 得到哪些元组的一个关系表。 (1)σ1<3(S)的意思就是从关系S中选择第1列小于第3列的元组组成的关系表,如表1所示。

(2)πAl,A2 的意思就是对表1进行投影,对A1和A2列投影出来,如表2所示。 (3)表2是具有两个属性A1、A2和两个元组的关系表。 接下来是R÷X2了,首先,在R中找到A1与A2列和表2完全一致的元组。 然后,在表3中,说明R关系内存在A1、A2列元组与表2的所有元组相同,此时关键是看R关系中其他列在这两行元组的值是否相同。只有相同时,除法的结果就为这个值,不相同,则除法的结果为空。 所以:R÷X2 = {d} 例题2(数据库系统工程师2005年5月试题44) 设有如下关系:

关系代数

设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式: 1)求供应工程J1零件的供应商号码SNO: 2)求供应工程J1零件P1的供应商号码SNO: 3)求供应工程J1零件为红色的供应商号码SNO: 4)求没有使用天津供应商生产的红色零件的工程号JNO: 5)求至少用了供应商S1所供应的全部零件的工程号JNO: 正确答案: 1)πSno(σSno=‘J1’(SPJ)) 2)πSno(σSno=‘J1’∧Pno=‘P1‘(SPJ)) 3)πSno(σPno=‘P1‘ (σCOLOR=’红‘(P)∞SPJ)) 4)πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘红‘ (S∞SPJ∞P) 5)πJno,Pno(SPJ)÷ πPno(σSno=‘S1‘ (SPJ)) 设有三个关系: S(S#,SNAME,AGE,SEX) C(C#,CNAME,TEACHER)。 试用关系代数表达式表示下列查询语句: (1)检索LIU老师所授课程的课程号和课程名。 (2)检索年龄大于23岁的男学生的学号和姓名。 (3)检索学号为S3学生所学课程的课程名与任课教师名。 (4)检索至少选修LIU老师所授课程中一门课的女学生姓名。

(5)检索WANG同学不学的课程的课程号。 (6)检索全部学生都选修的课程的课程号与课程名。 (7)检索选修课程包含LIU老师所授全部课程的学生学号。 正确答案: (1)πC#,CNAME(σTEACHER='LIU'(C)) (2)πS#,SNAME(σAGE>'23'∧SEX='男'(S)) (3)πCNAME,TEACHER(σS#='S3'(SC?C)) (4)πSNAME(σSEX='女'∧TEACHER='LIU'(S?SC?C)) (5)πC#(C)-πC#(σSNAME='WANG'(S?SC)) 或者πC#(SC)-πC#(σSNAME='WANG'(S?SC)) (6)πC#,CNAME(C? (πS#,C#(SC)÷πS#(S))) (涉及到全部值时,应用除法,“除数”是"全部") (7)πS#,C#(SC)÷πC#(σTEACHER='LIU'(C)) 设有如下所示的关系S(S#,SNAME,AGE,SEX)、C(C#,CNAME,TEACHER)和 SC(S#,C#,GRADE),试用关系代数表达式表示下列查询语句: (1)检索“程军”老师所授课程的课程号(C#)和课程名(CNAME)。 (2)检索年龄大于21的男学生学号(S#)和姓名(SNAME)。 (3)检索至少选修“程军”老师所授全部课程的学生姓名(SNAME)。 (4)检索”李强”同学不学课程的课程号(C#)。 (5)检索至少选修两门课程的学生学号(S#)。

关系代数习题

小测验1 (一)单项选择题 1.关系模型基本的数据结构是(D) A.树B.图 C.索引 D.关系 2.关系数据库的查询语言是一种(C) A 过程性语言 B.第三代语言 c.非过程性语言 D.高级程序设计语言 3.关系模型中,实体完整性规则是(B) A.实体不允许是空实体 B.实体的主键值不允许是空值 c.实体的外键值不允许是空值 D.实体的属性值不允许是空值 4.关系数据库的数据操作分为两类(A) A.查询和更新 B.排序和索引c.插入和删除 D.修改和排序 5.在关系模型中,下列说法正确的为( D )。 A.关系中存在可分解的属性值 B. 关系中允许出现相同的元组 C.关系中考虑元组的顺序 D.元组中,属性理沦上是无序的,但使用时按习惯考虑列的顺序 6. 在关系模型中,下列说法正确的为(B) A.关系中元组在组成主键的属性上可以有空值 B.关系中元组在组成主键的属性上不能有空值 C.主键值起不了唯一标识元组的作用 D.关系中可引用不存在的实体 7.下列为非过程语言的为( C )。 A.汇编语言 B.PASCAL语言‘ C.关系查询语言D.C语言 8.设关系R、s、w各有10个元组,则这三个关系的笛卡尔积的基数为(C)A.10 B.30 C.1000 D.不确定(与计算结果有关) 9.关系代数中,一般联接操作由(A)组合而成。 A.笛卡尔积和选择 B.笛卡尔积、选择和投影 C.笛卡尔积和投影 D.投影和选择 10.设关系R和S的属性个数分别为r和s,那么(R x S)操作结果的属性个数为( A ) A.r十s B.r-s C.r×s D.max(r,s) 11.设关系R和s的结构相同,且各有100个元组,则这两个关系的并操作结果的元组个数为(D) A.100 B.小于等于100 C.200 D. 小于等于200 12.关系代数的交操作可以由(B)操作组合而成。 A.并和差 B.差C.选择 D.联接 13.如果两个关系没有公共属性,那么其自然联接操作(A) A.转化为笛卡尔积操作B.转化为联接操作 c.转化为外部并操作D.结果为空关系 14.设关系R和S的值如下:

数据库原理重点提示之关系代数

数据库原理重点提示之关系代数 关系代数与关系数据库操作 关系代数是关系数据库系统查询语言的理论基础。 关系代数的9种操作: 并、交、差、乘、选择、投影、联接、除、自然联接运算。 五个基本操作: 并(∪) 差(-) 笛卡尔积(×)投影(σ) 选择(π) 四个组合操作: 交(∩) 联接(等值联接)自然联接(R S) 除法(÷) 关系代数表达式: 由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。 关系代数(演算)要求掌握各种语句的应用,多做书中的例题可以帮助自己熟能生巧。用关系代数表示数据查询的典型例子 [例]设教学数据库中有3个关系: 学生关系S(SNO,SNAME,AGE,SEX) 学习关系SC(SNO,CNO,GRADE) 课程关系C(CNO,CNAME,TEACHER) 下面用关系代数表达式表达每个查询语句。 (1) 检索学习课程号为C2的学生学号与成绩。 πSNO,GRADE(σ CNO='C2'(SC)) (2) 检索学习课程号为C2的学生学号与姓名 πSNO,SNAME(σ CNO='C2'(S SC)) 由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。 此查询亦可等价地写成: πSNO,SNAME(S)(πSNO(σ CNO='C2'(SC))) 这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。 (3)检索选修课程名为MATHS的学生学号与姓名。 πSNO,SANME(σ CNAME='MATHS'(S SC C)) (4)检索选修课程号为C2或C4的学生学号。 πSNO(σ CNO='C2'∨CNO='C4'(SC)) (5)检索至少选修课程号为C2或C4的学生学号。 π1(σ1=4∧2='C2'∧5='C4'(SC×SC)) 这里(SC×SC)表示关系SC自身相乘的乘积操作,其中数字1,2,4,5都为它的结果关系中的属性序号。 比较这一题与上一题的差别。 (6)检索不学C2课的学生姓名与年龄。 πSNAME,AGE(S)-πSNAME,AGE(σ CNO='C2'(S SC)) 这个表达式用了差运算,差运算的左分量为"全体学生的姓名和年龄",右分量为"学了C2课的学生姓名与年龄"。 (7)检索学习全部课程的学生姓名。 编写这个查询语句的关系代数过程如下: (a) 学生选课情况可用πSNO,CNO(SC)表示; (b) 全部课程可用πCNO(C)表示; (c) 学了全部课程的学生学号可用除法操作表示。 操作结果为学号SNO的集合,该集合中每个学生(对应SNO)与C中任一门课程号CNO配在一起都在πSCO,CNO(SC)中出现(即SC中出现),所以结果中每个学生都学了全部的课程(这是"除法"操作的含义): πSNO,CNO(SC)÷πCNO(C) (d) 从SNO求学生姓名SNAME,可以用自然连结和投影操作组合而成: πSNAME(S (πSNO,CNO(SC)÷πCNO(C))) 这就是最后得到的关系代数表达式。 (8)检索所学课程包含S3所学课程的学生学号。 注意:学生S3可能学多门课程,所以要用到除法操作来表达此查询语句。 学生选课情况可用操作πSNO,CNO(SC)表示; 所学课程包含学生S3所学课程的学生学号,可以用除法操作求得:πSNO,CNO(SC)÷πCNO(σ SNO='S3'(SC)) (9)将新课程元组('C10','PHYSICS','YU')插入到关系C中 (C∪('C10','PHYSICS','YU')) (10)将学号S4选修课程号为C4的成绩改为85分。 (SC-('S4','C4',?)∪('S4','C4',85)) 修改操作用代数表示分两步实现:先删去原元组,再插入新元组。题目中未给出原先的成绩,所以用"?"代替,检索时可忽略。 SQL语句: 标准的结构化查询语言,适用不同的数据库存产品. 1、select语句. 语法: select [top n] 字段名列表 [*] from 表名 where 条 件 order by 字段名 desc/asc 注明: top n 表示前n条件记录. * : 代表所有记录 ordry by 排序 desc降序 asc升序 where 条件: 比较表过式、逻辑表达式 例1:查询出news表中的所有标题. select title,body from news 例2、查询news表中所有的数据. select * from news 例3、从news表中查询出标题为"开会通知"的记录. select * from news title="开会通知" 例4、从news表中查询出标题,内容。 select title,body from news 例5、查询出news表中前5条件记录. select top 7 * from news 例6、显示news表示所有记录并按降序排序. select * from news order by id desc 例7、查询出stu表所有女生. select * from stu where 性别="女" 例8、查询出stu表所有女生并按id号降序. select * from stu where 性别="女" order by id1 desc 例9、查询出stu表中性别为男,并且民族为汉族学历为 专科的所有的学生, SELECT * FROM stu WHERE 性别="男" and 民族="汉" and 学历="专科" 例10、将stu表中性别不等于女生找出来. select 姓名,性别 from stu where 性别<>"女生" 例11、查询性别为男以及民族为汉的学生,且年龄在19 以上的. select 姓名,性别,民族 from stu where 性别="男" and 民族="汉" and 年龄>19 例12、in的应用. 找出stu表中年龄为17,18,19,20 select * from stu where 年龄 in(17,18,19,20) 注意: 在in 前加not时表示相反的结果. in主要用在成批量删除或修改时用. 例13、找出stu表中没有身份证的学生的姓名,年龄. select 姓名,年龄,身份证 from stu where 身份证 is not/null 例14、查询出stu表年龄在17-19岁的所有学生. select * from stu where 年龄 between 17 and 19 例15、模糊查找, 查询出stu表中,所有姓黄的学生。 select * from stu where 姓名 like "黄%" 例16、从stu表查询出学生数学为最高分的. select max(数学) as 数学高分 from 学生表 语法select max/min(字段名) as 虚拟字段 from 表名例17;计算出stu表中共有几位学生. select count(*) as 总人为 from stu 2、insert 语句添加数据 语法:insert into 表名(字段1,字段2,.....) values(字段值1,字段值2,......) 例1、给学生分别添加小明,男,17 insert into 学生表(姓名,性别,年龄,入学日期,生源) values("小明","男",17,null,"南宁") 3、delete 删除语句 语法:delete from 表名 where 条件 例如: 从学生表中把姓名为小明的数据删除. delete from 学生表 where 姓名="小明" 4、update 修改语句 update 表名 set 字段1=字段值1,字段2=字段值2,... where 条件 例如: 把stu表中身份证号码值为无的改为正在补办 update stu set 身份证="正在补办" where 身份证="无"

《数据库原理》知识点之关系代数运算

《数据库原理》知识点之关系代数运算 2.2.1 关系代数的五个基本操作 考核要求:达到“简单应用” 层次知识点:五个基本操作的含义和运算应用 (1)并(∪):两个关系需有相同的关系模式,并的对象是元组,由两个关系所有元组构成。 RUS≡{t| t∈R ∨t∈S} (2)差(-):同样,两个关系有相同的模式,R和S的差是由属于R但不属于S的元组构成的集合。 R-S≡{t| t∈R ∧t 不属于S} (3)笛卡尔积(×):对两个关系R和S进行操作,产生的关系中元组个数为两个关系中元组个数之积。 R×S≡{t| t=< tr,ts>∧tr∈R∧ts ∈S} (4)投影(σ):对关系进行垂直分割,消去某些列,并重新安排列的顺序。 (5)选择(π):根据某些条件关系作水平分割,即选择符合条件的元组。 2.2.2 关系代数的四个组合操作 考核要求:达到“简单应用” 层次知识点:四个组合操作的含义和运算应用 (1)交(∩):R和S的交是由既属于R又属于S的元组构成的集合。 (2)联接:包括θ(算术比较符)联接和F(公式)联接。 选择R×S中满足iθ(r+j)或F条件的元组构成的集合; 概念上比较难理解,关键理解运算实例等值联接(θ为等号“=”的联接)。 (3)自然联接(RS):在R×S中,选择R和S公共属性值均相等的元组,并去掉R×S 中重复的公共属性列。如果两个关系没有公共属性,则自然联接就转化为笛卡尔积。

(4)除法(÷):首先除法的结果中元数为两个元数的差,R÷S的操作思路如下——把S看作一个块,如果R中相同属性集中的元组有相同的块,且除去此块后留下的相应元组均相同,那么可以得到一条元组,所有这些元组的集合就是除法的结果 对于上述的五个基本操作和四个组合操作,应当从实际运算方面进行理解和运用。 应用举例 2.2.3 关系代数表达式及应用 考核要求:达到“简单应用” 层次知识点:关系代数表达式的应用 本节的内容是有关实际应用,应该多看例题,多做习题,必须达到以下要求:能够根据给出的关系代数表达式计算关系值,也能够根据相应查询要求列出关系表达式。 (1)在列关系表达式时,通常有以下形式: π……(σ……(R×S))或者π……(σ……(RS)) 首先把查询涉及到的关系取来,执行笛卡尔积或自然联接操作得到一张大的表格,然后对大表格执行水平分割(选择)和垂直分割(投影)操作。 (2)当查询涉及到否定或全部的逻辑时,往往要用到差或除法操作。 关系代数表达式举例 2.2.4 扩充的关系代数操作 考核要求:达到“识记” 层次知识点:了解“外联接”和“外部并”的含义 注意:(1)“外联接”、“左外联接”、“右外联接”和“自然连接”的差异。 (2)“外部并”和“并”的差异

数据库关系代数除法讲解

【数据库原理】关系代数篇一一除法讲解除法运算的一般形式示意图 S 余数 讲解:有关系尺和关系宜关系 悶包含触氐c三个属性 A B C al bl c2 a2b3c? a3b4cG al b2cl a4b6c6 a2b2C3 al b2C3 b D B c D bl c2dl b2€1dl b2c3d2 如何计算R宁S呢,首先我们引进”象集”的概念,具体意义看下面的陈述即可理解 关系R和关系S拥有共同的属性B、C , R十S得到的属性值就是关系R包含而关系S不包含的属性,即A属性 在R关系中A属性的值可以取{ al, a2, a3, a4 } 只有al值对应的象集包含关系S的投影集,所以只有al应该包含在A属性中所以R* S为 【例题一】为了更好的理解除法的实际作用,请看下面的例题设有教学数据库有3个关系(以下四小问均用除法的思想解决) 陈宇超编辑总结关系R关系£ { (b1,c2) ,(b2,c1) , (b2,c3) } { (b3,c7) ,(b2,c3) } { (b4,c6) } { (b6,c6) } al值对应的象集为 a2值对应的象集为 a3值对应的象集为 a4值对应的象集为 关系S在B、C上的投影为{(b1,c2) , (b2,c1) , (b2,c3) }

学生信息关系student (sno, sname, age, sex) 学生选课关系sc (sno, eno, score) 学校课程关系course (eno, cname) Stude nt 表 SC表 SQL 语言中没有全称量词,具体实现时可以把带有全称量词的谓词转换为等价的带有存在量词的谓词。 解决这类的除法问题一般采用双嵌套not exists匸丄山肓金总三^匕片匸 解决所谓forall的问题。 (1)检索所学课程包含了C002课程的学生学号 解关系代数表达式:n sno ( sc^n cno(ocno=' C00^ourse)) Sql语句从略 ⑵求至少选择了C001和C003两门课程的学生学号 解关系代数表达式:n sno ( sc^n cno( ocno=' C001 or cno= 3”(cC00se)) Sql语句select distinct sno from sc A where not exists ( select * from course B where cno in ('C002' , 'C003' ) and not exists ( select * from sc Cwhere A. sno=C. sno andB. cno=C. cno )

相关主题
相关文档
最新文档