2015年计算机二级考试《VFP》巩固习题及解析(3)
1[单选题] 在Visual FoxPro中可以建立表的命令是( )。
A.CREATE
B.CREATE DATABASE
C.CREATE QUERY
D.CREATE FORM
参考答案:A
参考解析:用命令方式建立数据库表的是在命令窗口利用OPEN DATA命令先打开数据库,然后利用CREATE命令打开表设计器进行数据表设计。
2[简答题]
(1)在考生文件夹下,有一个数据库“school”,其中有数据库表“student”、“score”和“course”。在表单向导中选取“一对多表单向导”创建一个表单。要求:从父表“student”中选取字段“学号”和“姓名”,从子表“score”中选取字段“课程编号”和“成绩”,表单样式选用“浮雕式”,按钮类型使用“图片按钮”,按“学号”升序排序,表单标题为“学生成绩浏览”,最后将表单存放在考生文件夹中,表单文件名为 “bd2”。
(2)在考生文件夹中有一数据库“school”,其中有数据库表“student”、“score”和“course”。建立“成绩大于等于75分”、按“学号”升序排序的本地视图“view2”,该视图按顺序包含字段“学号”、“姓名”、“成绩”和“课程名称”。
参考解析:
【考点指引】本大题第1小题考查一对多表单向导的使用,重点是多表之间字段的联系;第2小题考查视图的创建,重点是多表之间字段的联系。
(1)【操作步骤】
①选择【文件】→【打开】命令,在“打开”对话框的“文件类型”下拉列表框中选择“数据库”,选择“school.dbc”,单击“确定”按钮,打开数据库设计器。
②选择【文件】→【新建】命令,选择“表单”,单击“向导”按钮,在弹出的“向导选取”窗口中选择“→对多表单向导”,单击“确定”按钮。
③在“→对多表单向导”对话框的“数据库和表”列表框中选择“student”表做父表,将“可用字段”下的“学号”和“姓名”字段添加到“选定字段”列表框中,单击“下一步”按钮。
④在“一对多表单向导”对话框的“数据库和表”列表框中选择“score”表做子表,将“可用字段”下的“课程编号”和“成绩”字段添加到“选定字段”列表框中,单击“下一步”按钮。
⑤系统自动选择两个表的“学号”字段作为关联字段,单击“下一步”按钮,在“样式”列表框中选择“浮雕式”,“按钮类型”选择“图片按钮”,单击“下一步”按钮。
⑥在“可用的字段或索引标识”列表框中选择“学号”添加到“选定字段”列表框中,选择“升序”,单击“下一步”按钮。
⑦输入表单标题为“学生成绩浏览”,单击“完成”按钮,输入表单名称“bd2”并保存退出。
(2)【操作步骤】
①选择【文件】→【新建】命令,选择“视图”,单击“新建文件”按钮打开“添加表或视图”对话框,选择“表单”选项,选择数据库“school”,将表“score”、“student”和“course”分别“添加”到视图设计器中,系统会自动选择关联字段“学号”为表“score”和“student”建立内部联系,选择关联字段“课程编号”为表“score”和“course”建立内部联系,单击“确定”按钮关闭“连接条件”对话框,再关闭“添加表或视图”对话框。
②在视图设计器中单击“字段”选项卡,将“可用字段”列表框中的“student.学号”、“student.姓名”、“score.成绩”和“course.课程名称”等字段添加到右边的“选定字段”列表框中。
③在视图设计器中单击“筛选”选项卡,在“字段名”下拉列表框中选择“score.成绩”字段,在“条件”下拉列表框中选择“>=”,在“实例”编辑框中输入“75”。
④在视图设计器中单击“排序依据”选项卡,在“排序依据”选项卡的“字段名”下拉列表框中选择“student.学号”字段,单击“添加”按钮,将“student.学号”字段添加到右边的“排序条件”列表框中,在“排序条件”中选择“升序”单选项。
⑤在视图设计器中单击“连接”选项卡,在第一行的“逻辑”下拉列表框中选择“AND”。
⑥在视图设计器中单击“关闭”按钮,将视图以“view2”文件名保存在考生文件夹下。
3[简答题]对“公司”数据库中的表“职员信息”和“部门”,建立文件名为“bd3”的表单,标题为“公司管理”,表单上有一个表格控件和3个命令按钮,标题分别为“按部门查看”、“人数统计”和“关闭”。
当表单运行时:
(1)单击“按部门查看”按钮,以“部门编号”排序查询职员信息表中的记录,结果在表格控件中显示。
(2)单击“人数统计”按钮,查询职员信息表中各部门的人数,结果中含“部门编号”和“人数”等字段,结果在表格控件中显示。
(3)单击“关闭”按钮,关闭表单。
参考解析:
【考点指引】本大题主要考查表单的建立,重点是命令按钮事件代码的编写和表格控件数据源的设置。
【操作步骤】
①选择【文件】→【新建】命令,选择“表单”,单击“新建文件”按钮打开表单设计器,将Caption属性值修改为“公司管理”,单击表单控件工具栏上的“命令按钮”控件图标,为表单添加3个命令按钮Command1、Command2和Command3,单击表单控件工具栏上的“表格”控件图标,再添加一个表格控件。
②分别选择3个命令按钮,在按钮属性窗口命令按钮Command1的Caption属性值修改为“按部门查看”,Command2的Caption属性值修改为“人数统计”,Command3的Caption属性值修改为“关闭”,如图20–1所示。双击“关闭”命令按钮,在Click事件中输入代码:ThisForm.Release,用来关闭表单。
③选择表格控件“Grid1”,在表格控件属性窗口“RecordSource”属性值修改为“〝〞”,将“RecordSourceType”属性值修改为“1”。
④双击“按部门查看”命令按钮,在Click事件中输入代码:
SELECT*INTO CURSOR tmp FROM职员信息0R–DER BY部门编号
ThisForm.Grid1.RecordSourceType=1
ThisForm.Grid1.RecordSource=〝tmp〞
ThisForm.Grid1.Refresh
⑤双击“人数统计”命令按钮,在Click事件中输入代码:
SELECT部门编号,C0UNT(*)AS人数INTO CURSOR tmp FROM职员信息
ThisForm.Grid1.RecordSourceType=1
ThisForm.Grid1.RecordSource=〝tmp〞
ThisForm.Grid1.Refresh
⑥选择【表单】→【执行表单】命令,系统首先要求保存该表单文件,在弹出的“另存为”对话框中输入表单文件名“bd3”,保存在考生文件夹下,然后运行表单。
4[单选题] 有以下两个表:
读者(借书证号C,姓名C。单位C,性别L。职称C。联系电话C.·
借阅(借书证号C,总编号C,借书日期D.
查询没有借阅任何图书的读者信息,不正确的SQL语句是
A.SELECT*FROM读者WHERE借书证号<>ANY(SELECT借书证号FROM借阅.B.SELECT*FROM读者WHERE借书证号.<>ALL(SELECT借书证号FROM借阅.C.SELECT*FROM读者WHERE借书证号NOTIN(SELECT借书证号FROM借阅.D.SELECT*FROM读者WHERENOTEXISTS(SELECT借书证号FROM借阅;
WHERE借书证号=读者.借书证号
参考答案:A
参考解析:‘.<>”为常用的特殊运算符,表示“不等于”,NOTIN表示“不在一组值的范围内”,EXISTS是谓词,EX-ISTS或NOTEXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组。本题查询没有任何借阅记录的图书信息,选项B、C、D均可进行查询,但是没有“any”这一说法,因此本题选A。
5[单选题] 在SQL SELECT查询中,为了使查询结果排序必须使用短语( ).
A.ASCB.DESCC.GROUPBYD.ORDERBY
参考解析:0RDER BY是对最终的查询结果进行排序,用ORDER BY短语可将查询结果按升序(ASC)或降序(DESC)排列。GROUP BY短语用于对查询结果进行分组。
6[单选题] 有以下表:
读者(借书证号C,姓名C,单位C,性别L,职称C,联系电话C.
参考解析:BETWEEN…AND…表示“在……和……之间”‘其中包含等于,即大于等于AND前面的数。“!”和“not”表示“不等于”,题干要求查询单价小于16或大于20的图书信息, A、B、C选项均为正确的SQL语句,因此本题选D。
7[单选题]程序流程图中带有箭头的线段表示的是( )。
A.图元关系B.数据流C.控制流D.调用关系
参考答案:C
参考解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C)。
8[单选题]下列程序段执行后,内存变量sl的值是
sl=”奥运会游泳比赛”
sl=stuff(sl,7,4,”田径”.7s1
A.奥运会游泳比赛
B.奥运会田径比赛
C.奥运会田径
D.奥运会游泳
参考答案:B
参考解析:STUFF(<字符表达式1>,<起始位置>,<长度>,<字符表达式2>.为子串替换函数,用<字符表达式2>值替换<字符表达式1>中由<起始位置>和<长度>指定的一个子串。替换和被替换的字符个数不一定相等。如果<长度>值是0,<字符表达式2>则插在由<起始位置>指定的字符前面。如果<字符表达式2>值是空串,那么<字符表达式1>中由<起始位置>和<长度>指定的子串被删去。本题正确答案为B。
9[单选题] 查询订购单的数量和所有订购单金额合计的正确命令是( )。
A.SELECT COUNT(DISTINCT订单号),SUM(数量*单价)FROM产品JOIN订购单名细ON产品.产品号=订购单名细.产品号
B.SELECT COUNT(订单号),SUM(数量*单价)FROM产品JOIN订购单名细ON产品.产品号=订购单名细.产品号
C.SELECT COUNT(DISTINCT订单号),SUM(数量*单价)FROM产品,订购单名细0N产品.产品号=订购单名细.产品号
D.SELECT COUNT(订单号),SUM(数量*单价)FROM产品,订购单名细0N产品.产品号=订购单名细.产品号
参考答案:A
参考解析:SQL的核心是查询。SQL的查询命令也称作SELECT命令,它的基本形式由SELECT-FROM-WHERE查询块组成,多个查询块可以嵌套执行。超连接查询有四种连接方式,其基本格式如下:SELECT…FROM左表IN-NER I LEFT l RIGHT I FULL JOIN右表0N连接条件WTIERE其他条件。本题DISTINCT用于去掉重复值,COUNT(DIS.TINCT订单号)表示订购单的数量,SUM(数量*单价)为订购单金额,A)选项格式正确。
10[简答题]首先将“order_d”表全部内容复制到“order_d2”表,然后对“order_d2”表编写完成如下功能的程序:
(1)把订单中“商品编号”相同的订单合并为一张订单,新的“订单编号”取最小的“订单编号”,“单价”取加权平均单价(即“商品编号”相同的订单总金额/总数量),“数量”取合计。
(2)结果先按新的“订单编号”升序排序,再按“商品编号”升序排序。
(3)最终记录的处理结果保存在“order_d3”表中。
(4)最后将程序保存为“cx1.prg”,并执行该程序。
参考解析:
【考点指引】本大题主要考查SQL SELECT代码的编写,重点是分组命令GROUP BY、求最小值MIN函数和求和函数SUM的使用。
【操作步骤】
①在命令窗口中输入命令:MODI COMM cx1(回车执行),打开程序文件编辑窗口,在程序文件编辑窗口中输入以下程序代码:
SELECT*INTO TABLE order_d2 FROM order_d
SELECT MIN(订单编号)AS新订单号,商品编号,SUM(数量*单价)/SUM(数量)AS单价,SUM(数量)AS数量INTO TABLE order_d3 FROM order_d2 GROUP BY商品编号0RDER BY新订单号,商品编号
关闭程序文件编辑窗口并保存程序文件。
②在命令窗口中输入命令:DO cx1(回车执行),执行程序文件。