数据库系统大题
①一个学生可选修多门课,一门课有若干学生选修; ②一个教师可讲授多门课,一门课只有一个教师讲授; ③一个学生选修一门课,仅有一个成绩。 要求根据上述语义画出 ER 图,要求在图中画出实体的属性并注明联系的类型; 解答 课程号课程名 1、设有如下所示的关系 SS,SNAME,AGE,SEX、CC,CNAME,TEACHER和SCS,C,GRADE,试用关系 学号 代数表达式表示下列查询语句 学生选修 1检索“程军”老师所授课程的课程号C和课程名CNAME。 课程 mn 姓名 2检索年龄大于 21 的男学生学号S和姓名SNAME。 n 3检索至少选修“程军”老师所授全部课程的学生姓名SNAME。 成绩 讲授 4检索”李强”同学不学课程的课程号C。 5检索至少选修两门课程的学生学号S。 1 6检索全部学生都选修的课程的课程号C和课程名CNAME。 教师 7检索选修课程包含“程军”老师所授课程之一的学生学号S。 教师编号 8检索选修课程号为 k1 和 k5 的学生学号S。 9检索选修全部课程的学生姓名SNAME。 10检索选修课程包含学号为 2 的学生所修课程的学生学号S。 11检索选修课程名为“C 语言”的学生学号S和姓名SNAME。 解本题各个查询语句对应的关系代数表达式表示如下 1. ∏C,CNAMEσTEACHER‘程军’C 2. ∏S,SNAMEσAGE21∧SEX”男”C 3. ∏SNAME{s[∏S,C(sc)∏CσTEACHER‘程军’C]} SC 教师姓名 4. ∏CC- ∏CσSNAME‘李强’S 5. ∏Sσ[1][4]∧[2]≠[5] SC SC 6. ∏C,CNAMEC 7. ∏SSC ∏S,Csc∏SS ∏CσTEACHER‘程军’C 8. ∏S,C(sc)∏CσC’k1’∨ C’k5’C 9. ∏SNAME{s[∏S,C(sc)∏CC]} 10. ∏S,C(sc)∏CσS’2’SC 11. ∏S,SNAME{s[∏SSCσCNAME‘C 语言’C]} 2、关系 R 和 S 如下图所示,试计算 RS。 R ABCD a a a b b c c b b b d d k k c e h e d c e d f k f l d f S C c e D d f 1、设有如下关系表 R RNo,NAME,SEX,AGE,CLASS 主关键字是 NO 其中 NO 为学号,NAME 为姓名,SEX 为性别,AGE 为年龄,CLASS 为班号。 写出实现下列功能的 SQL 语句。 ①插入一个记录25,“李明”,“男”,21,“95031”; ②插入“95031”班学号为 30、姓名为“郑和”的学生记录; ③将学号为 10 的学生姓名改为“王华”; ④将所有“95101”班号改为“95091”; ⑤删除学号为 20 的学生记录; ⑥删除姓“王”的学生记录; 答案 ①INSERT INTO R VALUES25,“李明”,“男”,21,“95031” ②INSERT INTO RNO,NAME,CLASSVALUES30,“郑和”,“95031” ③UPDATE R SET NAME“王华”WHERENO=10 ④UPDATE R SET CLASS=“95091”WHERE CLASS=“95101” ⑤DELETE FROM R WHERE NO20 ⑥DELETE FROMR WHERE NAME LIKE“王%” 2、设学生课程数据库中有三个关系 学生关系 S(S,SNAME,AGE,SEX) 学习关系 SC(S,C,GRADE) 课程关系 C(C,CNAME) 其中 S、C、SNAME、AGE、SEX、GRADE、CNAME 分别表示学号、课程号、姓名、年龄、性别、 成绩和课程名。 用 SQL 语句表达下列操作 (1)检索选修课程名称为“MATHS”的学生的学号与姓名 (2)检索至少学习了课程号为“C1”和“C2”的学生的学号 (3)检索年龄在 18 到 20 之间(含 18 和 20)的女生的学号、姓名和年龄 (4) (5)将选修课程号为“C1”的同学成绩加 5 分 (6)找出每个学生超过他选修课程平均成绩的课程号 (7)查询查询选修“C2”号课程且成绩在 90 分以上的所有学生。 (8)查询所有姓刘的学生的姓名、学号和性别 (9)检索平均成绩超过 80 分的学生学号和平均成绩 (10)检索选修了全部课程的学生姓名 (11)检索选修了三门课以上的学生的姓名 (12)创建视图 stu_info,包括选修“C1”号课程所有学生的学号、姓名、性别、年龄、选修课程号、课程 名、成绩 答案 (1)SELECT SNAME,AGE FROM S,SC,C WHERE S.SSC.S AND C.CSC.C AND CNAME’ MATHS’ 2 SELECT S FROM SC WHERE CNO’C1’ AND S IN SELECT S FROM SC WHERE CNO’C2’ 3SELECT S,SNAME,AGE FROM S WHERE AGE BETWEEN 18 AND 20 4 INSERT INTOSS,SNAME,AGE,SEX VALUES“”,”王丽”,19,”女”; 5 UPDATE SC SET GRADE GRADE5 WHEREC‘C1’; 6 SELECT S,C FROM SXWHERE GRADESELECT AVGGRADEFROM C Y WHERE Y.SX.S; 7 SELECT S.S,SNAME FROM S,SC WHERE S.SSC.S AND SC.C’C2’ AND SC.GRADE90; 8 SELECT SNAME,S,SEX FROM S WHERE LIKE ‘刘’; 9 SELECT S ,AVGGRADE ‘平均成绩’ FROM SC GROUP BY S HAVING AVGGRADE80 10 SELECTSNAME FROMS WHERENOTEXISTS SELECT* FROMC WHERE NOTEXISTS SELECT* FROMSC WHERE SS.SAND CC.C 11 SELECT SNAME FROM S,SC WHERE S.SSC.S GROUP BY SNAME HAVING COUNT*3 12CREATEVIEWSTU_INFOAS SELECT S.SNO,SNAME,SEX,AG