资源描述:
《【数据库应用黄皮本】第3章 关系数据库语言sql》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第3章关系数据库语言SQL教材中习题3的解答3.2解:①SELECTS#,SNAMEFROMSWHEREAGE<17ANDSEX=’F’;②SELECTC.C#,CNAME(联接查询方式)FROMS,SC,CWHERES.S#=SC.S#ANDSC.C#=C.C#ANDSEX=’M’;或:SELECTC#,CNAME(嵌套查询方式)FROMCWHEREC#IN(SELECTC#FROMSCWHERES#IN(SELECTS#FROMSWHERESEX=’M’));或:SELECTC#,CNAME(存在量词方式)FROMCWHEREEXI
2、STS(SELECT*FROMSCWHEREC.C#=SC.C#ANDEXISTS(SELECT*FROMSWHERESC.S#=S.S#ANDSEX=’M’));EXISTS表示存在量词,EXISTS操作符后子查询的结果集中如果不为空,则产生逻辑真值“true”,否则产生假值“false”这类查询和不相关子查询有一个明显区别,即子查询的查询条件依赖于外层父查询的某个属性值,内层查询由于与外层查询有关,因此必须反复求值一般处理过程为:首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则
3、取此元组放入结果表,然后再取外层表的下一个元组,重复这一过程,直到外层表全部查完为止。③SELECTT.T#,TNAMEFROMT,SC,C,SWHERET.T#=C.C#ANDSC.C#=C.C#ANDSC.S#=S.S#ANDSEX=’M’;④SELECTDISTINCTX..S#FROMSCASX,SCASYWHEREX.S#=Y.S#ANDX.C#!=Y.C#;⑤SELECTC#FROMSCASX,SCASYWHEREX.C#=Y.C#ANDX.S#=’S2’ANDY.S#=’S4’;⑥SELECTC#FROMCWHERENOT
4、EXISTS(SELECT*FROMS,SCWHERES.S#=SC.S#ANDSC.C#=C.C#ANDSNAME=’WANG’);⑦SELECTC#,CNAMEFROMCWHERENOTEXISTS(SELECT*FROMSWHERENOTEXISTS(SELECT*FROMSCWHERES#=S.S#ANDC#=C.C#));外层循环依次扫描C关系中的每个元组,中层循环依次扫描S关系中的每个元组,内层循环依次扫描SC关系中的每个元组,对于C关系中的每个元组,若有一个学生没有选修,则最内层查询为空,得出中层选择条件为真,进而得出中层
5、查询不为空,从而外层的选择条件为假,该课程不会选出来放到结果集中。所以,只有某个课程被学生中的所有学生选修,最内层查询每次都不为空,中层选择条件每次都为假,得出中层查询结果为空,进而得出外层选择条件为真,该课程元组被选择出来放到结果集中。⑧SELECTDISTINCTS#FROMSCASXWHERENOTEXISTS(SELECT*FROMC,TWHEREC.T#=T.T#ANDTNAME=’LIU’ANDNOTEXISTS(SELECT*FROMSCASYWHEREY.S#=X.S#ANDY.C#=C.C#));或者SELECTDIS
6、TINCTS#FROMSCASXWHERENOTEXISTS(SELECT*FROMCWHERET#IN(SELECTT#FROMTWHERETNAME=’LIU’)ANDNOTEXISTS(SELECT*FROMSCASYWHEREY.S#=X.S#ANDY.C#=C.C#));加3.4解:①(SELECT*FROMR)UNION(SELECT*FROMS);②(SELECT*FROMR)INTERSECT(SELECT*FROMS);③(SELECT*FROMR)EXCEPT(SELECT*FROMS);④SELECT*FROMR,
7、S;⑤SELECTR.A,R.B,S.CFROMR,SWHERER.B=S.B;⑥SELECTR.A,S.CFROMR,SWHERER.C=S.A;⑦SELECTR.*(R.*表示R中全部属性)FROMR,SWHERER.C=S.C;⑧R÷πC(S)SELECTA,BFROMRRXWHERENOTEXISTS(SELECT*FROMSWHERENOTEXISTS(SELECT*FROMRRYWHERERY.A=RX.AANDRY.B=RX.BANDRY.C=S.C));3.7解:①SELECTCOUNT(DISTINCTC#)FROMS
8、C;②SELECTAVG(AGE)FROMS,SCWHERES.S#=SC.S#ANDC#=’C4’ANDSEX=’F’;③SELECTC.C#,AVG(SCORE)FROMSC,C,TWHERESC.C#