参考答案及考点: 1.该题的考点是SQL语句的使用和向文本文件中保存命令,参考程序是: 方法1:嵌套方式 SELE 姓名 FROM 学生 WHERE 学号 IN. (SELE 学号 FROM 选课 WHERE 成绩>=70 GROUP BY 学号 HAVING COUNT(*)>=3) ORDER BY 1 INTO DBF RESULTS 方法2:连接方式 SELE 姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 成绩>=70. GROUP BY 学生.学号 HAVING COUNT(*)>=3 ORDER BY 姓名 INTO DBF RESULTS 然后在命令窗口中选中命令,单击常用工具栏"打开"按钮,打开SQL.TXT文件,光标定位在第二行,单击"粘贴"。注意因为命令行比较长,要将在命令窗口中添加的换行符";"删除,并将文本调整到同一行。 解释: (1)首先确定需要使用表,"姓名"在学生表中,"成绩"及需要统计的选课门数要使用选课表,因此需要使用学生和选课这两个表,两表联系的字段是"学号"。 (2)成绩高于70分修饰的是元组,即低于70分的记录不参加统计,不能将该条件用在HAVING子句中。 (3)因为要统计在高于70分的成绩中每个学生选修课程的门数,因此必须要按学号分组,并且只有在选修门数大于等于3门时才是我们需要的,因此要用此做为条件使用HAVING子句限制分组。 2.第一行错误:MODIFY TABLE 学生 ADD 平均成绩 N(6,2) 改为:ALTER TABLE 学生 ADD 平均成绩 N(6,2) 第二行错误 O WHILE EOF() 改为 O WHILE NOT EOF() 第三行错误:REPLACE 平均成绩 = cj[1] 改为:REPLACE 平均成绩 WITH cj[1] 解释: 第一行,在SQL中,修改表结构的语句是ALTER,而不是MODIFY,在VF命令中用MODIFY STRUCTURE 可以打开表设计器表结构 第二行,EOF()是判断记录指针是否已到表尾,而只有在未到表尾时才循环 第三行,REPLACE 命令结构应该是 REPLACE 字段名1 WITH 表达式1,字段名2 WITH 表达式2 ...