GO 5
INSERT BLANK
3.7.14 从其他表文件中追加数据 APPEND FROM 命令
命令格式:APPEND FROM <文件名> [FIELDS <字段名表>] [FOR <条件>]
功能:把指定表文件中的记录有条件或无条件地追加到当前表文件的末尾。
【例 327】在表文件 JSJ 中追加学号、计算机记录。
USE JSJ
APPEND FROM XSDB FIELDS 学号,计算机 for 院系="文学院"
本章小结
本章首先介绍了在建立自由表之前应设计一张二维表,再根据二维表进行数据表的设计。
Visual FoxPro 提供了 3 种建立自由表的方法,即向导、设计器和命令,这里分别对这 3 种方法 作了详细说明。建立了自由表后,为了输入记录,可以采用浏览、编辑、追加及命令等多种方 式。表的操作与使用包括如何打开/关闭表、浏览表数据、修改表数据、过滤表数据、定位表 记录、删除表记录、恢复表记录以及对表结构的相关操作等内容。Visual FoxPro 提供了物理排 序和逻辑排序两种方法对表记录进行排序,其中逻辑排序方法(即索引方法)具有速度快、效 率高、大大减少数据冗余的优点,因而得到普遍采用。查询和统计是数据库应用的重要内容,
本章介绍了顺序查询和索引查询两种传统的查询方法, 以及对数据库中的数据进行统计计算的 相关命令。最后,对使用多个表涉及的工作区以及数据工作期的相关概念进行了阐述。本章是 全书的重点, 读者应认真掌握表的建立和操作方法以及索引的概念和操作, 这对后续数据库的 学习大有帮助。
习题 3
一、选择题
1.在 Visual FoxPro 数据表中,记录是由字段值构成的数据序列,但数据长度要比各字段 宽度之和多一个字节,这个字节是用来存放( )的。
A.记录分隔标记 B.记录序号
C.记录指针定位标记 D.删除标记
2.某表文件有姓名(C,6)、入学总分(N,6,2)和特长爱好(备注型)共 3 个字段,则该表文件 的记录长度为( ) 。
A.16 B.17 C.18 D.19
3.设表文件中共有 51 条记录,执行命令 GO BOTTOM 后,记录指针指向的记录号是
( ) 。
A.51 B.1 C.52 D.EOF() 4.在 Visual FoxPro 中,关于自由表的叙述,正确的是( ) 。
B..IDX 是 FoxBASE 建立的索引文件,.CDX 是 Visual FoxPro 建立的索引文件 C..IDX 是单索引文件,.CDX 是复合索引文件
D..IDX 索引文件可以进行升序或降序排序
13.若对自由表的某字段值要求唯一,则应对该字段创建( ) 。
A.主索引 B.唯一索引 C.候选索引 D.普通索引
14.表文件 ST.DBF 中字段:姓名(C,6)、出生日期(D)、总分(N,5,1)等,要建立姓名、总 分、出生日期的复合索引,其索引关键字表达式应是( ) 。
A.姓名+总分+出生日期
B.姓名,总分,出生日期
A.REPLACE ALL 工资总额 WITH 基本工资+奖金+津贴所得税 B.TOTAL ON 工资总额 FIELDS 基本工资,奖金,津贴,所得税 C.REPLACE 工资总额 WITH 基本工资+奖金+津贴所得税 D.SUM 基本工资+奖金+津贴所得税 TO 工资总额
17.学生表中“实验成绩”是逻辑型字段,该字段的值为.T.表示实验成绩为通过,否则 为没有通过。若想统计“实验成绩”没有通过的学生人数,应使用命令( ) 。
A.COUNT TO X FOR 实验成绩=.F.
B.COUNT TO X FOR "实验成绩"=.F.
C.COUNT TO X FOR 实验成绩="F"
D.COUNT TO X FOR 实验成绩=".F. "
18.假设职称是某表文件中的一个字段,如果要计算所有正、副教授的平均工资,并将 结果赋予变量 PJ 中,应使用的命令是( ) 。
A.AVERAGE 工资 TO PJ FOR "教授"$职称
B.AVERAGE FIELDS 工资 TO PJ FOR "教授"$职称
C.AVERAGE 工资 TO PJ FOR 职称="副教授".AND.职称="教授"
D.AVERAGE 工资 TO PJ FOR 职称="副教授".OR."教授"
19.不论索引是否生效,定位到相同记录上的命令是( ) 。 A.GO TOP B.GO BOTTOM
C.GO 6 D.SKIP
20.刚打开一个空数据表时,用 EOF()和 BOF()测试,其结果一定是( ) 。 A..T.和.T. B..F.和.F. C..T.和.F. D..F..和 T.
21. 设当前数据表中包含 10 条记录, 当 EOF()为真时, 命令?RECNO()的显示结果是 ( ) 。
A.10 B.11 C.0 D.空
22.已知表中有字符型字段“职称”和“性别” ,要建立一个索引,要求首先按职称排序,
职称相同时再按性别排序,正确的命令是( ) 。
A.INDEX ON 职称+性别 TO ttt B.INDEX ON 性别+职称 TO ttt C.INDEX ON 职称,性别 TO ttt D.INDEX ON 性别,职称 TO ttt 23.有关 ZAP 命令的描述,正确的是( ) 。
A.ZAP 命令只能删除当前表的当前记录
B.ZAP 命令只能删除当前表的带有删除标记的记录 C.ZAP 命令能删除当前表的全部记录
D.ZAP 命令能删除表的结构和全部记录
24.有一学生表文件,且通过表设计器已经为该表建立了若干普通索引。其中一个索引 的索引表达式为姓名字段,索引名为 XM。现假设学生表已经打开,且处于当前工作区中,那 么可以将上述索引设置为当前索引的命令是( ) 。
A.SET INDEX TO 姓名 B.SET INDEX TO XM C.SET ORDER TO 姓名 D.SET ORDER TO XM
25.当前打开的图书表中有字符型字段“图书号” ,要求将图书号以字母 A 开头的图书记 录全部打上删除标记,通常可以使用命令( ) 。
A.DELETE FOR 图书号="A"
B.DELETE WHILE 图书号="A"
C.DELETE FOR SUBS(图书号,1,1)="A"
D.DELETE FOR 图书号 LIKE "A%"
26.执行下面的命令后,函数 EOF()的值一定为.T.的是( ) 。 A.REPLACE 基本工资 WITH 基本工资+200
B.LIST NEXT 10
C.SUM 基本工资 TO SS WHILE 性别="女"
D.DISPLAY FOR 基本工资>800
27.以下关于空值(NULL)的说法,正确的是( ) 。
A.空值等同于空字符串 B.空值表示字段或变量还没有确定值 C.VFP 不支持空值 D.空值等同于数值 0
28.命令 SELECT 0 的功能是( ) 。
A.选择编号最小的未使用工作区 B.选择 0 号工作区 C.关闭当前工作区的表 D.选择当前工作区 29.可以随着数据表文件的打开而自动打开的索引文件是( ) 。
A.单索引文件(.IDX) B.复合索引文件(.CDX)
C.结构复合索引文件(.CDX) D.非结构复合索引文件(.CDX)
30.在 Visual FoxPro 系统中,.DBF 文件被称为( ) 。
A.LIST FOR !XB B.LIST FOR XB C.LIST FOR XB="女" D.LIST FOR XB=.F.
34.若 TM_BMB 表包含 50 条记录,在执行 GO TOP 命令后, ( )命令不能显示所有 记录。
A.LIST ALL B.LIST REST C.LIST NEXT 50 D.LIST RECORD 50
35.执行 USE TM_BMB(回车)SKIP 1 后,下列显示值一定是.F.的命令是( ) 。 A.?BOF() B.?EOF() C.?.T. D.?RECNO()=1 二、填空题
1.建立“学生情况”表结构时,如果最高奖学金不超过 120.58 元,奖学金字段的宽度和 小数位至少应为________。
2.在 Visual FoxPro 数据表管理系统中,备注型文件的扩展名是________。
3.假设考生表已经打开,表中有“年龄” (N 型)字段,要统计年龄小于 20 岁的考生人 数,并将结果存储于变量 M1 中,应该使用的完整命令是________。
4.在 Visual FoxPro 命令窗口中,要修改表的结构,应该输入命令________。
5.表 XS.DBF 中有日期型字段“出生日期” ,列出其中所有 12 月份出生的男同学记录:
DISPLAY FOR ________.AND.性别="男"
6.某表有 50 个记录,其当前记录为 9 号记录,当执行了 SKIP 2*3 后,系统显示的记录 号为________。
7.一个有多条记录的表打开后,要在最后一条记录后增加一条空记录,应使用命令 ________。
8.已打开表文件,其中“出生日期”字段为日期型,年龄字段为数值型。要计算每人今 年的年龄并把其值填入“年龄”字段中,应使用命令________。
9. 要想在一个打开的表中物理地删除某些记录, 应先后使用的两个命令分别是________。
10.若能够正常执行命令 REPLACE ALL MYD WITH DATE(),说明字段 MYD 的类型是 ________。
11.当前数据库文件有 10 条记录,要在第 5 条记录后面插入 1 条新记录,应使用命令 ________。
12.把当前表当前记录的学号、姓名字段值复制到数组 A 的命令是:
SCATTER FIELD 学号,姓名________
三、上机操作题 1.练习建立表文件
在 E 盘根文件夹上建立 VFLX 文件夹,然后按下列步骤操作:
(1)建立如表 34 所示的表结构。
表 34 表结构
字段名 字段类型 宽度 小数位数
学号 C 8
姓名 C 6
性别 C 2
入学日期 D 8
奖学金 N 4 1
团员否 L 1
爱好 M 4
(2)为该表建立以“学号”字段升序排序的候选索引。
(3)输入 3~4 条记录,内容自定。
(4)完成存盘,将此表命名为 XSH.DBF,存于 E 盘 VFLX 文件夹中。
2.表文件的基本操作
将 XSDB.DBF、YY.DBF、JSJ.DBF 复制到 VFLX 文件夹内,以备以下操作使用。以下除 最后一题均使用表文件 XSDB,假设 XSDB 已打开。
(1)使用 DISPLAY 命令显示当前记录。
(2)使用 DISPLAY 或 LIST 命令显示前 3 条记录。
(3)使用 DISPLAY 或 LIST 命令显示 6 号记录。
(4)使用 BROWSE 命令显示文学院所有男同学的记录。
(5)使用 BROWSE 命令显示 10 月 1 日出生的同学的姓名、性别和生日。
(6)使用 REPLACE 命令,对英语成绩在 90(包括 90)分以上的记录,将其奖学金增加 50 元。
(7)使用 COPY 命令,复制一个与 XSDB 表文件的结构完全相同的空表 KB.DBF。
(8)使用 COPY 命令,将表文件 XSDB 中所有党员的记录组成表文件 DY.DBF。
(9)使用 COUNT 命令统计女同学人数,并将结果存入变量 R 中。
(10)使用 AVERAGE 命令求文学院学生的英语平均成绩,并将结果存入变量 X 中。
(11)使用 SUM 命令求男生的奖学金总额,并将结果存入变量 Y 中。
(12)在数据工作期窗口中分别打开 XSDB.DBF、YY.DBF、JSJ.DBF 共 3 个表文件。