数据库习题答案

2019-03-29 18:05

第二章

2.6 设有关系R和S:

R A B C S A B C

3 6 7 3 4 5 2 5 7 7 2 3 7 2 3 4 4 3

计算R∪S,R-S,R∩S,R×S,π3,2(S),σB<’5’(R),R 2<2 S, R S。 解: R∪S A B C R-S A B C R∩S 3 6 7 3 6 7 2 5 7 2 5 7 7 2 3 4 4 3 4 4 3 3 4 5

R×S R.A R.B R.C S.A S.B S.C π3,2(S) 3 6 7 3 4 5 3 6 7 7 2 3 2 5 7 3 4 5 2 5 7 7 2 3 7 2 3 3 4 5 7 2 3 7 2 3 4 4 3 3 4 5 4 4 3 7 2 3

σB<’5’(R) A B C R?S R.A R.B R.C S.A S.B S.C 7 2 3 7 2 3 3 4 4 3 R?S A B C 7 2 3

2.7 设有关系R和S:

R A B S B C a b b c c b e a d e b d 计算R ? S,R ? S,σA=C(R×S),S ? R。

解: R?S A B C R?S R.A R.B S.B C a b c a b b c a b d a b b d c b c c b b c c b d c b b d d e a S ? R B C b c b d

A B C 7 2 3 B 5 4 3 2 4 5 C 2.17 设有4个关系:

S(S#,SNAME,AGE,SEX) SC(S#,C#,SCORE) C(C#,CNAME,T#) T(T#,TNAME,TITLE)

试用关系代数表达式表示下列查询语句:

① 检索年龄小于17岁的女学生的学号和姓名。 ② 检索年男学生所学课程的课程号和课程名。 ③ 检索男学生所学课程的任课教师的工号和姓名。 ④ 检索至少选修两门课程的学生学号。

⑤ 检索至少有学号为S2和S4学生选修的课程的课程号。 ⑥ 检索WANG同学不学的课程的课程号。

⑦ 检索全部学生都选修的课程的课程号与课程名。

⑧ 检索选修课程包含LIU老师所授全部课程的学生学号。 解:? πS#,SNAME(σAGE<’17’ ∧SEX=’F’(S)) ? Πc#,CNAME(σSEX='M'(S?SC?C)) ? ΠT#,TNAME(σSEX='M'(S?SC?C?T)) ? π1(σ1=4 ∧ 2≠5(SC×SC))

? π2(σ1=S2 ∧4=S4∧ 2=5(SC×SC)) ? πC#(C)-πC#(σSNAME='WANG'(S?SC)) ? πC#,CNAME(C?(πS#,C#(SC)÷πS#(S))) ? πS#,C#(SC)÷πC#(σTNAME='LIU'(C?T))

2.21 在教学数据库的关系S、SC、C中,用户有一查询语句:检索女同学选修课程的课程名和任课教师名。

① 试写出该查询的关系代数表达式。 ② 画出查询表达式的语法树。

③ 使用启发式优化算法,对语法树进行优化,并画出优化后的语法树。 解:① 关系代数表达式为:

πCNAME,TEACHER(σSEX=’F’(S?SC?C?T)) 上述的关系代数表达式为:

πCNAME,TEACHER(σSEX=’F’(πL(σS.S#=SC.S# ∧ SC.C#=C.C#((S×SC)×C)))) 此处L为S、SC、C中全部属性(公共属性只取一次)。

②上述关系代数表达式的语法树如图2.2所示。

图2.2

③ 上述的关系代数表达式为: 优化后的语法树如图2.3所示。

图2.3

第三章

3.2 对于教学数据库的4个基本表 S(S#,SNAME,AGE,SEX) SC(S#,C#,SCORE) C(C#,CNAME,T#) T(T#,TNAME,TITLE) 试用SQL的查询语句表达下列查询: 试用关系代数表达式表示下列查询语句:

① 检索年龄小于17岁的女学生的学号和姓名。 ② 检索年男学生所学课程的课程号和课程名。 ③ 检索男学生所学课程的任课教师的工号和姓名。 ④ 检索至少选修两门课程的学生学号。

⑤ 检索至少有学号为S2和S4学生选修的课程的课程号。 ⑥ 检索WANG同学不学的课程的课程号。

⑦ 检索全部学生都选修的课程的课程号与课程名。

⑧ 检索选修课程包含LIU老师所授全部课程的学生学号。

解:① SELECT S#, SNAME FROM S

WHERE AGE<23 AND SEX=’F’; ② SELECT C.C#,CNAME FROM S,SC,C

WHERE S.S#=SC.S# AND SC.C#=C.C# AND SEX=’M’; ③ SELECT T#,TEACHER FROM S,SC, C,T

WHERE S.S#=SC.S# AND SC.C#=C.C# AND C.T#=T.T# AND SEX=’M’; ④ SELECT DISTINCT X.S# FROM SC AS X, SC AS Y

WHERE X.S#=Y.S# AND X.C#!=Y.C# ⑤ SELECT DISTINCT X.C# FROM SC AS X, SC AS Y

WHERE X.S#=S2 AND Y.S#=S4 AND X.C#=Y.C#; 嵌套写法:SELECT C# FROM SC

WHERE S#=S2 AND C# IN

(SELECT C# FROM SC

WHERE SC.S#=S4); ⑥ SELECT C# FROM C

WHERE NOT EXISTS (SELECT * FROM S, SC

WHERE S.S#=SC.S# AND SC.C#=C.C# AND SNAME=’WANG’); ⑦ SELECT C#, CNAME FROM C

WHERE NOT EXISTS (SELECT * FROM S

WHERE NOT EXISTS (SELECT * FROM SC

WHERE S#=S.S# AND C#=C.C#)); ⑧ SELECT DISTINCT S# FROM SC AS X WHERE NOT EXISTS (SELECT * FROM C

WHERE TNAME=’LIU’ AND NOT EXISTS (SELECT *

FROM SC AS Y

WHERE Y.S#=X.S# AND Y.C#=C.C#));

3.7 试用SQL查询语句表达下列对3.2题中4个基本表S、SC、C、T的查询: ① 统计有学生选修的课程门数。

② 求选修C4课程的女学生的平均年龄。

③ 求LIU老师所授课程的每门课程的平均成绩。

④ 统计每门课程的学生选修人数(超过10人的学生才统计)。要求显示课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 ⑤ 检索学号比WANG同学大,而年龄比他小的学生姓名。 ⑥ 在表SC中检索成绩为空值的学生学号和课程号。 ⑦ 检索姓名以L打头的所有学生的姓名和年龄。

⑧ 求年龄大于女同学平均年龄的男学生姓名和年龄。 ⑨ 求年龄大于所有女同学年龄的男学生姓名和年龄。 解:① SELECT COUNT(DISTINCT C#) FROM SC; ② SELECT AVG(AGE)


数据库习题答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:奇安达品牌专卖店营销策划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: