单选题 19~25题所用到的数据如表1和表2所示。
表1 课程表(KC.dbf)
课程号
课程名
学分
0001
C程序设计
5
0002
数据结构
6
0003
计算机基础
4
0004
数据库应用基础
4
表2 选课表(SKB.dbf)
学号
课程号
成绩
980001
0001
98
980002
0002
76
980001
0002
50
980002
0003
69
980003
0001
75
980003
0003
68
980004
0001
55
980005
0001
76
980004
0002
65
980003
0002J
30
980003
0004
86
980002
0004
77


单选题 要列出所有课程的课程号、课程名和最高分,下列语句中正确的是______。
【正确答案】 D
【答案解析】[分析] 由于课程名字段和成绩字段分属于两个表,因此必须在两个表之间进行连接,显然可按照课程号相等进行连接。要求出每门课程的最高分,应用GROUP BY子句对课程号进行分组,并通过MAX()函数求出每个组的最高分。
单选题 列出总学分超过8的学生的学号和总学分(只有成绩大于或等于60才能取得学分),下列语句中正确的是______。
【正确答案】 C
【答案解析】[分析] 此题涉及成绩和学分,这两个字段分别在两个表中,故也要在两个表之间建立连接。为求得每个学生的总学分,可首先选出成绩大于60分的记录,然后利用GROUP BY子句按照学号相等进行分组,通过统计函数SUM()求出学分的和。由于最后只要显示出学分超过8的学生的信息,故可以使用HAVING子句来筛选符合条件的分组。
单选题 语句如下:
  SELECT课程号,COUNT(*)FROM SKB;
GROUP BY 课程号;
HAVING COUNT(*)>=3
该语句的功能是______。
【正确答案】 C
【答案解析】[分析] 该题按照课程号进行分组,通过COUNT(*)函数统计出每门课的记录数,也就是选课人数。通过HAVING子句筛选出选课人数大于等于3的分组,并选出分组的课程号和选课人数信息。
单选题 下列语句执行后,结果中将包含______条记录。
SELECT 课程号,AVG(成绩) AS 平均成绩;
  FROM SKB;
  GROUP BY 课程号;
  HAVING 平均成绩>=75;
  ORDER BY 2
【正确答案】 B
【答案解析】[分析] 本题的SELECT语句的作用是根据课程号进行分组,求出每门课程的平均成绩,并且只列出平均成绩大于等于75的课程号和平均成绩,最后的结果以平均成绩升序排列。
单选题 一般来说,如果某个SELECT语句中有HAVING子句,则一定有______子句。
【正确答案】 C
【答案解析】[分析] HAVING子句的作用是筛选出满足条件的分组,应该跟随在分组子句GROUP BY的后面。
单选题 创建一个名为LH的视图,用来找出所有选课成绩为良好的学生号、课程号、课程名和成绩,下述语句中正确的是______。
【正确答案】 C
【答案解析】[分析] 本题创建的视图中应包括成绩大于80分选课记录的课程号、课程名、学号和成绩,涉及两个表,显然在这两个表之间需按照学号相等建立连接,本题采用了“INNER JOIN…ON…”建立内部连接来实现。要选择成绩大于等于80分的记录信息,可使用WHERE子句,需注意的是本题并无统计信息,因此不需要分组,也无须使用筛选分组的子句。
单选题 SQL语言中删除表的命令是______。
【正确答案】 A
【答案解析】[分析] 删除表的SQL命令格式如下:
DROP TABLE<表名>
DROP TABLE直接从磁盘上删除<表名>对应的.dbf文件。如果该表是数据库中的表并且相应的数据库是当前数据库,则从数据库中删除了表;否则虽然从磁盘上删除了.dbf文件,但是记录在数据库.dbc文件中的信息却没有删除,此后会出现错误提示。所以要删除数据库中的表时,最好应使数据库是当前打开的数据库,在数据库中进行操作。