1、国家二级 VF 机试(操作题)-试卷 23 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)打开数据库“外汇”,通过“外币代码”字段为“外汇代码”和“外汇账户”建立永久联系。 (2)新建一个名为“外汇管理”的项目文件,将数据库“外汇”加入“外汇管理”项目中。 (3)修改 mymenu菜单文件,为“文件”下的子菜单项“查找”设置访问键 F。 (4)修改 oneprg 中的 SQL 语句,使之正确(该语句的功能是从 rate 表中删除币种 1 代码为 14,并且币种 2 代码为 27 的记录)。(分数:2.00)_二、简单应用题(总题数:1,
2、分数:2.00)2.(1)将 order_detail1 表中的全部记录追加到 order detail 表中,然后用 SQL SELECT 语句完成查询:列出所有订购单的“订单号”、“订购日期”、“器件号”、“器件名”和“总金额”(按“订单号”升序,“订单号”相同再按“总金额”降序),并将结果存储到 results 表中(其中“订单号”、“订购日期”、“总金额”取自 order_list 表,“器件号”、“器件名”取自 order_detail 表)。 (2)打开modilprg 命令文件,该命令文件包含 3 条 SQL 语句,每条 SQL 语句中都有一个错误,请改正(注意:在出现错误的地方
3、直接改正,不可以改变 SQL 语句的结构和 SQL 短语的顺序)。(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.首先将 order_detail 表全部内容复制到 od_bak 表,然后完成如下操作:(1)将 od_bak 表中的订单号字段值只保留最后一个字母(用 REPLACE 命令或 SQL UPDATE 命令完成修改)。 (2)用 SQL 语句对 0d bak 表编写完成如下功能的程序: 把“订单号”相同并且“器件号”相同的订单合并为一条记录,“单价”取最低价,“数量”取合计。 结果先按新的“订单号”升序排序,再按“器件号”升序排序。 最终记录的处理结果保存在 od
4、 new 表中,表中的字段由“订单号”、“器件号”、“器件名”、“单价”和“数量”构成。 (3)最后将程序保存为 proglprg,并执行该程序。(分数:2.00)_国家二级 VF 机试(操作题)-试卷 23 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)打开数据库“外汇”,通过“外币代码”字段为“外汇代码”和“外汇账户”建立永久联系。 (2)新建一个名为“外汇管理”的项目文件,将数据库“外汇”加入“外汇管理”项目中。 (3)修改 mymenu菜单文件,为“文件”下的子菜单项“查找”设置访问键 F。 (4)修改 oneprg 中的 SQL
5、 语句,使之正确(该语句的功能是从 rate 表中删除币种 1 代码为 14,并且币种 2 代码为 27 的记录)。(分数:2.00)_正确答案:(正确答案:(1)命令窗口执行:MODIFY DATABASE 外汇,打开数据库设计器。 数据库设计器中,右击“外汇代码”表,选择【修改】,打开“外汇代码”表设计器,“字段”选项卡中选“外币代码”,“索引”列中选“升序”,修改“类型”为“主索引”,单击“确定”按钮保存表结构修改。 数据库设计器中,右击“外汇账户”表,选择【修改】,打开“外汇账户”表设计器,选中“字段”中的“外币代码”,在“索引”列中选“升序”,单击“确定”保存修改。 拖动“外汇代码”
6、表“索引”下方的主索引“外币代码”到“外汇账户”表中“索引”下方的普通索引“外币代码”上,为两个表建立联系。 (2)命令窗口执行: CREATE PROJECT 外汇管理 ,新建一个项目管理器。 在项目管理器中,选中“数据”选项卡内“数据库”项,单击“添加”按钮,在“打开”对话框中双击“外汇”数据库,将数据库添加到项目管理器中。 (3)命令窗口执行: MODIFY MENU mymenu ,打开菜单设计器。 选中“文件”菜单下的子菜单“查找”,将菜单名称修改为“查找(MODIFY COMMAND one,打开程序文件编辑器,代码修改为: DELETE FROM rate WHERE 币种 1
7、代码=“14“ AND 币种 2 代码=“27“)解析:解析:本题考查了项目管理器的建立及使用、永久联系的建立、菜单设计器的使用和 SQL 查询语句。建立两个表的永久联系时,有一个表中必须建立关联字段的主索引(或候选索引),另一个表要建立普通索引。本题以“外币代码”为关联字段在“外汇代码”表中建立主索引,在“外汇账户”表中建立普通索引,然后再建立联系。 为菜单项设置访问键的方法是在要作为访问键的字符前加“二、简单应用题(总题数:1,分数:2.00)2.(1)将 order_detail1 表中的全部记录追加到 order detail 表中,然后用 SQL SELECT 语句完成查询:列出所有
8、订购单的“订单号”、“订购日期”、“器件号”、“器件名”和“总金额”(按“订单号”升序,“订单号”相同再按“总金额”降序),并将结果存储到 results 表中(其中“订单号”、“订购日期”、“总金额”取自 order_list 表,“器件号”、“器件名”取自 order_detail 表)。 (2)打开modilprg 命令文件,该命令文件包含 3 条 SQL 语句,每条 SQL 语句中都有一个错误,请改正(注意:在出现错误的地方直接改正,不可以改变 SQL 语句的结构和 SQL 短语的顺序)。(分数:2.00)_正确答案:(正确答案:(1) 步骤 1:在命令窗口执行命令: SELECT*F
9、ROM order_detail INTO ARRAY temp SELECT*INTO order_detail FROM ARRAY temp 将 detail1 表中的记录全部复制到 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_de
10、tail订单号; ORDER BY orderlist订单号,order_list总金额 DESC;INTO TABLE resultsdbf (注意:以上SQL 语句是根据查询文件生成的,大家也可以通过查询设计器完成本题操作。) (2) 步骤 1:在命令窗口执行命令: MODIFY COMMAND modil ,打开 modil 程序文件,文件中的命令代码如下: &所雨器仟的旱价增加 5 元 UPDATE order_detaill SET 单价 WITH 单价+5 &计算每种器件的平均单价 SELECT 器件号,AVG(单价)As 平均价 FROM order_detaill ORDER
11、BY 器件号 INTO CURSOR 1Sb &查询平均价小于 500 的记录 SELECT * FROM 1 sb FOR 平均价解析:解析:(1)本题考查了 SQL 的简单查询和联接查询。进行联接查询时主要是判断查询输出字段来自哪个数据表(本题都已指明),再正确设置联接条件。 (2)本题考查了 SQL 更新功能;分组计算查询和简单查询。 第一处错误属于 SQL 更新命令格式错误,通过 SQL 命令给字段赋新值是通过“=”号设置的。 第二处错误是分组短语与排序短语混淆了,这也是改错题中经常设置错误的地方。 第三处错误是查询语句的命令格式错误,SQL 查询中筛选条件通过 WHERE 短语指出。
12、三、综合应用题(总题数:1,分数:2.00)3.首先将 order_detail 表全部内容复制到 od_bak 表,然后完成如下操作:(1)将 od_bak 表中的订单号字段值只保留最后一个字母(用 REPLACE 命令或 SQL UPDATE 命令完成修改)。 (2)用 SQL 语句对 0d bak 表编写完成如下功能的程序: 把“订单号”相同并且“器件号”相同的订单合并为一条记录,“单价”取最低价,“数量”取合计。 结果先按新的“订单号”升序排序,再按“器件号”升序排序。 最终记录的处理结果保存在 od new 表中,表中的字段由“订单号”、“器件号”、“器件名”、“单价”和“数量”构成
13、。 (3)最后将程序保存为 proglprg,并执行该程序。(分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令:SELECT*FROM order_detailINTO TABLE od_bak,将 order_detail 表的全部内容复制到 od_bak 表中。 步骤 2:在命令窗口执行命令:UPDATE od_bak SET订单号=RIGHT(ALLTRIM(订单号),1),将 od_bak 表中的“订单号”字段值只保留最后一个字母。 步骤3:在命令窗口执行命令:MODIFY COMMAND PROG1,新建程序并打开程序编辑器。 步骤 4:在程序编辑器中输入如下程序
14、代码: SELECT 订单号,器件号,器件名,; MIN(单价)AS 单价,SUM(数量)AS 数量; FROM OD_BAI解析:解析:本题主要考查的是程序的建立方法、SQL 分组与计算查询语句、记录的修改方法。本题的SQL 分组与计算查询语句比较复杂,本题大概可以分为以下几步: 首先利用 select 语句将 order_detail表的记录复制到新表中,该语句比较简单。 接着,利用 UPDATE 语句更新表中的记录值,不熟悉 UPDATE语句的考生也可以通过 replacewith命令更新。 最后,通过 SQL 分组与计算查询语句对记录进行合并,其中用到了 min()和 sum()函数计算,分组语句则要求同时对两个字段进行分组,首先是按订单号字段分组,接着再按配件号分组,分组计算完毕之后,再通过 order by 短语对查询结果进行排序,最后保存查询结果到新表中。