(1)用SQL,语句查询至少有三门的课程成绩在70分以上(包括70分)的学生姓名,并将结果按升序存入表文件results.dbf,然后将该SQr,语句粘贴在SQL.TXT文件的第二行(只占一行)。 (2)modi.prg程序的功能是:先为“学生”表增加一个

admin2013-02-18  21

问题 (1)用SQL,语句查询至少有三门的课程成绩在70分以上(包括70分)的学生姓名,并将结果按升序存入表文件results.dbf,然后将该SQr,语句粘贴在SQL.TXT文件的第二行(只占一行)。
(2)modi.prg程序的功能是:先为“学生”表增加一个“平均成绩”字段,数据类型为N(6,2);然后根据“选课”表统计每个学生的平均成绩,并写入新添加的字段。
    该程序有三处错误,请改正,使程序能正确运行(在指定处修改,不允许增加或删除程序行)。

选项

答案本题主要考查的是SQL分组计算的查询。根据题目要求,SQL语句主要设计思路如下: 首先对“学生”和“选课”表进行联接,联接条件为两个表中“学号”相同的记录;接着筛选表中成绩大于70的所有记录(通过WHERE短语指出),对筛选后的记录按“学号”字段分组(通过GROUP BY短语分组),然后通过HAVING语句进一步限定分组条件,要求统计每组学号中“课程号”记录总数大于等于3,这样便可得出至少有三门课程成绩在70分以上的学生记录;查询结果最终保存在results表中,输出字段只包括学生的“姓名”字段。 【操作步骤】 ①在命令窗口输入如下SQL查询代码(以下SQL查询语句是通过查询设计器生成): SELECT学生.姓名; FROM成绩管理!学生工NNER JoIN成绩管 理!选课; ON学生.学号:选课.学号; WHERE选课.成绩>=70; ORDER BY学生.姓名; GROUP BY学生.学号; HAVING COUNT(选课.课程号)>:3; INTO TABI.E resuitS.dbf ②在命令窗口执行命令:MODIFY FILE SQL,打开文本文件编辑器。将命令窗口的查询语句复制到SQL文本文件中。 (2)本题主要考查了SQL定义功能;SQL简单计算查询;DO WHILE循环;Visual FoxPro修改记录命令。题目所提供的源程序功能大致如下: 首先打开“成绩管理”数据库,并打开库中的数据表“选课”和“学生”;接着利用SQL定义功能修改表结构;然后利 用DO WHILE循环,依次计算“选课”表中每个学生的平均成绩,计算条件为“选课”表中的“学号”字段值等于“学生”表中当前记录的“学号”字段值,并将平均成绩保存到数组中;最后利用Visual FoxPro修录命令REPLACE将数细中的值赋给“学生”表的“平均成绩”字段。 本题第一处错误是表结构修改语句的错误,为表增加字段的关键字是ADD而不是ALTER,ALTER只能用来修改已存在的字段;第二处错误是DO WHILE循环格式错误,缺少WHILE短语;第三处错误是修改记录命令格式错误,指定修改值的短语为WITH而不是SET。 步骤1:在命令窗口执行命令:MODIFY COMMANDmodi,打开程序文件,文件中的命令代码如下: OPEN DATABASE成绩管理 USE选课IN 0 USE学生EXCL IN 0 ***********Errot*********** MODIFY TABLE学生 ADD平均成绩 N(6,2) SELECT学生 ***********Error*********** DO WHILE EOF() SELECT AVG(成绩)FROM选课WHERE学 号=学生.学号INTO ARRAY cj ***********rror*********** REPLACE平均成绩=cj[1] cj[1]=0 SKIP ENDDO DA个ABASE 修改程序中的错误行,修改后的程序如下: CLOSE ALL OPEN DATABASE成绩管理 USE选课IN 0 USE学生EXCL IN 0 ALTER TABLE学生ADD平均成绩N(6,2) SELECT学生 DO WHILE NOT EOF() SELECT AVG(成绩)FROM选课WHERE学号:学生.学号INTO ARRAY cj REPLACE平均成绩WITH cj[1] cj[1]=O SKIP ENDDO DATABASE 步骤2:保存文件修改,在命令窗口执行命令:DO MODI,执行程序文件。

解析
转载请注明原文地址:https://jikaoti.com/ti/WWZ0FFFM
0

最新回复(0)