第5章习题与参考答案一.单项选择题1.当关系R和S进行连接操作时,如果R中的元组不满足连接条件,在连接结果中也会将这些记录保留下来的操作是(A)。A.左外连接B.右外连接C.内连接D.自连接2.下列聚合函数中,不忽略空值的是(D)。A.SUM(列名)B.MAX(列名)C.AVG(列名)D.COUNT(*)3.下列查询语句中,错误的是(B)。A.SELECTSno,COUNT(*)FROMSCGROUPBYSnoB.SELECTSnoFROMSCGROUPBYSnoWHERECOUNT(*)3C.SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(*)3D.SELECTSnoFROMSCGROUPBYSno4.现要利用Student表查询年龄最小的学生姓名和年龄。下列实现此功能的查询语句中,正确的是(D)。A.SELECTSname,MIN(Sage)FROMStudentB.SELECTSname,SageFROMStudentWHERESage=MIN(Sage)C.SELECTTOP1Sname,SageFROMStudentD.SELECTTOP1Sname,SageFROMStudentORDERBYSage5.设SC表中记录成绩的列为:Grade,类型为int。若在查询成绩时,希望将成绩按‘优’、‘良’、‘中’、‘及格’和‘不及格’形式显示,正确的Case函数是(C)。A.CaseGradeWhen90~100THEN'优'When80~89THEN'良'When70~79THEN'中'When60~69THEN'及格'Else'不及格'EndB.CaseWhenGradebetween90and100THENGrade='优'WhenGradebetween80and89THENGrade='良'WhenGradebetween70and79THENGrade='中'WhenGradebetween60and69THENGrade='及格'ElseGrade='不及格'EndC.CaseWhenGradebetween90and100THEN'优'WhenGradebetween80and89THEN'良'WhenGradebetween70and79THEN'中'WhenGradebetween60and69THEN'及格'Else'不及格'EndD.CaseGradeWhen90~100THENGrade='优'When80~89THENGrade='良'When70~79THENGrade='中'When60~69THENGrade='及格'ElseGrade='不及格'End6.下列SQL语句中,用于修改表数据的语句是(C)。A.ALTERB.SELECTC.UPDATED.INSERT7.设有Teachers表,该表的定义如下:CREATETABLETeachers(TnoCHAR(8)PRIMARYKEY,TnameVARCHAR(10)NOTNULL,AgeTINYINTCHECK(AgeBETWEEN25AND65))下列插入语句中,不能正确执行的是(D)。A.INSERTINTOTeachersVALUES('T100','张宏',NULL)B.INSERTINTOTeachers(Tno,Tname,Age)VALUES('T100','张宏',30)C.INSERTINTOTeachers(Tno,Tname)VALUES('T100','张宏')D.INSERTINTOTeachersVALUES('T100','张宏')8.设数据库中已有教材中的Student(Sno,Sname,Ssex,Sage,Sdept)、Course(Cno,Cname,Credit,Semster)和SC(Sno,Cno,Grade)表。现要查询学生选的第2学期开设课程的情况,只需列出学号、姓名、所在系和所选的课程号。该查询涉及到的表是(D)。A.仅Student表B.仅Student和SC表C.仅Student和Course表D.Student、SC和Course表9.下列删除计算机系学生(在student表中)的修课记录(在SC表中)的语句,正确的是(B)。A.DELETEFROMSCJOINStudentbONS.Sno=b.SnoWHERESdept='计算机系'B.DELETEFROMSCFROMSCJOINStudentbONSC.Sno=b.SnoWHERESdept='计算机系'C.DELETEFROMStudentWHERESdept='计算机系'D.DELETEFROMSCWHERESdept='计算机系'二.判断题1.SELECT*FROMStudentWHERESnameLIKE'张_'语句中的'张_'用于查找姓张的学生。(╳)2.SELECT*FROMStudentWHERESnameLIKE'[张李刘]%'语句可以查找姓张、李、刘的学生。(√)3.SELECTCOUNT(DISTINCTSno)FROMSC语句用于统计学生的总人数。(╳)4.HAVING子句用于对分组后的统计结果再进行过滤,它用于组而不是对单个记录。(√)5.SELECT*FROMStudentINNERJOINSCONStudent.Sno=SC.Sno语句可将Student与SC连接起来。(√)三.简答题1.在聚合函数中,哪个函数在统计时不考虑NULL。答:COUNT(*)2.在LIKE运算符中“%”的作用是什么?答:匹配0个或多个字符。3.WHEREAgeBETWEEN20AND30子句,查找的Age范围是多少?答:Age大于等于20并且小于等于304.WHERESdeptNOTIN('CS','IS','MA'),查找的数据是什么?答:查找'CS','IS','MA'三个系之外的其他系。5.自连接与普通内连接的主要区别是什么?答:自连接中进行连接操作的表在物理上是一张表,而普通内连接进行连接的表在物理上是两张表。6.外连接与内连接的主要区别是什么?答:进行外连接的两个表中,可以有一张表不满足连接条件,而进行内连接的两个表必须都满足连接条件。7.相关子查询与嵌套子查询在执行方面的主要区别是什么?答:相关子查询的执行过程是先外后内,而嵌套子查询的执行过程是先内后外。而且相关子查询中必须有与外层查询的关联,而嵌套子查询中,内、外层查询之间没有关联关系。8.对统计结果的筛选应该使用哪个子句完成?答:HAVING子句9.在排序子句中,排序依据列的前后顺序是否重要?ORDERBYC1,C2子句对数据的排序顺序是什么?答:重要,系统会按列的先后顺序进行排序。先按C1列进行排序,在C1列值相同时再按C2列进行排序。10.TOP子句的作用是什么?答:在查询结果产生后,提取结果的前若干行数据。