1、国家二级 VF 机试(操作题)-试卷 66 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)打开“订货管理”数据库,并将表 order_list 添加到该数据库中。 (2)在“订货管理”数据库中建立表 order_detai1,表结构描述如下: 订单号 字符型(6) 器件号 字符型(6) 器件名 字符型(16) 单价 浮动型(10,2) 数量 整型 (3)为新建立的 order_detail 表建立一个普通索引,索引名和索引表达式均是“订单号”。 (4)建立表 order_list 和表 order_detail 间的永久联系(通过“订单
2、号”字段)。(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.(1)将 order_detail1 表中的全部记录追加到 order_detai1 表中,然后用 SQL SELECT 语句完成查询:列出所有订购单的“订单号”、“订购日期”、“器件号”、“器件名”和“总金额”(按“订单号”升序,“订单号”相同再按“总金额”降序),并将结果存储到 results 表中(其中“订单号”、“订购日期”、“总金额”取自 order_list 表,“器件号”、“器件名”取自 order_detail 表)。 (2)打开modi1prg 命令文件,该命令文件包含 3 条 SQL 语句,每条
3、 SQL 语句中都有一个错误,请改正(注意:在出现错误的地方直接改正,不可以改变 SQL 语句的结构和 SQL 短语的顺序)。(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.在做本题前首先确认在基础操作中已经正确地建立了 order_detail 表,在简单应用中已经成功地将记录追加到 order_detail 表。 当 order_detail 表中的“单价”修改后,应该根据该表的“单价”和“数量”字段修改 order_list 表的“总金额”字段,现在有部分 order_list 记录的“总金额”字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为 od_r
4、ood 的表中(与 order_list 表结构相同,自己建立),然后根据 order_detail 表的“单价”和“数量”字段修改 od_mod 表的“总金额”字段(注意一个 od_mod 记录可能对应几条 order_detail 记录),最后 od_mod 表的结果要求按“总金额”升序排序,编写的程序最后保存为 prog1prg。(分数:2.00)_国家二级 VF 机试(操作题)-试卷 66 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)打开“订货管理”数据库,并将表 order_list 添加到该数据库中。 (2)在“订货管理”数
5、据库中建立表 order_detai1,表结构描述如下: 订单号 字符型(6) 器件号 字符型(6) 器件名 字符型(16) 单价 浮动型(10,2) 数量 整型 (3)为新建立的 order_detail 表建立一个普通索引,索引名和索引表达式均是“订单号”。 (4)建立表 order_list 和表 order_detail 间的永久联系(通过“订单号”字段)。(分数:2.00)_正确答案:(正确答案:【操作步骤】 (1)命令窗口执行:MODIFY DATABASE 订货管理,新建数据库并打开数据库设计器。 在数据库设计器中右击,选择【添加表】,在“打开”对话框中双击“order_list
6、”表。 (2)在数据库设计器中右击,选择【新建表】,在“新建表”中单击“新建表”按钮,在“创建”对话框的“输入表名”中输入“order_detail”,单击“保存”打开表设计器。 根据题意,在表设计器中逐行输入每个字段的字段名,并设置字段类型和宽度,然后单击“确定”,系统询问“现在输入数据记录吗?”,单击“否”按钮。 (3)右击数据库设计器中的 order_detail 表,选择【修改】,打开 order_detail 表设计器,在“字段”中选“订单号”,在“索引”列中选择“升序”,单击“确定”保存。 (4)拖动 order_list 表“索引”下方的候选索引“订单号”到 order_deta
7、il 表中“索引”下方的普通索引“订单号”上,为两个表建立联系。)解析:二、简单应用题(总题数:1,分数:2.00)2.(1)将 order_detail1 表中的全部记录追加到 order_detai1 表中,然后用 SQL SELECT 语句完成查询:列出所有订购单的“订单号”、“订购日期”、“器件号”、“器件名”和“总金额”(按“订单号”升序,“订单号”相同再按“总金额”降序),并将结果存储到 results 表中(其中“订单号”、“订购日期”、“总金额”取自 order_list 表,“器件号”、“器件名”取自 order_detail 表)。 (2)打开modi1prg 命令文件,该
8、命令文件包含 3 条 SQL 语句,每条 SQL 语句中都有一个错误,请改正(注意:在出现错误的地方直接改正,不可以改变 SQL 语句的结构和 SQL 短语的顺序)。(分数:2.00)_正确答案:(正确答案:(1)【操作步骤】 步骤 1:在命令窗口执行命令: SELECT * FROM order_detaill INTO ARRAY temp INSERT INTO order_detail FROM ARRAY temp 将 detaill 表中的记录全部复制到 detail 表中。 步骤 2:在命令窗口执行如下 SQL 命令语句完成查询: 1 SELECT order_list订单号,o
9、rder_list订购日期,order_detail器件号,order_detail器件名,order_list总金额; 2 FROM 订货管理!order_list INNER JOIN 订货管理!order_detail; 3 ON order_list订单号order_detail订单号; 4 ORDER BY order_list订单号,order_list总金额DESC; 5 INTO TABLE results dbf (2)【操作步骤】 步骤 1:在命令窗口执行命令:MODIFY COMMAND modil,打开 modil 程序文件,文件中的命令代码如下: 所有器件的单价增加
10、5 元 1 UPDATE order_detaill SET 单价 WITH 单价5 计算每种器件的平均单价 2 SELECT 器件号,AVG(单价) AS 平均价 FROM order_detaill ORDER BY 器件号 INTO CURSOR 1sb 查询平均价小于 500 的记录 3 SELECT*FROM 1sb FOR 平均价500 修改程序中的错误行,修改后的程序如下: 1 UPDATE order_detaill SET 单价单 价5 UPDATE 语句中赋值是通过“”号,而 不是 WITH 2 SELECT 器件号,AVG(单价) AS 平均价 FROM order_de
11、taill GROUP BY 器件号 INTO CURSOR 1sb GROUP BY 短语才是分组短语,而 ORDER BY 短语是用来对查询结果进行排序的 3 SELECT * FROM 1sb WHERE 平均价500 SELECT 的条件短语是 WHERE,而不是 FOR 步骤 2:保存文件修改,在命令窗口执行命令:DO modilPrg,执行程序文件。)解析:三、综合应用题(总题数:1,分数:2.00)3.在做本题前首先确认在基础操作中已经正确地建立了 order_detail 表,在简单应用中已经成功地将记录追加到 order_detail 表。 当 order_detail 表中
12、的“单价”修改后,应该根据该表的“单价”和“数量”字段修改 order_list 表的“总金额”字段,现在有部分 order_list 记录的“总金额”字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为 od_rood 的表中(与 order_list 表结构相同,自己建立),然后根据 order_detail 表的“单价”和“数量”字段修改 od_mod 表的“总金额”字段(注意一个 od_mod 记录可能对应几条 order_detail 记录),最后 od_mod 表的结果要求按“总金额”升序排序,编写的程序最后保存为 prog1prg。(分数:2.00)_正确答案:(正确
13、答案:【操作步骤】 步骤 1:在命令窗口执行命令:MODIFY COMMAND prog1,打开程序文件编辑器输入如下程序代码: 1 SELECT 订单号,SUM(单价*数量) AS 总金额; 2 FROM order_detail; 3 GROUP BY 订单号; 4 INTO CURSOR arrtable 5 SELECT order_list*; 6 FROM order_list,arrtable; 7 WHERE order_list订单号arrtable 订单号 AND order_list总金额arrtable总金额; 8 INTO TABLE od_mod 9 USE od_
14、mod 10 DO WHILE NOT EOF() 11 SELECT arrtable总金额 FROM arrtable; 12 WHERE arrtable订单号od_mod订单号; 13 INTO ARRAY arr 14 REPLACE 总金额 WITH arr 15 SKIP 15 ENDDO 16 CLOSE ALL 17 SELECT * FROM od_mod ORDER BY 总金额; 18 INTO CURSOR arrtable1 19 SELECT * FROM arrtabie1 INTO TABLEod_mod 步骤 2:保存文件修改,在命令窗口执行命令:DO prog1prg,执行程序文件。)解析: