单选题 使用如下三个数据库表:
学生(学号C(8),姓名C(8),性别C(2),班级C(8))
课程(课程编号C(8),课程名称C(20))
成绩(学号C(8),课程编号C(8),成绩N(5,1))

单选题 查询每门课程的最高分,要求得到的信息包括课程名和最高分,正确的命令是
A. SELECT 课程.课程名称,MAX(成绩) AS 最高分 FROM 成绩,课程;
WHERE 成绩.课程编号=课程.课程编号;
GROUP BY 课程,课程编号
B. SELECT课程,课程名称,MAX(成绩)AS 最高分 FROM 成绩,课程;
WHERE 成绩.课程编号=课程.课程编号;
GROUP BY 课程编号
C. SELECT 课程.课程名称,MIN(成绩)AS 最高分 FROM 成绩,课程;
WHERE 成绩.课程编号=课程.课程编号;
GROUP BY 课程.课程编号
D. SELECT 课程.课程名称,MIN(成绩)AS 最高分 FROM 成绩,课程;
WHERE 成绩.课程编号=课程.课程编号;
GROUP BY 课程编号
【正确答案】 A
【答案解析】[解析] 求最大值要利用MAX函数。要查询每门课程的最高分,需要对课程进行分组。由于课程名称可能出现重名,因此分组依据为课程编号,且注意记录的唯一性,利用AS短语。可将“成绩”字段名重新命名为“最高分”作为新的字段名,用于显示查询结果。选项B)的分组条件中,没有指定从哪个表中进行记录分组,因此系统报错。选项C)和选项D)的计算函数使用错误。
单选题 查询所有选修了“高等数学”的学生的“高等数学”成绩,要求得到的信息包括学生姓名和成绩,并按成绩由低到高的顺序排列,下列语句正确的是
A. SELECT 学生.姓名,成绩.成绩 FROM 学生,成绩;
WHERE 学生.学号=成绩.学号;
AND 课程.课程名称='高等数学';
ORDER BY 成绩.成绩 ASC
B. SELECT 学生,姓名,成绩.成绩 FROM 课程,成绩;
WHERE AND 课程.课程编号=成绩.课程编号;
AND 课程.课程名称='高等数学';
ORDER BY 成绩.成绩 ASC
C. SELECT 学生.姓名,成绩.成绩 FROM 学生,课程,成绩;
WHERE 学生.学号=成绩.学号;
AND 课程.课程编号=成绩.课程编号;
AND课程.课程名称='高等数学';
GROUP BY 成绩,成绩 ASC
D. SELECT 学生.姓名,成绩.成绩 FROM 学生,课程,成绩;
WHERE 学生.学号=成绩.学号;
AND 课程.课程编号=成绩.课程编号;
AND 课程.课程名称='高等数学';
ORDER BY 成绩.成绩 ASC
【正确答案】 D
【答案解析】[解析] 本小题为多表连接查询,注意每两个表之间进行关联的关键字,利用ORDER BY短语可以对查询结果进行排序,升序关键字为ASC。选项A)和选项B)中缺少数据表文件。选项C)中,CROUP BY短语使用错误,将查询结果进行排序的短语是ORDER BY。
单选题 查询所修课程成绩都大于等于85分的学生的学号和姓名,正确的命令是
A. SELECT 学号,姓名 FROM 学生 WHERE NOT EXISTS
(SELECT * FROM 成绩 WHERE 成绩.学号=学生.学号 AND 成绩<85)
B. SELECT 学号,姓名 FROM 学生 WHERE NOT EXISTS
(SELECT * FROM 成绩 WHERE 成绩.学号=学生.学号 AND 成绩>=85)
C. SELECT 学号,姓名 FROM 学生,成绩
WHERE 学生,学号=成绩.学号 AND 成绩>=85
D. SELECT 学号,姓名 FROM 学生,成绩
WHERE 学生.学号=成绩,学号 AND ALL 成绩>=85
【正确答案】 A
【答案解析】[解析] EXISTS是谓词,EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组用来返回子查询结果。用WHERE条件查询语句查询选课中大于等于85分的记录。故本题答案为A)。
单选题 检索还未确定成绩的学生选课信息,正确的SQL命令是
A. SELECT 学生.学号,姓名,成绩.课程编号 FROM 学生 JOIN 成绩
WHERE 学生,学号=成绩,学号 AND 成绩,成绩 IS NULL
B. SELECT 学生.学号,姓名,成绩.课程编号 FROM 学生 JOIN 成绩
WHERE 学生.学号=成绩.学号 AND 成绩.成绩=NULL
C. SELECT 学生.学号,姓名,成绩.课程编号 FROM 学生 JOIN 成绩
ON 学生.学号=成绩,学号 WHERE 成绩,成绩 IS NULL
D. SELECT 学生.学号,姓名,成绩,课程编号 FROM 学生 JOIN 成绩
ON 学生,学号=成绩,学号 WHERE 成绩.成绩=NULL
【正确答案】 C
【答案解析】[解析] SQL支持空值,同样可以利用空值进行查询。查询空值时要使用IS NULL,而“=NULL”是无效的,因为空值不是一个确定的值,所以不能用“=”这样的运算符进行比较。这里ON指定连接的条件。
单选题 查询“学生”表的全部记录并存储于临时表文件one中的SQL命令是
A. SELECT * FROM 学生 INTO CURSOR one
B. SELECT * FROM 学生 TO CURSOR one
C. SELECT * FROM 学生 INTO CURSOR DBF one
D. SELECT * FROM 学生 TO CURSOR DBF one
【正确答案】 A
【答案解析】[解析] 命令“INTO CURSOR CursorName”是把查询结果存放到名为CursorName的临时表文件中。产生的临时文件是一个只读的DBF文件,关闭文件时会被自动删除。