数据库习题作业.docx
- 文档编号:808979
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:17
- 大小:47.35KB
数据库习题作业.docx
《数据库习题作业.docx》由会员分享,可在线阅读,更多相关《数据库习题作业.docx(17页珍藏版)》请在冰豆网上搜索。
数据库习题作业
数据库习题作业重点(第2-3-4章)
2.6设有关系R和S:
RABCSABC
367345
257723
723
443
计算R∪S,R-S,R∩S,R×S,π3,2(S),σB<’5’(R),R2<2S,RS。
解:
R∪SABCR-SABCR∩SABC
367367723
257257
723443
443
345
R×SR.AR.BR.CS.AS.BS.Cπ3,2(S)CB
36734554
36772332
257345
257723
723345
723723
443345
443723
σB<’5’(R)ABCR⋈SR.AR.BR.CS.AS.BS.C
723723345
443
R⋈SABC
723
2.7设有关系R和S:
RABSBC
abbc
cbea
debd
B 计算R⋈S,R⋈S,σA=C(R×S),S⋉R。 2.8假设关系U和V分别有m个元组和n个元组,给出下列表达式中可能的最小和最大的元组数量: ⑴U∩V⑵U∪V ⑶U⋈V⑷σF(U)×V(F为某个条件) ⑸πL(U)-V(其中L为某属性集) 解: 操作 最小元组数 最大元组数 ⑴U∩V 0 min(m,n) ⑵U∪V max(m,n) m+n ⑶U⋈V 0 m×n ⑷σF(U)×V 0 m×n ⑸πL(U)-V 0 m 2.17设有三个关系: T(T#,TNMAE,TITLE) C(C#,CNAME,T#) S(S#,SNAME,AGE,SEX) SC(S#,C#,SCORE) 试用关系代数表达式表示下列查询语句: ①检索年龄小于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、T中,用户有一查询语句: 检索女同学选修课程的课程名和任课教师名。 ①试写出该查询的关系代数表达式。 ②画出查询表达式的语法树。 ③使用启发式优化算法,对语法树进行优化,并画出优化后的语法树。 解: 【3.2】设教学数据库中有4个关系: 教师关系T(T#,TNAME,TITLE) 课程关系C(C#,CNAME,T#) 学生关系S(S#,SNAME,AGE,SEX) 选课关系SC(S#,C#,SCORE) 试用SQL查询语句表示下列查询。 解: ①检索年龄小于17岁的女学生的学号和姓名。 SELECTS#.SNAME FROMS WHEREAGE<17ANDSEX=’F’ ②检索男学生所学课程的课程号和课程名。 SELECTC.C#,CNAME(连接查询方式) FROMS,SC,C WHERES.S#=SC.S#ANDSC.C#=C.C#ANDSEX=’M’; ③检索男学生所学课程的任课老师的工号和姓名。 SELECTT.T#,TNAME FROMS,SC,C,T WHERES.S#=SC.S#ANDSC.C#=C.C#ANDC.T#=T.T#ANDSEX=’M’; ④检索至少选修两门课程的学生学号。 SELECTDISTINCTX.S# FROMSCASX,SCASY WHEREX.S#=Y.S#ANDX.C#! =Y.C#; ⑤检索至少有学号为S2和S4的学生选修的课程的课程号。 SELECTDISTINCTX.C# FROMSCASX,SCASY WHEREX.S#=’S2’ANDY.S#=’S4’ANDX.C#=Y.C#; ⑥检索WANG同学不学的课程的课程号。 SELECTC# FROMC WHERENOTEXISTS (SELECT* FROMS,SC WHERES.S#=SC.S#ANDSC.C#=C.C#ANDSNAME=’WANG’); ⑦检索全部学生都选修的课程的课程号与课程名。 SELECTC#,CNAME FROMC WHERENOTEXISTS (SELECT* FROMS WHERENOTEXISTS (SELECT* FROMSC WHERES#=S.S#ANDC#=C.C#)); ⑧检索选修课程包含LIU老师所授全部课程的学生学号。 法一: SELECTDISTINCTS# FROMSCASX WHERENOTEXISTS (SELECT* FROMC,T WHEREC.T#=T.T#ANDTNAME=’LIU’ ANDNOTEXISTS (SELECT{ FROMSCASY WHEREY.S#=X.S#ANDY.C#=C.C#)); 法二: SELECTDISTINCTS# FROMSCX WHERENOTEXISTS ((SELECTC#FROMC,T WHEREC.T#=T.T#ANDTNAME='LIU’) EXCEPT (SELECTC#FROMSCYWHEREY.S#=X.S#)); 【3.7】试用SQL查询语句表达下列对第3.2题中4个基本表T、C、S、SC的查询。 ①统计有学生选修的课程门数。 SELECTCOUNT(DISTINCTC#)FROMSC; ②求选修C4课程的女学生的平均年龄。 SELECTAVG(AGE) FROMS,SC WHERES.S#=SC.S#ANDC#=’C4’ANDSEX=’F’: ③求LIU老师所授的每门课程的平均成绩。 SELECTC.C#.AVG(SCORE) FROMSC,C,T WHERESC.C#=C.C#ANDC.T#=T.T#ANDTNAME=’LIU’ GROUPBYC.C#; ④统计选修每门课程的学生人数(超过l0人的课程才统计)。 要求显示课程号和人数,查询结果按人数降序排列,若人数相同,则按课程号升序排列。 SELECTC#.COUNT(S#) FROMSC GROUPBYC# HAVINGCOUNT(*)>10 ORDERBY2DESC,1; ⑤检索学号比WANG同学大,而年龄比他小的学生姓名。 SELECTSNAME FROMS WHERES#>ALL(SELECTS#FROMS WHERESNAME=’WANG’) ANDAGE FROMS WHERESNAME=’WANG); ⑥在表SC中检索成绩为空值的学生的学号和课程号。 SELECTS#,C# FROMSC WHERESCOREISNULL; ⑦检索姓名以L开头的所有学生的姓名和年龄。 SELECTSNAME,AGE FROMS WHERESNAMELIKE’L%’; ⑧求年龄大于女同学平均年龄的男学生的姓名和年龄。 SELECTSNAME,AGE FROMS WHERESEX=’M’ ANDAGE>(SELECTAVG(AGE) FROMS WHERESEX=’F’); ⑨求年龄大于所有女同学年龄的男学生的姓名和年龄。 SELECTSNAME,AGE FROMS WHERESEX=‘M’ ANDAGE>ALL(SELECTAGE FROMS WHERESEX=’F’); 【3.12】 解: ①INSERTINTOC VALUES(‘C8’,’VC++’,’T6’); ② 法一: INSERTINTOFACULTY(TNAME) SELECTDISTINCTTNAME FROM(SELECTTNAME,C.C#,AVG(SCORE) FROMT,C,SC WHERET.T#=C.T#ANDC.C#=SC.C# GROUPBYTNAME,C.C#) ASRESULT(TNAME,C#,AVG—SCORE)ASX WHERE80<=ALL(SELECTAVG—SCORE FROMRESULTASY WHEREY.TNAME=X.TNAME); 法二 INSERTINTOFACULTY(TNAME) SELECTDISTINCTTNAME FROMT,C,SC WHEREC.C#=SC.C#ANDT.T#=C.T# ANDT#NOTIN(SELECTT#FROMC WHEREC#IN (SELECTC#FROMSC GROUPBYC#HAVINGAVG(SCORE)<=80) ) ③DELETEFROMSCWHERESCOREISNULL; ④DELETEFROMSC WHERES#IN(SELECTS#FROMSWHERESEX=’F’) ANDC#IN(SELECTC#FROMC,TWHEREC.T#=T.T#ANDTNAME=’LIU’); ⑤UPDATESC SETSCORE=60 WHERESCORE<60 ANDC#IN(SELECTC#FROMCWHERECNAME=’MATHS’); ⑥UPDATESC SETSCORE=SCORE*1.05 WHERES#IN(SELECTS#FROMSWHERESEX='F’) ANDSCORE<(SELECTAVG(SCORE)FROMSC); ⑦用两个UPDATE语句实现: UPDATESC SETSCORE=SC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 习题 作业