《数据库期末复习总结.doc》由会员分享,可在线阅读,更多相关《数据库期末复习总结.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库系统概论复习大纲一、课本主要内容:1、 数据库的定义2、 数据库系统的特点3、 概念模型4、 关系模型5、 数据库的三级模式与二级映像功能6、 关系的定义及主码、候选码、主属性、非码属性、全码等相关概念7、 五种基本关系操作8、 关系的三类完整性约束与关系的两个不变性9、 关系代数10、 第3章所有内容11、 DAC和MAC机制的原理,grant及revoke语句12、 可能破坏参照完整性的情况及违约处理13、 触发器的执行顺序14、 规范化的概念及各种范式的判断,即整个6.2节15、 数据库设计的特点与步骤16、 设计分E-R图应选择什么样的局部应用?有什么样的准则?17、 视图集成时
2、的三类冲突18、 E-R图向关系模型的转换19、 第8章简单了解20、 第10章所有内容21、 第11章所有内容二、所有布置的课后习题第一章(9,11,12,20,22)第二章(3,5,6)第三章(5)第四章(6,8,12)第五章(2,6)第六章(2,12)第七章(18,19)第十章(1,9,12)第十一章(6,7,9,10)三、第2章、第3章、第6章课堂综合练习题1、首先看查询的条件和结果中涉及到的属性列来自哪些表,将其归置到最少的表中查询。若涉及多个表则需将表进行连接操作。2、对于只涉及到选择、投影、连接的查询可用下列表达式表示:.(. (RS) 或者. (. (R S) 3、对于否定的操
3、作,一般用差操作表示。 如:“查询不学C2课程的学生姓名”一般用 所有学生的姓名-选修C2课程的学生姓名4、对于查询具有“全部”特征的操作,一般要用除法操作表示。 例如:查询学习全部课程的学生学号,可用如下形式: sno,cno(SC) cno(Course) 5、设有三个关系:S(sno,sname,sex,age)SC(sno,cno,grade)C(cno,cname,teacher) 试用关系代数表达式表示下列查询语句1、查询LIU老师所授课程的课程号和课程名2、查询年龄大于23岁的男学生的学号和姓名3、查询学号为S3学生所学课程的课程名与任课教师名4、查询至少选修LIU老师所授课程中
4、一门课程的女学生姓名5、查询WANG同学不学的课程的课程号6、查询至少选修两门课的学生学号7、查询全部学生都选修的课程的课程号与课程名8、查询选修课程包含LIU老师所授全部课程的学生学号。答案:1、查询LIU老师所授课程的课程号和课程名cno,cname(teacher=LIU(C)2、查询年龄大于23岁的男学生的学号和姓名sno,sname(age23 sex=M(S)3、查询学号为S3学生所学课程的课程名与任课教师名cname,teacher(sno=S3(SC C)4、查询至少选修LIU老师所授课程中一门课程的女学生姓名sname(teacher=LIU sex=F(S SC C)5、查
5、询WANG同学不学的课程的课程名cname ( C ) - cname(sname=WANG(S SC)6、查询至少选修两门课的学生学号1(1=4 2=5(SC x SC)7、查询全部学生都选修的课程的课程号与课程名cno,cname(C (sno,cno (SC) sno (S) )8、查询选修课程包含LIU老师所授全部课程的学生学号sno,cno(SC) cno (teacher=LIU(C )第三章设有三个关系:S(sno,sname,sex,age)SC(sno,cno,grade)C(cno,cname,teacher) 试用SQL语句表示下列查询语句1、查询LIU老师所授课程的课程
6、号和课程名2、查询年龄大于23岁的男学生的学号和姓名3、查询学号为S3学生所学课程的课程名与任课教师名4、查询至少选修LIU老师所授课程中一门课程的女学生姓名5、查询WANG同学不学的课程的课程号6、查询至少选修两门课的学生学号7、查询全部学生都选修的课程的课程号与课程名8、查询选修课程包含LIU老师所授全部课程的学生学号。9、统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 10、求LIU老师所授课程的每门课程的平均成绩11、检索姓名以L打头的所有学生的姓名和年龄。12、求年龄大于所有女同学年龄的男学生姓名和年
7、龄。13、往关系C中插一个课程元组(C8,VC+,BAO)14、把选修LIU老师课程的女同学选课元组全部删去。15、把低于所有课程总平均成绩的男同学成绩提高5% .答案:1、查询LIU老师所授课程的课程号和课程名涉及到的表:C(cno,cname,teacher)Select cno,cname from Cwhere teacher=LIU2、查询年龄大于23岁的男学生的学号和姓名涉及到的表:S(sno,sname,sex,age)方法一:一般的查询Select sno,sname from S where age23 and sex=M方法二:用IN嵌套查询Select sno,sname
8、 from S where age23 and sno in(select sno from s where sex=男)方法三:用EXISTS嵌套查询Select sx.sno, sx.sname from s sx where sx.age23 and exists(select * from s sy where sy.sex=男 and sy.sno=sx.sno)方法四:自连接Select sx.sno, sx.sname from s sx, s xywhere sx.sno=sy.sno andsx.age23 and sy.sex=男方法五:集合查询Select sno,sna
9、me from S where age23 IntersectSelect sno,sname from S where sex=男3、查询学号为S3学生所学课程的课程名与任课教师名涉及到的表:SC(sno,cno,grade)C(cno,cname,teacher)方法一:连接查询Select cname ,teacher from SC,C where SC.cno=C.cno and sno=S3方法二:IN嵌套查询Select cname ,teacher from C where cno in( select cno from SC where sno=S3 )方法三:EXIST嵌套
10、查询Select cname ,teacher from C where exists(select * from SC where sno=S3 and SC.cno=C.cno)4、查询至少选修LIU老师所授课程中一门课程的女学生姓名涉及到全部的表:S,SC,C方法一:连接查询Select sname from S,SC,C where S.sno=SC.sno and SC.cno=C.cno and sex=F and teacher=LIU方法二:IN嵌套查询Select sname from Swhere sex=F and sno in (select sno from SC w
11、here cno in (select cno from C where teacher=LIU)方法三:EXISTS嵌套查询Select sname from Swhere sex=F and exists (select * from C where teacher=LIU and exists (select * from SC where SC.sno=S.sno and SC.cno=C.cno )5、查询WANG同学不学的课程的课程号涉及到全部的表:S,SC,C方法一:NOT EXISTS嵌套查询Select cno from Cwhere not exists (select *
12、 from S,SC where S.sno=SC.sno and SC.cno=C.cno and sname=WANG)方法二:集合查询Select cno from CExceptSelect distinct cno from S, SC where S.sno=SC.sno and sname=WANG6、查询至少选修两门课的学生学号涉及到的表:SCSelect sno from SCgroup by sno having count(*)=27、查询全部学生都选修的课程的课程号与课程名涉及到全部的表:S,SC,CSelect cno,cname from Cwhere not ex
13、ists (select * from S where not exists (select * from SC where sno=S.sno and cno=C.cno)8、查询选修课程包含LIU老师所授全部课程的学生学号涉及到的表:SC,CSelect distinct sno from SC as Xwhere not exists (select * from C where teacher=LIU and not exists (select * from SC as Y where Y.sno=X.sno and Y.cno=C.cno)9、统计每门课程的学生选修人数(超过10人
14、的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列 涉及到的表:SCSelect cno,count(sno) from SC group by cno having count(*)10order by 2 desc,110、求LIU老师所授课程的每门课程的平均成绩涉及到的表:SC,CSelect C.cno,avg(grade) from SC,Cwhere SC.cno=C.cno and teacher=LIU group by C.cno11、检索姓名以L打头的所有学生的姓名和年龄涉及到的表:SSelect sname,age from S w
15、here sname like L%12、求年龄大于所有女同学年龄的男学生姓名和年龄涉及到的表:S方法一:allSelect sname,age from Swhere sex=M and ageall (select age from S where sex=F)方法二:maxSelect sname,age from Swhere sex=M and age (select max(age) from S where sex=F)13、往关系C中插一个课程元组(C8,VC+,BAO)Insert into C values(C8,VC+,BAO)14、把选修LIU老师课程的女同学选课元组全
16、部删去Delete from SC where sno in (select sno from S where sex=F) and cno in (select cno from C where teacher=LIU)15、把低于所有课程总平均成绩的男同学成绩提高5%Update SC set grade=grade*1.05 where sno in (select sno from S where sex=F)and grade (select age(grade) from SC)第六章判断关系模式级别的过程1、先确定关系R的所有候选码2、写出R的所有基本函数依赖3、根据各范式的判断
17、准则进行判断设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。如果规定:每个职工每天只有一个营业额;每个职工只在一个部门工作;每个部门只有一个经经理。试回答下列问题:(1)写出模式R的码和基本函数依赖(2)R是2NF吗?若不是,将R分解成2NF模式集(3)将上一问中的2NF分解成3NF模式集。(1)R的码是(职工编号,日期)基本的函数依赖有:(职工编号,日期)日营业额职工编号部门名,部门名部门经理(2)R中有两个这样的函数依赖:(职工编号,日期)部门名 职工编号部门名前一个是部分依赖,所以R不是2NF。可将R分解为如下两个模式:R1(职工编号,部门名,部门经理) 2NFR2(职工编号,日期,日营业额 ) 2NF(3)R2(职工编号,日期,日营业额 ) 3NF :R1(职工编号,部门名,部门经理) 2NF中存在两个函数依赖:职工编号部门名,部门名 部门经理这是一个传递依赖,因此R1不是3NF,可将其分解为以下两个模式:R11(职工编号,部门名) 3NF R12(部门名,部门经理) 3NF
限制150内