③ 将学号为10的学生姓名改为“王华”; 。 ④ 将所有“95101”班号改为“95091”; 。 ⑤ 删除学号为20的学生记录; 。 ⑥ 删除姓“王”的学生记录; 。 答案:
① INSERT INTO R VALUES(25,“李明”,“男”,21,“95031”)
② INSERT INTO R(NO,NAME,CLASS) VALUES(30,“郑和”,“95031”) ③ UPDATE R SET NAME=“王华”WHERE NO=10
④ UPDATE R SET CLASS=“95091”WHERE CLASS=“95101” ⑤ DELETE FROM R WHERE NO=20
⑥ DELETE FROMR WHERE NAME LIKE“王%”
22、在关系A(S,SN,D)和B(D,CN,NM中,A的主键是S,B的主键是D,则D在S中称为 。 答案:外部键
23、对于非规范化的模式,经过 ① 转变为1NF,将1NF经过 ② 转变为2NF,将2NF经过 ③ 转变为3NF。 答案:① 使属性域变为简单域
② 消除非主属性对主关键字的部分依赖 ③ 消除非主属性对主关键字的传递依赖
24、在关系数据库的规范化理论中,在执行“分解”时,必须遵守规范化原则:保持原有的依赖关系和 。 答案:无损连接性
25、模式/内模式映象为数据库提供了数据的 独立性。 答案:物理 26、在关系代数运算中,从关系中取出满足条件的元组的运算称为 。 答案:选择
27、在关系数据库中,把数据表示成二维表,每一个二维表称为 。 答案:关系 或关系表
28、用树型结构表示实体类型及实体间联系的数据模型称为 。 答案:层次模型
29、关系完整性约束条件包含:实体完整性、 和用户自定义完整性。 答案:参照完整性
30、包含在任何一个侯选码中的属性,叫做 。 答案:主属性
31、设有s(学号, 姓名, 性别)和sc(学号, 课程号, 成绩)两个表,下面SQL的SELECT语句检索选修的每门课程的成绩都高于或等于85分的学生的学号、姓名和性别。 SELECT 学号, 姓名, 性别 FROM s
WHERE ( SELECT * FROM sc WHERE sc.学号 = s.学号 AND成绩 < 85 ) 答案:NOT EXIST
三、应用题:
1、假设教学管理规定:
① 一个学生可选修多门课,一门课有若干学生选修; ② 一个教师可讲授多门课,一门课只有一个教师讲授; ③ 一个学生选修一门课,仅有一个成绩。
学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。
要求:根据上述语义画出ER图,要求在图中画出实体的属性并注明联系的类型; 解答: 2、设有如下所示的关系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#)。
教师编号 姓名 学号 学生 课程号 m n 课程名 选修 课程 n 成绩 讲授 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(σAGE>21∧SEX=”男”(C))
(3). ∏SNAME{s?? [∏S#,C#(sc)÷∏C#(σTEACHER=‘程军’(C))]} (4). ∏C#(C)- ∏C#(σSNAME=‘李强’(S) ?? SC) (5). ∏S#(σ[1]=[4]∧[2]≠[5] (SC × SC))
(6). ∏C#,CNAME(C?? (∏S#,C#(sc)÷∏ (7). ∏S#(SC?? ∏C#(σTEACHER=‘程军’
e f S#(S))) (C)))
(8). ∏S#,C#(sc)÷∏C#(σC#=’k1’∨ C#=’k5’(C)) (9). ∏SNAME{s?? [∏S#,C#(sc)÷∏C#(C)]} (10). ∏S#,C#(sc)÷∏C#(σS#=’2’(SC))
(11). ∏S#,SNAME{s?? [∏S#(SC?? σCNAME=‘C语言’(C))]}
3、设学生课程数据库中有三个关系: 学生关系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)检索平均成绩超过80分的学生学号和平均成绩 (5)检索选修了全部课程的学生姓名
(6)检索选修了三门课以上的学生的姓名 答案:(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#,SNAME,AGE FROM S WHERE AGE BETWEEN 18 AND 20
(4) SELECT S# ,AVG(GRADE) ‘平均成绩’ FROM SC GROUP BY S# HAVING AVG(GRADE)>80
(5) SELECT SNAME FROM S
WHERE NOT EXISTS
( SELECT * FROM C WHERE NOT EXISTS
( SELECT * FROM SC WHERE S#=S.S# AND C#=C.C# ) )
(6) SELECT SNAME FROM S,SC WHERE S.S#=SC.S#
GROUP BY SNAME HAVING COUNT(*)>3
4、设学生-课程数据库中包括三个表:
学生表:Student (Sno,Sname,Sex,Sage,Sdept) 课程表:Course(Cno,Cname,Ccredit) 学生选课表:SC(Sno,Cno,Grade)
其中Sno、Sname、Sex、Sage、Sdept、 Cno、Cname、Ccredit 、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 SCY.SNO = ' 1042' AND NOT EXISTS ( SELECT * FROM SC , CZ
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=’ 数据库’
5、已知学生关系模式
S(Sno,Sname,SD,Sdname,Course,Grade)
其中:Sno学号、Sname姓名、SD系名、Sdname系主任名、Course课程、Grade成绩。 (1) 写出关系模式S的基本函数依赖和主码。