以下两个题使用如下3个数据库表: 学生表:S(学号,姓名,性别,出生日期,院系) 课程表:C(课程号,课程名,学时) 选课成绩表:SC(学号,课程号,成绩) 在上述表中,出生日期数据类型为日期型,学时和成绩为数值型,其他均为字符型。
单选题 用SQL语句查询选修的每门课程的成绩都高于或等于85分的学生的学号和姓名,正确的命令是( )。
【正确答案】 A
【答案解析】解析:本题属于多表查询,使用联接查询或嵌套查询,选项C和选项D使用联接查询,使用时学号字段前要表明所属的表,写法都不完整;选项A和选项B中的EXISTS属于SQL查询谓词,EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组,子查询要用圆括号括起来。选项A中的子查询查询的是“SC”表中“学号”等于“S”表中“学号”并且成绩小于85的数据,然后在外层查询中检索“S”表中的“学号”是否存在于子查询的查询结果中,将不存在的“学号”显示其“学号”和“姓名”的信息。
单选题 用SQL语句检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是( )。
【正确答案】 D
【答案解析】解析:题干中需要显示的“平均成绩”不是表中字段,不能直接显示,用函数来实现表示方法为:AVG(成绩)平均成绩。在查询中先用WHERE子句,然后是GROUP子句,最后用HAVING子句对分组限定条件,故COUNT(*)>=5分组限定条件应该写在HAVING之后。