1、国家二级 VF 机试(操作题)模拟试卷 446 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.在考生文件夹下,有一个学生数据库 sdb,打开该数据库,完成如下操作:(1)为学生表 student 的“性别”字段增加约束:性别“男女”,出错提示信息为“性别必须是男或女”,默认值为“女”。(2)为学生表 student 创建一个主索引,主索引的索引名为 sid,索引表达式为学号。为课程表 course 创建一个主索引,主索引的索引名为 cid,索引表达式为课程号。为选课表 sc 创建一个主索引和两个普通索引(升序),主索引的索引名为 scid,索
2、引表达式为“学号+课程号”;一个普通索引的索引名为 sid,索引表达式为学号;另一个普通索引的索引名为 cid,索引表达式为课程号。(3)通过“学号”字段建立选课表 sc 和学生表 student 表间的永久联系。通过“课程号”字段建立选课表 sc 与课程表 course 间的永久联系。并为以上建立的联系设置参照完整性约束:更新规则为“级联”;删除规则为“限制”;插入规则为“限制”。(4)使用报表向导建立一个简单报表。要求选择学生表 student 表中所有字段;记录不分组;报表样式为“随意式”;列数为“1”,字段布局为“列”,方向为“纵向”;排序字段为“学号”,升序;报表标题为“学生基本情况
3、一览表”;报表文件名为 onefrx。(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.在考生文件夹下,打开学生数据库 SDB,完成如下简单应用:(1)使用查询设计器设计一个名称为 two的查询,查询每个同学的学号(来自 student 表)、姓名、课程名和成绩。查询结果先按课程名升序、再按成绩降序排序,查询去向是表,表名是 two。设计完成后,运行该查询。(2)修改一个名称为threeprg 的命令文件。该命令文件用来查询平均成绩大于等于 75 分以上的每个“女”同学的学号、姓名、平均成绩和选课门数,结果按选课门数降序排序输出到表 three 中。该命令文件在第 2 行、第
4、 3 行、第 4 行、第 5 行有错误(每行只有一处必须修改的错误,不出错的地方不要做任何修改),打开该命令文件,直接在错误处修改并保存。注意:修改时,不可改变 sql 语句的结构和短语的顺序,不允许增加或合并行。(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.在考生文件夹下,先打开学生数据库 sdb,然后创建一个文件名为 form 的表单,完成如下综合应用。在该表单中设计两命令按钮,各按钮的功能如下:“查询”按钮(Commandl):在该按钮的 Click 事件中使用 SQL 的 SELECT 命令查询每个学生所选的所有课程的成绩都是 60 分以上(包括 60 分)的学生
5、的学号、姓名、平均成绩和最低分,并将查询结果按学号升序排序存储到表 four 中。表 four 的字段为学号、姓名、平均成绩、最低分;“退出”按钮(Command2):单击“退出”按钮时,关闭表单。表单设计完成后,运行该表单进行查询。(分数:2.00)_国家二级 VF 机试(操作题)模拟试卷 446 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.在考生文件夹下,有一个学生数据库 sdb,打开该数据库,完成如下操作:(1)为学生表 student 的“性别”字段增加约束:性别“男女”,出错提示信息为“性别必须是男或女”,默认值为“女”。(2)为学
6、生表 student 创建一个主索引,主索引的索引名为 sid,索引表达式为学号。为课程表 course 创建一个主索引,主索引的索引名为 cid,索引表达式为课程号。为选课表 sc 创建一个主索引和两个普通索引(升序),主索引的索引名为 scid,索引表达式为“学号+课程号”;一个普通索引的索引名为 sid,索引表达式为学号;另一个普通索引的索引名为 cid,索引表达式为课程号。(3)通过“学号”字段建立选课表 sc 和学生表 student 表间的永久联系。通过“课程号”字段建立选课表 sc 与课程表 course 间的永久联系。并为以上建立的联系设置参照完整性约束:更新规则为“级联”;删
7、除规则为“限制”;插入规则为“限制”。(4)使用报表向导建立一个简单报表。要求选择学生表 student 表中所有字段;记录不分组;报表样式为“随意式”;列数为“1”,字段布局为“列”,方向为“纵向”;排序字段为“学号”,升序;报表标题为“学生基本情况一览表”;报表文件名为 onefrx。(分数:2.00)_正确答案:(正确答案:(1)命令窗口执行: MODIFY DATABASE sdb, 打开数据库设计器。 数据库设计器中,右击 student 表,选择【修改】,打开表设计器,“字段”选项卡中选中“性别”,“字段有效性”的“规则”中输入:性别$”男女”,“信息”框中输入:”性别必须是男或女
8、”,“默认值”文本框中输入:”女”。 (2)接上题,在 student 表设计器中,“字段”选项卡中选中“学号”,“索引”列中选“升序”,在“索引”选项卡中修改“索引名”为“sid”,修改“类型”为“主索引“,单击“确定”按钮保存表结构修改。 与上题同样的方法为 course 表建立名为“cid”,的“主索引”,单击“确定”按钮保存表结构修改。 数据库设计器中,右击 sc 表选择【修改】,打开表设计器,“索引”选项卡中,“索引名”下方的文本框中输入“scid”,“索引”选项卡中将“类型”选择为“主索引”,“表达式”下方的文本框中输入“学号+课程号”,建立主索引。 接第步,在 SC 表设计器的“
9、索引”选项卡中,第二行的“索引名”文本框中输入“sid”,将“类型”选择为“普通索引”,“表达式”下方的文本框中输入“学号”,建立一个普通索引;在第三行的“索引名”文本框中输入“cid“,“类型”选择为“普通索引”,“表达式”中输入“课程号”,建立普通索引,单击“确定”保存修改。 (3)在数据库设计器中,拖动 student 表“索引”下方的主索引“sid”到 sc 表中“索引”下方的普通索引“sid”上,为两个表建立联系。 拖动 course 表“索引”下方的主索引“scid”到 sc 表中“索引”下方的普通索引“cid”上,为两个表建立联系。 选中 student 和 sc 两个表之间的关
10、联线(被选中的线会变粗),首先执行【数据库】【清理数据库】菜单命令,清空数据库表中带有删除标记的记录,然后执行【数据库】【编辑参照完整性】菜单命令。在打开的“参照完整性”对话框的表格中,将其中的两对关系均做如下操作:选择“更新”下的单元格内容为“级联”;“删除”下的单元格内容为“限制”;“插入”下的单元格内容为“限制”。单击“确定”按钮保存参照完整性的修改。 (4)命令窗口执行:OPEN DATABASE sdb,打开 sdb 数据库。 执行【文件】【新建】菜单命令,或单击“常用”工具栏的“新建”按钮,在弹出的“新建”对话框中选中“报表”选项,单击“向导”按钮,弹出“向导选取”对话框,选中“报
11、表向导”项,单击“确定”按钮,启动报表向导。 “步骤 1字段选取”的“数据库和表”下选 student 表,将“可用字段”中的字段全部添加到“选定字段”中,单击“下一步”按钮。 “步骤 2分组记录”中,单击“下一步”按钮。 “步骤 3选择报表样式”的“样式”下选择“随意式”,单击“下一步”按钮。 “步骤 4定义报表布局”的“列数”下输入“1”,在“字段布局”下选“列”,在“方向”下选“纵向”,单击“下一步”按钮。 “步骤 5排序记录”中双击“可用的字段或索引标识”中的“学号”字段到“选定字段”中,再选择“升序”,单击“下一步”按钮。 “步骤 6完成”中“报表标题”下方文本框中输入“学生基本情况
12、一览表”,单击“完成”按钮。 在“另存为”对话框的“保存报表为:”框中输入报表文件名 one,单击“保存”按钮。 域完整性;索引;参照完整性;创建简单报表。)解析:解析:本题考查字段有效性规则的建立:表索引的建立;数据库表间永久联系的建立和参照完整性约束的设置:报表向导的使用。 建立有效性规则和设置默认值是在表设计器中操作的,要注意先选中需要建立有效性规则的字段。在表设计器的“字段”选项卡中,可以选择“排序”下拉框中的“升序”或“降序”为指定的字段建立一个索引名与索引表达式相同的普通索引,“索引”选项卡中可改变索引名或索引类型。 参照完整性是针对两个表进行设置的,要先建立两个表的关联,且有一个
13、表中必须建立关联字段的主索引(或候选索引),另一个表要建立普通索引,建立两个表联系后要先清理数据库,然后再设置参照完整性。二、简单应用题(总题数:1,分数:2.00)2.在考生文件夹下,打开学生数据库 SDB,完成如下简单应用:(1)使用查询设计器设计一个名称为 two的查询,查询每个同学的学号(来自 student 表)、姓名、课程名和成绩。查询结果先按课程名升序、再按成绩降序排序,查询去向是表,表名是 two。设计完成后,运行该查询。(2)修改一个名称为threeprg 的命令文件。该命令文件用来查询平均成绩大于等于 75 分以上的每个“女”同学的学号、姓名、平均成绩和选课门数,结果按选课
14、门数降序排序输出到表 three 中。该命令文件在第 2 行、第 3 行、第 4 行、第 5 行有错误(每行只有一处必须修改的错误,不出错的地方不要做任何修改),打开该命令文件,直接在错误处修改并保存。注意:修改时,不可改变 sql 语句的结构和短语的顺序,不允许增加或合并行。(分数:2.00)_正确答案:(正确答案:(1)步骤 1:命令窗口执行: OPEN DATABASE sdb, 打开数据库环境。 步骤 2:命令窗口执行: CREATE QUERY two, 打开查询设计器,在“添加表或视图”中,分别双击 student、sc和 course 表,添加到查询设计器中,添加的表会自动在查询
15、设计器中建立联系。 步骤 3:“字段”选项卡的“可用字段”中,依次双击“student学号”、“student姓名”、“course课程名”、“sc成绩”,将它们添加到“选定字段”列表中。 步骤 4:在“排序依据”选项卡内双击“选定字段”列表框中的“course课程名”添加到“排序条件”列表框中,“排序选项”选“升序”;双击“选定字段”中的“se 成绩”,添加到“排序条件”中,“排序选项”选“降序”。 步骤 5:执行【查询】【查询去向】菜单命令,在“查询去向”对话框中单击“表”按钮,在“表名”中输入文件名 two,单击“确定”按钮。 步骤 6:最后单击“常用”工具栏中的“运行”按钮查看结果,将
16、查询文件保存到考生文件夹下。 查询的建立与使用。 (2)步骤 1:命令窗口执行: MODIFY COMMAND three, 打开threeprg 程序,命令代码如下: OPEN DATABASE sdb SELECT 学号,姓名,AVG(成绩)AS 平均成绩,COUNT(成绩)AS 选课门数; FROM student JOIN sc OF student学号=sc学号; WHERE 性别=“女“AND AVG(成绩)=75; GROUP BY 学号; ORDER BY 4 desc; INTO TABLE three 修改程序中的错误行,修改后的程序如下: OPEN DATABASE sd
17、b SELECT student学号,姓名,AVG(成绩)平均成绩,COUNT(成绩)选课门数;在“学号”字段前加前缀“student”,指明“学号”来自 student 表 FROM student JOIN sc ON student学号=sc学号;内联接查询中联接条件使用 ON 短语 WHERE 性别=“女“; GROUP BY student学号 HAVING AVG(成绩)=75; having 短语用来指定分组的条件 ORDER BY 4 desc; INTO TABLE three 步骤 2:单击“常用”工具栏中的“保存”按钮,将程序文件保存到考生文件夹下。 SQL 简单查询;S
18、QL 分组与计算查询。)解析:解析:(1)本题主要考查的是查询设计器的使用,首先要判断查询数据源包括哪些数据表,将数据表添加到查询设计器后,再根据题目要求从每个表中选取字段,设置查询条件等完成查询。本题操作时要注意 3 个表的添加顺序,要按照 student 表、sc 表和 course 表的顺序进行添加,否则会导致两个表之间无法建立联系,或是导致查询出错。 (2)本题主要考查 SQL 的联接查询和分组计算查询。联接查询要判断查询输出字段来自哪个表,再正确设置联接条件。在使用内联接时,联接条件应使用 ON 短语。当 FROM 之后的多个关系中含有相同的属性名时,须用关系前缀指明属性所属的关系,
19、本查询中用到 student 和 sc表中都含有“学号”字段,故应写为“stud学号”。“平均成绩大于等于 75”是分组条件,使用HAVING 短语。三、综合应用题(总题数:1,分数:2.00)3.在考生文件夹下,先打开学生数据库 sdb,然后创建一个文件名为 form 的表单,完成如下综合应用。在该表单中设计两命令按钮,各按钮的功能如下:“查询”按钮(Commandl):在该按钮的 Click 事件中使用 SQL 的 SELECT 命令查询每个学生所选的所有课程的成绩都是 60 分以上(包括 60 分)的学生的学号、姓名、平均成绩和最低分,并将查询结果按学号升序排序存储到表 four 中。表
20、 four 的字段为学号、姓名、平均成绩、最低分;“退出”按钮(Command2):单击“退出”按钮时,关闭表单。表单设计完成后,运行该表单进行查询。(分数:2.00)_正确答案:(正确答案:步骤 1:命令窗口执行: CREATE FORM FORM, 打开表单设计器新建表单。向表单添加两个命令按钮。 步骤 2:选择表单对象,修改对象属性值,见表 429。 )解析:解析:本题主要考查的是表单的建立、常用属性的设置和 SQL 分组与计算查询。 SQL 分组与计算查询是对 student 和 sc 两表进行联接查询,通过 AVG 和 MIN 函数计算,根据题意,在进行分组时,需要先将学号相同的记录分到一组,然后同 having 子句对每组中的成绩进行判断是否全部大于等于 60 分,这样就可以找出满足条件的记录,通过 order by 短语对查询结果排序,最后将结果保存到指定的表中。