【第6周】关系代数及对应的SQL.pptx_第1页
【第6周】关系代数及对应的SQL.pptx_第2页
【第6周】关系代数及对应的SQL.pptx_第3页
【第6周】关系代数及对应的SQL.pptx_第4页
【第6周】关系代数及对应的SQL.pptx_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6周 关系代数运算(二),一、广义笛卡尔积 二、连接(条件连接、等值连接、自然连接、自身连 接、左外连接、右外连接) 三、除法 四、举例,一、(广义)笛卡尔积(P53),关系R(n列,k1元组)与关系S(m列,k2元组)的(广义)笛卡尔积是一个(n+m)列k1*k2个元组集合。,student与sc的广义笛卡尔积为3*2=6行,5+3=8列。将学生表的每一行与选课表的每一行进行连接,student表(5列,3行),sc 表(3列,2行),广义笛卡尔积的查询表达,查询的关系代数表达(P53) 关系代数表达式:S SC 查询的SQL表达 SQL表达式:select student.*,sc.*

2、from student,sc; 注意:广义笛卡尔积的结果值没有意义!要使其有意思需要加上连接条件,即从中选出满足条件的元组。,二、连接运算,条件连接 等值连接(特殊的条件连接) 自然连接(特殊的等值连接) 自身连接 左外连接 右外连接,条件连接(P57),在两个关系student、sc的广义笛卡尔积中选择属性间满足一 定条件的元组 条件为:student.snosc.sno(6个中1个满足条件) 条件为:student.sno=sc.sno(6个中2个满足条件),条件连接的表达,条件为student.snosc.sno s. Sno=sc.sno 含义:从广义笛卡尔积S SC中选择满足比较运

3、算表达式AB的元组,A、B分别为S、SC 上度数相等且可比的属性组。,连接条件,无实际意义,特殊条件连接:等值连接,等值连接与自然连接,等值连接是特殊的条件连接(比较运算表达式AB 中, 为“=”的连接运算符) 等值连接的问题:列重复 自然连接是特殊的等值连接(去掉重复列) 关系代数表达自然连接运算:S SC SQL表达式:select student.*,o,sc.grade from student,sc where student.sno=sc.sno; sc.grade的前缀sc.可以省略,基于是否唯一出现在某一个表中。考题! 例子查询每个学生及其选修课程情况(给出学生与课程信息)(分

4、别考虑等值与自然连接)P100-101,等值连接,自然连接,自身连接、左外连接、右外连接,自身连接P102 例35查询每门课的间接先修课 select o,second.cpno from course first , course second /*取两个别名*/ where first.cpno=o; first表: (临时表) second 表: (临时表) 查询结果: (可以理解成 先连接 后投影) 其对应的关系代数表达式:,自身连接、左外连接、右外连接,左外连接P103列出左边关系(student)中的所有元组 select student.sno, sname, ssex, sag

5、e, sdept, cno,grade from student left outer join sc on student.sno=sc.sno; 学生表: 选课表sc: (student) Student sc自然连接:(左边关系某些元组未出现在目标表中) 左外连接的结果:,自身连接、左外连接、右外连接,右外连接P103,列出右边关系(sc)中的所有元组 select student.sno, sname, ssex, sage, sdept, cno,grade from student right outer join sc on student.sno=sc.sno; 学生表: 选课

6、表sc: (student) Student sc自然连接:(左边关系某些元组未出现在目标表中) 右外连接:,三、除法运算(SQL表达后讲),例子1: P59例6 关系R: 关系S: R S: R中a1的象集包含了S在(B,C)属性组上的投影,关系R中, a1的象集:(b1,c2),(b2,c),(b2,c1) a2的象集:(b3,c7),(b2,c3) a3的象集:(b4,c6) a4的象集:(b6,c6),三、除法运算(SQL表达后讲),例子2: P60例7查询至少选修了1、3号课程的学号 关系Sno,Cno(SC) 临时关系K: R S: 空 问:如果希望2010002出现在目标表中,S

7、C表中需要增加什么记录?,关系Sno,Cno(SC) 中, 2010001的象集:(1) 2010002的象集:(2),四、举例P60例8,P60 例8 查询选修了2号课程的学生学号 关系代数表达式:sno(cno=2(sc)) SQL表达式子:select sno from sc where cno=2 问题:题目改为,查询选修了2号课程学生的学号及姓名,如何表达查询?(连接查询及嵌套查询) 连接查询 关系代数: sno,sname(cno=2(scS)) SQL:select s.sno,sname from sc,s where sc.sno=s.sno and cno=2 学生表: 选

8、课表sc: (student) 查询结果:,四、举例P60例8,嵌套查询 关系代数表达式: sno(cno=2(sc)) sno,sname (s) SQL表达式: select sno,sname from s where sno in (select sno from sc where cno=2) 嵌套查询的SQL语句的求解过程 先子查询(select sno from sc where cno=2) SC表: 查询结果: 后外查询 student表: sno in (select sno from sc where cno=2),四、举例P60例9-1,P60【例9】查询至少选修了一门

9、其直接先行课为1号课程的学生姓名(关系代数及SQL表达) 嵌套查询: 第一步:求先行课为1号课程的课程号,涉及课程表. P1:cno(cpno=1(coruse)) -关系代数表达式 Select cno from c where cpno=1 -SQL表达式 第二步:选了上述课程的学生学号 P2:sno(P1SC ) Select sno from sc where cno in (Select cno from c where cpno=1) 第三步:根据学号求姓名 P2Sno,Sname(Student),投影出Sname Select sno,sname from s where sn

10、o in (Select sno from sc where cno in (Select cno from c where cpno=1),四、举例P60例9-2,P60【例9】查询至少选修了一门其直接先行课为1号课程的学生姓名(关系代数及SQL表达) 连接查询: 关系代数表达:Sno,Sname (cpno=1(coruse)SCS) Select s.sno,sname from s,sc,c where cpno=1 and s.sno=sc.sno and o=o 问题:s.sno的前缀s.是否可以省略,四、举例P60例9-3,P60【例9】查询至少选修了一门其直接先行课为1号课程的

11、学生姓名(关系代数及SQL表达) 嵌套查询: 第一步:求先行课为1号课程的课程号,涉及课程表. P1:cno(cpno=1(coruse)) -关系代数表达式 Select cno from c where cpno=1 -SQL表达式 第二步:选了上述课程的学生学号 P2:sno(P1SC ) Select sno from sc where cno in (Select cno from c where cpno=1) 第三步:根据学号求姓名 P2Sno,Sname(Student),投影出Sname Select sno,sname from s where sno in (Select sno from sc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论