(34)~(35)题使用如下三个数据库表:
学生表:S(学号,姓名,性别,出生日期,院系)
课程表:C(课程号,课程名,学时)
选课成绩表:SC(学号,课程号,成绩)
在上述表中,出生日期数据类型为日期型,学时和成绩为数值型,其他均为字符型。
(34)用SQL语句查询选修的每门课程的成绩都高于或等于85分的学生的学号和姓名,正确的命令是( )。
A)SELECT 学号,姓名 FROM S WHERE NOT EXISTS;
(SELECT *FROM SC WHERE SC.学号=S.学号 AND 成绩<85)
B)SELECT 学号,姓名 FROM S WHERE NOT EXISTS;
(SELECT *FROM SC WHERE SC.学号=S.学号 AND 成绩>=85)
C)SELECT 学号,姓名 FROM S,SC
WHERE S.学号=SC.学号 AND 成绩>=85
D)SELECT 学号,姓名 FROM S,SC
WHERE S.学号=SC.学号 AND ALL 成绩>=85
A:【解析】EXISTS是谓词,EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回(即存在元组或不存在元组)。其中,该谓词只是判断子查询中是否有结果返回,它本身并没有任何运算或比较。其中选项B)和C)都是返回只要有任意一门大于85的学生学号和姓名,而不是返回所有课程部大于等于85的学生学号和姓名。而ALL则要求子查询中的所有行都使结果为真时,结果才为真,并没有实际意义。
(35)用SQL语句检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是
( )。
A)SELECT S.学号,姓名,平均成绩FROM S,SC;
WHERE S.学号=SC.学号;
GROUP BY S.学号 HAVING COUNT(*)>=5 ORDER BY 平均成绩 DESC
B)SELECT 学号,姓名,AVG(成绩)FROM S,SC;
WHERE S.学号=SC.学号 AND COUNT(*)>=5;
GROUP BY 学号 ORDER BY 3 DESC
C)SELECT S.学号,姓名(成绩)平均成绩FROM S,SC;
WHERE S.学号=SC.学号 AND COUNT(*)>=5;
GROUP BY S.学号 ORDER BY 平均成绩 DESC
D)SELECT S.学号,姓名,AVG(成绩)平均成绩 FROM S,.SC;
WHERE S.学号=SC.学号;
GROUP BY S.学号 HAVING COUNT(*)>=5 ORDER BY 3 DESC
D:【解析】SQL SELECT中的GROUP BY短句用于对查询结果进行分组,可以利用它进行分组汇总。而HAVING短语必须跟随GROUP BY使用,它用来限定分组必须满足的条件。首先将表S与SC中的学号字段进行联接,然后利用AVG()函数求得指定字段的平均值,再通过GROUP BY子句,按照表S中的学号进行分组,其中利用HAVING子句限制分组条件,最后利用ORDER BY子句将结果按指定降序(DESC)进行排列。
本新闻共
6页,当前在第
6页
1 2 3 4 5 6