1、大数据库系统概论习地训练题目及答案详解其它地训练题目数据库系统概论复习资料:第一章假设教学管理规定:一个学生可选修多门课,一门课有若干学生选修;一个教师可讲授多门课,一门课只有一个教师讲授;一个学生选修一门课,仅有一个成绩。学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。要求:根据上述语义画出ER图,要求在图中画出实体的属性并注明联系的类型;解答:第2章关系数据库1、设有如下所示的关系S(S#,SNAME,AGE,SEX)、C(C#,CNAME,TEACHER)和SC(S#,C#,GRADE),试用关系代数表达式表示下列查询语句:(1)检索“程军”老师所
2、授课程的课程号(C#)和课程名(CNAME)。 (2)检索年龄大于21的男学生学号(S#)和姓名(SNAME)。 (3)检索至少选修“程军”老师所授全部课程的学生姓名(SNAME)。 (4)检索”李强”同学不学课程的课程号(C#)。 (5)检索至少选修两门课程的学生学号(S#)。 (6)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。 (7)检索选修课程包含“程军”老师所授课程之一的学生学号(S#)。 (8)检索选修课程号为k1和k5的学生学号(S#)。 (9)检索选修全部课程的学生姓名(SNAME)。 (10)检索选修课程包含学号为2的学生所修课程的学生学号(S#)。 (11
3、)检索选修课程名为“C语言”的学生学号(S#)和姓名(SNAME)。 解:本题各个查询语句对应的关系代数表达式表示如下:(1). C#,CNAME(TEACHER=程军(C) (2). S#,SNAME(AGE21SEX=”男”(C) (3). SNAMEs S#,C#(sc)C#(TEACHER=程军(C) (4). C#(C)- C#(SNAME=李强(S) SC) (5). S#(1=425 (SC SC)(6). C#,CNAME(C (S#,C#(sc)S#(S) (7). S#(SCC#(TEACHER=程军(C) (8). S#,C#(sc)C#(C#=k1 C#=k5(C) (
4、9). SNAMEs S#,C#(sc)C#(C) (10). S#,C#(sc)C#(S#=2(SC)(11). S#,SNAMEs S#(SCCNAME=C语言(C)2、关系R和S如下图所示,试计算RS。 RABCDabcdabefabhkbdefbddlckcdckef SCDcdef3、已知关系r、s、w,如下图所示,计算T=( (r s)w) S。 r关系 s关系 w关系ABC1b22a31b13a2ABC2b13b13a13a2BCa2b1答:步骤1:计算出新关系R1=r s R1=ABC1b22a31b13a22b13b13a1步骤2:计算出新关系R2=R1w R2=A3步骤3:
5、计算出新关系R3=R2 s R3=ABC3b13b23a2 即T= R3=(r s)w) s4、设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式(具体见教材74页第5题):1)求供应工程J1零件的供应商号码SNO:Sno(Jno=J1(SPJ))2)求供应工程J1零件P1的供应商号码SNO:Sno(Jno=J1Pno=P1(SPJ)3)求供应工程J1零件为红色的供应商号码SNO:Sno(Pno=P1 (COLOR=红 (P)SPJ))4)求没有使用天津供应商生产的红色零件的工程号JNO:Jno(SPJ)- JNO(city=天津Color=红 (SSPJP)5)求至少用了供应商S1所供
6、应的全部零件的工程号JNO:Jno,Pno(SPJ) Pno(Sno=S1 (SPJ)第3章关系数据库标准语言SQL1、设有如下关系表R: R(No,NAME,SEX,AGE,CLASS) 主关键字是NO其中NO为学号,NAME为姓名,SEX为性别,AGE为年龄,CLASS为班号。写出实现下列功能的SQL语句。 插入一个记录(25,“李明”,“男”,21,“95031”); 插入“95031”班学号为30、姓名为“郑和”的学生记录; 将学号为10的学生姓名改为“王华”;将所有“95101”班号改为“95091”;删除学号为20的学生记录; 删除姓“王”的学生记录;答案:INSERT INTO
7、R VALUES(25,“李明”,“男”,21,“95031”) INSERT INTO R(NO,NAME,CLASS) VALUES(30,“郑和”,“95031”) UPDATE R SET NAME=“王华”WHERE NO10 UPDATE R SET CLASS“95091”WHERE CLASS“95101” DELETE FROM R WHERE NO=20DELETE FROMR WHERE NAME LIKE“王”2、设学生课程数据库中有三个关系:学生关系S(S#,SNAME,AGE,SEX)学习关系SC(S#,C#,GRADE)课程关系C(C#,CNAME)其中S#、C#
8、、SNAME、AGE、SEX、GRADE、CNAME分别表示学号、课程号、姓名、年龄、性别、成绩和课程名。用SQL语句表达下列操作(1)检索选修课程名称为“MATHS”的学生的学号与姓名 (2)检索至少学习了课程号为“C1”和“C2”的学生的学号(3)检索年龄在18到20之间(含18和20)的女生的学号、姓名和年龄(4)将一个新学生元组(学号:200215128;姓名:王丽;年龄:19;性别:女)插入到S表中(5)将选修课程号为“C1”的同学成绩加5分(6)找出每个学生超过他选修课程平均成绩的课程号(7)查询查询选修“C2”号课程且成绩在90分以上的所有学生。(8)查询所有姓刘的学生的姓名、学
9、号和性别(9)检索平均成绩超过80分的学生学号和平均成绩(10)检索选修了全部课程的学生姓名(11)检索选修了三门课以上的学生的姓名(12)创建视图stu_info,包括选修“C1”号课程所有学生的学号、姓名、性别、年龄、选修课程号、课程名、成绩答案:(1)SELECT SNAME,AGE FROM S,SC,C WHERE S.S#=SC.S# AND C.C#=SC.C# AND CNAME= MATHS(2) SELECT S# FROM SC WHERE CNO=C1 AND S# IN( SELECT S# FROM SC WHERE CNO=C2)(3)SELECT S#,SNAM
10、E,AGE FROM S WHERE AGE BETWEEN 18 AND 20(4) INSERT INTO S(S#,SNAME,AGE,SEX) VALUES(“200215128”,”王丽”,19,”女”); (5) update sc Set grade = grade+5 Where c#=C1;(6) select s#,c#From S x where grade=(select avg(grade) from c y where y.S#=x.s#); (7) select s.s#,sname from s,sc where s.s#=sc.s# and sc.c#=C2
11、and sc.grade90; (8) select sname,s#,sex from s where like 刘%; (9) SELECT S# ,AVG(GRADE) 平均成绩 FROM SC GROUP BY S# HAVING AVG(GRADE)80(10) SELECT SNAMEFROM SWHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE S#=S.S# AND C#=C.C# ) (11) SELECT SNAME FROM S,SC WHERE S.S#=SC.S# GRO
12、UP BY SNAME HAVING COUNT(*)3 (12)CREATE VIEW stu_info AS SELECT s.sno,sname,sex,age,o,cname,gradeFrom s,sc,cwhere s.sno=sc.sno and o= o and o=C13、设学生-课程数据库中包括三个表: 学生表:Student (Sno,Sname,Sex,Sage,Sdept)课程表:Course(Cno,Cname,Ccredit)学生选课表:SC(Sno,Cno,Grade)其中Sno、Sname、Sex、Sage、Sdept、 Cno、Cname、Ccredit 、
13、Grade分别表示学号、姓名、性别、年龄、所在系名、课程号、课程名、学分和成绩。试用SQL语言完成下列项操作:(1)查询选修课程包括“1042”号学生所学的课程的学生学号(2)创建一个计科系学生信息视图S_CS_VIEW,包括Sno学号、Sname姓名、Sex性别;(3)通过上面第2题创建的视图修改数据,把王平的名字改为王慧平(4)创建一选修数据库课程信息的视图,视图名称为datascore_view,包含学号、姓名、成绩。答案:(1) SELECT DISTINCT SNO FROM SC SCX WHERE NOT EXISTS (SELECT * FROM SC SCY WHERE SC
14、Y.SNO = 1042 AND NOT EXISTS (SELECT * FROM SC SCZ WHERE SCZ.SNO=SCX.SNO AND SCZ.CNO=SCY.CNO); (2) CREATE VIEW S_CS_VIEW AS SELECT SNO,SNAME,SEX FROM STUDENT WHERE Sdept=CS (3)UPDATE S_CS_VIEW SET SNAME= 王慧平 WHERE SNAME= 王平(4) CREATE VIEW datascore_view AS SELECT SNO 学号、SNAME 姓名、GRADE 成绩 FROM STUDENT,SC,COURSE WHERE STUDENT.SNO=SC.SNO AND COURSE.CNO=SC.CNO AND CNAME= 数据库
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1