(31)到(35)题中使用如下数据表。 “学生”表:学号C (8),姓名C (8),性别C (2),系名 (6) “课程”表:课程编号C (4),课程名称C (12),开课系名C (10) “成绩”表:学号C(8),课程编号C(4),成绩N (6,2) |
检索每门课程的最高分,要求得到的信息包括课程名称、姓名和最高分,正确的SQL语句是( )。
A.SELECT课程.课程名称,学生.姓名,MAX(成绩)AS最高分; FROM 成绩,课程,学生; WHERE 成绩.课程编号=课程.课程编号; AND 成绩.学号=学生.学号; GROUPBY 课程编号
B.SELECT 课程.课程名称,学生.姓名,MAX(成绩)AS最高分; FROM 成绩,课程,学生; WHERE 成绩.程编号=课程.课程编号; AND 成绩.学号=学生.学号; GROUPBY 课程.课程编号
C.SELECT 课程.课程名称,学生.姓名,MAX(成绩)AS最高分; FROM 成绩,课程,学生; WHERE 成绩.课程编号=课程.课程编号; AND 成绩.学号=学生.学号; ORDER BY 课程.课程编号
D.SELECT 课程.课程名称,学生.姓名,MAX(成绩)AS最高分; FROM 成绩,课程,学生; WHERE 成绩.课程编号=课程.课程编号; AND 成绩.学号=学生.学号; ORDERBY 课程.课程编号
参考答案:B
解析: 本题中首先通过GROUPBY短语将“课程”表中的记录按“课程编号”分组,然后通过MAX()函数求出每组中的最高成绩,即每门课程的最高成绩。由于查询输出结果涉及到多个表的字段,因此要使用连接查询,表之间的连接条件放在WHERE短语中,AND用来连接两个连接条件,以保证在查询的3个表之间建立联系。