1、国家二级 VF机试(操作题)模拟试卷 462及答案与解析 一、基本操作题 1 (1)打开 “订货管理 ”数据库,并将表 order- list添加到该数据库中。 (2)在 “订货管理 ”数据库中建立表 order_detail,表结构描述如下: 订单号 字符型 (6) 器件号 字符型 (6) 器件名 字符型 (16) 单价 浮动型 (10, 2) 数量 整型 (3)为新建立的 order- detail表建立一个普通索引,索引名和索引表达式均是 “订单号 ”。 (4)建立表 order_ list和表 order_ detail间的永久联系(通过 “订单号 ”字段)。 二、简单应用题 2 (1
2、)将 order_ detaill表中的全部记录追加到 order- detail表中,然后用 SQL SELECT语句完成查询:列出所有订购单的 “订单号 ”、 “订购日期 ”、 “器件号 ”、 “器件名 ”和 “总金额 ”(按 “订单号 ”升序, “订单号 ”相同再按 “总金额 ”降序),并将结果存储到 results表中(其中 “订单号 ”、 “订购日期 ”、 “总金额 ”取自 order list表, “器件号 ”、 “器件名 ”取自 order_ detail表)。 (2)打开 modil prg命令文件,该命令文件包含 3条 SQL语句,每条 SQL语句中都有一个错误,请改正(注意
3、:在出现错误的地方直接改正,不可以改变 SQL语句的结构和 SQL短语的顺序)。 三、综合应用题 3 在做本题前首先确认在基础操作中已经正确地建立了 order_detail表,在简单应用中已经成功地将记录追加至 o_order_detail表。 当 order detail表中的 “单价 ”修改后,应该根据该表的 “单价 ”和 “数量 ”字段修改order_list表的 “总金额 ”字段,现在有部分 order_list记 录的 “总金额 ”字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为 od_mod的表中(与order_list表结构相同,自己建立),然后根据 order
4、_detail表的 “单价 ”和 “数量 ”字段修改 od_mod表的 “总金额 ”字段(注意一个 od_mod记录可能对应几条order_detail记录),最后 od_mod表的结果要求按 “总金额 ”升序排序,编写的程序最后保存为 progl prg。 国家二级 VF机试(操作题)模拟试卷 462答案与解析 一、基本操作题 1 【正确答案】 (1) 命令窗口执行 : MODIFY DATABASE订货管理, 新建数据库并打开数据库设计器。 在数据库设计器中右击,选择【添加表】,在 “打开 ”对话框中双击 “order list”表。 (2) 在数据库设计器中右击,选择【新建表】,在 “新
5、建表 ”中单击 “新建表 ”按钮,在 “创建 ”对话框的 “输入表名 ”中输入 “order_detail”,单击 “保存 ”打开表设计器。 根据题意,在表设计器中逐行输入每个字段的字段名,并设置字段类型和宽度,然后单击 “确定 ”,系统询问 “现在输入数据记录吗? ”,单击 “否 ”按钮。 (3)右击数据 库设计器中的 order_ detail表,选择【修改】,打开 order_ detail表设计器,在 “字段 ”中选 “订单号 ”,在 “索引 ”列中选择 “升序 ”,单击 “确定 ”保存。 (4)拖动 order_list表 “索引 ”下方的候选索引 “订单号 ”到 order_det
6、ail表中 “索引 ”下方的普通索引 “订单号 ”上,为两个表建立联系。 使用数据库;索引。 【试题解析】 本题考查了数据库的基本操作:数据库表的建立:索引的建立以及表之间联系的建立。 MODIFY DATABASE数据库名命令可在新建数据库的同时打开数据 库设计器,然后完成添加数据表。在表设计器的 “字段 ”选项卡中,可以通过选择 “排序 ”下拉框中的 “升序 ”或 “降序 ”为指定的字段建立一个索引名与索引表达式相同的普通索引。 二、简单应用题 2 【正确答案】 (1)步骤 1:在命令窗口执行命令: SELECT* FROM order detaill INTO ARRAY temp IN
7、SERT INTO order detail FROM ARRAY temp 将 detaill表中的记录全部复制到 detail表中。 步骤 2:在命令窗口执 行如下 SQL命令语句完成查询: SELECT order list订单号, order list 订购日期, order detail器件号, order detail器件名, order list总金额; FROM 订货管理! order list INNER JOIN 订货管理! order detail; ON order list订单号 =order detail订单号; ORDER BY order list订单号, or
8、der list总金额 DESC; INTO TABLE results dbf (注意:以上 SQL语句是根据查询文件生成的,大家也可以通过查询设计器完成本题操作。) SQL简单查询。 (2)步骤 1:在命令窗口执行命令: MODIFY COMMANDmodil, 打开 modil程序文件,文件中的命令代码如下: 所有器件的单价增加 5元 UPDATE order detaill SET单价 WITH单价 +5 计算每种器件的平均单价 SELECT器件号, AVG(单价) AS平均价 FROM order detaill ORDER BY器件号 INTO CURSQR lsb 查询平均价小于
9、 500的记录 SELECT*FROM lsb FOR平均价 500 修改程序中的错误行,修改后的程序如下: UPDATE order detaill SET单价 =单价 +5 UPDATE 语句中赋值是通过 “=”号,而不是 WITH SELECT器件号, AVG(单价) AS平均价 FROM order detaill GROUP BY器件号 INTO CURSOR lsb GROUP BY短语才是分组短语,而ORDER BY短语是用来对查询结果进行排序的 SELECT*FROM lsb WHERE平均价 500 SELECT的条件短语是 WHERE,而不是 FOR 步骤 2:保存文件修改
10、,在命令窗口执行命令: DO modil prg, 执行程序文件。 SQL的操作功能; SQL分组与计算查询。 【试题解析】 (1)本题考查了 SQL的简单查询和联接查询。进行联接查询时主要是判断查询输出字段来自哪个数据表(本题都已指明),再正确设置联接条件。 (2)本题考查了 SQL更新功能;分组计算查询和简单查询。 第一处错误属于 SQL更新命令格式错误,通过 SQL命令给字段赋新值是通过 “=”号设置的。 第二处错误是分组短语与排序短语混淆了,这也是改错题中经常设置错误的地方。 第三处错误是查询语句的命令格式错误, SQL查询中筛选条件通过 WHERE短语指出。 三、综合应用题 3 【正
11、确答案】 步骤 1:在命令窗口执行命令: MODIFY COMMAND progl, 打开程序文件编辑器输入如下程序代码: SELECT订单号, SUM(单价 *数量) AS总金额; FROM order detail; GROUP BY订单号; INTO CURSOR arrtable SELECT order list *; FROM order list, arrtable; WHERE order list订单号 =arrtable订单号 ANDorder list总金额arrtable总金额; INTO TABLE ocl mod USE od mod DO WHILE NOT EO
12、F() SELECT arrtable总金额 FROM arrtable; WHERE arrtable订单号 =od mod订单号; INTO ARRAY arr REPLACE总金额 WITH arr SKIP ENDDO CLOSE ALL SELECT+FROM od mod ORDER BY总金额; INTO CURSOR arrtablel SELECT * FROM arrtablel INTO TABLE od mod 步骤 2:保存文件修改,在命令窗口执行命令: DO progl prg,执行程序文件。 SQL分组与计算查询;程序基本结构。 【试题解析】 本题主要考查 SQL
13、分组计算查询: DO WHILE循环结构。本基本解题思路可按以下步骤进行: 首先,根据 order_detail表的 “单价 ”和 “数量 ”数据,利用分组计算查询求出每组订单的 “总金额 ”,将结果保存到一个临时表中。 然后,通过对 order_list表和临时表的联接查询,找出 order_list表中 “总金额 ”字段与临时表中 “总金额 ”不相同的记录,并将 order_list表中这些 “总金额 ”不相同的记录输出到 od_mod表中。 接着利用 DO WHILE循环语句对 od_mod表中的每条记录进行处理。通过 SQL查询语句从临时表中先获得与 od mod表当前所指记录 “订单号 ”相同的 “总金额 ”字段值,将该值保存到数组中, 再通过 REPLACE命令修改 od_ mod表当前记录的值,每处理完一条记录,记录指针便指向下一条记录,一直到处理完 od_mod表中的所有记录。 最后将 od_mod表的记录按 “总金额 ”排序,由于查询结果不能覆盖正在作为查询数据源的表,因此,可以通过一个临时表过渡,保存排序的表记录,再通过临时表将排好序的记录保存到原数据表中。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1