问题 单项选择题

对于下图所示的Students和SC关系,属性Sno表示学号,Sname表示姓名,Sex表示性别,SD表示专业,Age表示年龄,Cno表示课程号,Grade表示成绩。

a.当用户查询“选了课程2的学生数”时,其结果应为 (59) ;当Students和SC关系进行自然连接时,其结果集的属性列数应为 (60)

b.查询“至少选修了两门课程的每个学生的平均成绩”的SQL语句如下:

SELECT Sno, (61)

FROM SC

GROUP BY Sno

(62) >1;

(62)处应填()。

A.WHERE COUNT(Sno)

B.WHERE COUNT (DISTINCT(Sno))

C.HAVING COUNT (Sno)

D.HAVING COUNT (DISTINCT(Sno))

答案

参考答案:D

解析:

试题(59)~(62)

[分析]:

本题考查的是应试者对关系运算、SQL语言的掌握程度。

试题(59)、(60)考查的是关系运算的基础知识。表SC为学生选课表,由于表中有三个不同的学生学号Sno,因此试题(59)的正确答案为A。当Students和SC关系进行自然连接时,其结果集的属性列数为7个。因为自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉,因此结果集的属性列数为7个。

试题(61)正确的答案是C,因为试题要求每个学生的平均成绩,所以使用平均值集函数avg。SQL提供了5个预定义集函数:avg(平均值)、min(最小值)、max(最大值)、sum(求和)及count(计数)。

试题(62)正确的答案是D,因为元组在分组前按照某种方式加上限制,使得不需要的分组为空,应该在GROUP BY子句后面跟一个HAVING子句。即查询至少选修了两门课程的每个学生的平均成绩的SQL语句如下:

SELECT Sno,AVG(Grade)

FROM SC

GROUP BY Sno

HAVING COUNT (DISTINCT (SNO))>1;

单项选择题
单项选择题