2015年全国计算机等级考试二级VFP课后练习题及答案(22)
发布时间:2010/9/30 16:15:00 来源:城市学习网 编辑:ziteng
练习题
一、选择题
1.在当前工作区已打开职工人事表,其结构如下:姓名(C,8)、婚否(L)、工作年月(D)、工资(N,6,2)。要显示所有1990年和1990年以后参加工作的女职工情况,使用命令:( )
A)LIST FOR 工作年月 >= CTOD(″01/01/90″).AND.性别=″女″
B)LIST FOR 工作年月 >= 1990.AND.性别=″女″
C)LIST FOR YEAR(工作年月)>= 90.AND.性别=″女″
D)LIST FOR YEAR(工作年月)> = ′1990′.AND.性别=″女″
2.数据库中“婚姻状况”字段为逻辑类型,要显示所有未婚职工的情况,使用命令( )
A) LIST FOR 婚否=.F.
B) LIST FOR 婚否=″F″
C) LIST FOR .NOT. 婚否
D) LIST FOR 婚否=″未婚″
3.设当前表中有一个字段名为ABC,当前记录该字段的值是123。同时有一个内存变量ABC,该内存变量已赋值为-123。执行命令?ABC后,屏幕上显示的信息是( )
A) 123
B) -123
C) 123 -123
D) 错误信息
4.设当前表有8条记录,在下列3种情况下:当前记录号为1、EOF()为真时、BOF()为真时,命令?RECNO()的结果分别是( )
A)1、8、1
B)1、9、1
C)1、9、0
D)1、8、0
5.在Visual FoxPro数据库管理系统中,某表文件中有一数值字段,要求有4位整数,2位小数,其值可能有负值,它的宽度应定义为( )
A) 8
B) 7
C) 6
D) 10
6.把学生表文件中字段名“XM”改为“姓名”,同时把它的宽度从8位改成6位并存盘。如果显示数据库文件记录,会发现各记录的“姓名”字段的数据( )
A)全部丢失
B)仍全部保留
C)全被截取成前6位
D)凡超长的被删除
7.表文件CJ.DBF中有性别(C)和平均分(N)字段,要显示平均分超过90和不及格的全部女生记录,应当使用命令( )
A)LIST FOR性别=‘女’.AND.平均分>90.OR.平均分<60
B)LIST FOR性别=‘女’,平均分>90,平均分<60
C)LISE FOR性别=‘女’.AND.平均分>90.AND)平均分<60
D)LISE FOR性别=‘女’.AND.(平均分>90.OR.平均分<60=
8.一个自由表中有3个备注型字段,这些字段的内容存放在( )
A) 3个.DBT文件中
B) 同一个.FPT文件中
C) 3个.DBF文件中
D) 同一个.DBF文件中
9.某数据库表共有5个字段,其中第一个字段是字符型,宽度为6;第二个字段是数值型,宽度为8,小数位为2;其余3个字段分别是逻辑型、日期型和备注型。则该表每条记录的总宽度是( )
A)34个字节
B)35个字节
C)33个字节
D)36个字节
10.数值型字段宽度是6,小数位是2,此字段整数部分最小值是( )
A)-999
B)99
B)9999
D)-99
11.数据库表文件共有8个记录,当前记录号是5,要显示最后4个记录,在下列命令中,错误命令是( )
A)LIST NEXT 4
B)LIST REST
C)LIST SKIP 4
D)LIST FOR RECNO()>4
12.打开一个空数据库文件,执行LIST命令后,屏幕显示如下信息( )
A)〃数据库表没有记录〃
B)只显示字段名称
C) .T. 和.F.
D)不显示任何信息
13.执行命令LIST NEXT 1后,记录指针的位置指向( )
A)下一条记录
B)原来记录
C)首记录
D)尾记录
14.数据库表中有数学、英语、计算机和总分字段,都是N型。要将所有学生的各门成绩汇总后存入总分字段中,使用命令( )
A)REPLACE 总分 WITH 数学+英语+计算机
B)REPLACE 总分 WITH 数学,英语+计算机
C)REPLACE ALL 总分 WITH 数学+英语+计算机
D)REPLACE 总分 WITH 数学+英语+计算机 FOR ALL
15.修改数据库表中数据的命令有EDIT,其特点是( )
A)边查阅边修改
B)表之间自动更新
C)成批自动替换
D)按给定条件顺序编辑修改
16.在Visual FoxPro中,要对某表所有工程师增加150元工资应使用以下命令( )
A) CHANGE工资WITH工资+150 FOR职称=″工程师″
B) REPLACE 工资 WITH 工资+150 FOR 职称=工程师
C) CHANGE ALL 工资 WITH 工资+150 FOR 职称=″工程师″
D) REPLACE ALL 工资 WITH 工资+150 FOR 职称=″工程师″
17.在Visual FoxPro 系统中,表已经打开,要以全屏幕编辑的方式修改符合条件的记录中的某些字段,应使用命令( )
A)BROWSE FIELDS 字段名表 FOR 条件
B)REPLACE FIELDS 字段名表 FOR 条件
C)EDIT FIELDS 字段名表 FOR 条件
D)以上3条命令均可
18.设表中有一个C型字段NAME。打开库文件后,要把内存变量C的字符串内容输入到当前记录的NAME字段,应当使用命令( )
A) NAME=C
B) REPLACE NAME WITH C
C) REPLACE NAME WITH C
D) REPLACE ALL NAME WITH C
19.使用BROWSE命令可以方便地对当前表记录进行多种编辑操作,其中包括( )
A) 修改、追加、删除及对备注字段编辑,但不能插入
B) 修改、追加、删除及插入,但不能编辑备注字段
C) 修改、追加、插入及编辑备注字段,但不能删除
D) 修改、追加、删除,但不能插入,不能编辑备注字段
20.使用MODIFY STRUCTURE命令时,为了不丢失数据应注意几点,但是在下列注意事项当中不必要的是( )
A) 不能同时修改字段名及其类型或宽度
B) 不能同时修改字段名和插入新的字段
C) 不能同时修改字段名和删除字段
D) 不能在删除字段的同时修改字段的类型及宽度
21.自由表的当前记录号是100,在100和101条记录之间插入一条空记录的命令是( )
A) INSERT
B) APPEND BLANK
C) INSERT BLANK
D) INSERT BEFORE BLANK
22.已打开职工基本情况表,该表结构如下
字段 字段名 类型 宽度 小数
1 姓名 字符型 8
2 性别 字符型 2
3 出生日期 日期型 8
4 婚否 逻辑型 1
5 工资 数值型 6 2
6 职称 字符型 10
7 学历 字符型 12
将所有1955年及以前出生的副教授的工资提高20%,应使用命令( )
A)REPL 工资 WITH 工资*1.2 FOR YEAR(出生日期)>=1955.OR.职称=″副教授″
B)REPL 工资 WITH 工资*1.2 FOR SUBS(出生日期,7,2)>=55.AND.职称=″副教授″
C)REPL ALL工资 WITH 工资*1.2 FOR YEAR(出生日期)>=1955.AND.职称=″副教授″
D)REPL ALL工资 WITH 工资*1.2 FOR SUBSTR(‘出生日期’,7,2)>=55.AND.职称=’副教授’
23.为使用文件结束函数EOF( )给出逻辑“真”,需对表文件进行操作 ( )
A)GO N(N为记录号)
B)GO BOTTOM
SKIP
C)GO BOTTOM
D)GO BOTTOM
SKIP -1
24.对表文件KXCJ施行如下三条命令的结果为( )
USE KXCJ
INSERT BLANK BEFORE
INSERT BLANK
A)在第一条记录的后面插入两条记录;
B)在文件开头插入一条空记录;
C)在第二条记录之前插入两条空记录;
D)在文件的开头插入两条空记录;
25.在当前记录的前面增加一个记录的命令是( ),在当前记录的后面增加一个记录的命令是( ),在当前记录的前面增加一条空白记录的命令是( ),在当前记录的后面增加一空白记录的命令是( ),可在文件末尾增加记录的命令是( )
A)INSERT BLANK BEFORE
B)INSER BLAND
C)APPEND
D)INSERT BEFORE
E)INSERT
F)BROWSE
26.使用( )命令是为记录加上*(删除标记),使用( )命令可将加上的删除标记的记录删除,用( )命令删除的记录不可恢复。
A)^U
B)DELETE
C)PACK
D)ZAP
E)DELETE RECORD(记录号)
27.在工资.DBF表文件的第三个记录的前后各插入一个空记录的正确操作是( )
A)GO 3 B)GO 2
INSERT BEFORE BLANK INSERT BLANK
INSERT BEFORE GO 4
INSERT BLANK
C)GO 3 D)INSERT BECORD 3 BEFORE BLANK
INSERT BEFORE BLANK INSERT RECORD 4 BEFORE BLANK
GO 3
INSERT BLANK
28.计算所有职称为副教授以及教授的工资总额,并将结果赋予变量ZGZ(D)
A)SUM工资TO ZGZ FOR 职称="副教授".and."教授"
B)SUM工资TO ZGZ FOR 职称="副教授".OR."教授"
C)SUM工资TO ZGZ FOR职称="副教授".AND.职称="教授"
D)SUM工资TO ZGZ FOR"教授"$职称
29.当前工资表文件中有30条记录,当前记录号是8,SUM命令计算总和,如果不给出“范围”选项,那么系统将( )
A)只计算当前记录的工资值
B)计算全部记录的工资和
C)计算后22条记录的工资和
D)计算前8条记录的工资和
30.计算各类职称的工资总和,并把结果存入GZDT据库中,应使用( )
A)SUM 职称TO GZDT
B)SUM工资TO GZDT
C)TOTAL ON 职称 TO GZDT FIELDS工资
D)TOTAL ON 工资TO GZDT FIELDS职称
31.在指定范围内对满足条件的数值型字段求和的命令是 (1) ,;对指定范围内满足条件的数值型字段求平均值的命令是 (2) 。
A)SUM
B)AVERAGE
C)COUNT
D)TOTAL
32.当前表中有数值型字段“年龄”,每条记录对应一个职工。下面命令中计出年龄在35岁以上职工人数的是( )
A)SUM 年龄 TO XY FOR 年龄>35
B)AVERAGE 年龄TO XY FOR年龄>35
C)COUNT FOR年龄>35 TO XY
D)COUNT ON年龄 TO XY FOR年龄>35 [NextPage] 二、简答
Visual FoxPro有哪两类索引?如何用命令的方法和操作的方法建立复合索引?
主索引、候选索引、普通索引和唯一索引间有什么不同?对于有学号、姓名、性别、出生日期的数据库表,各字段可以建立哪些索引?
三、单项选择题
1.可以将一个表文件排序生成一个新表文件,按所给关键字进行升序排列的命令是( ),按所给关键字进行降序排列的命令是( )。
A)SORT…/A
B)SORT…/D
C)SORT…
D)INDEX ON …
2.在任何情况下,使用LOCATE命令完毕时,EOF()的值均为( )
A)真
B)假
C)保持不变
D)视查找情况而定
3.命令FIND和SEEK都可以用于索引文件查找,它们的区别是( )
A)SEEK可用于非索引文件查找,而FIND则不能;
B)FIND可用于非关键字查找,而SEEK不能;
C)SEEK可用于组合关键字查找,而FIND不能;
D)SEEK可直接使用D型关键字查找,而FIND不能;
4.对XSDA.DBF文件,以性别(C型)字段和出生日期(D型)字段为关键字建立简单索引文件XS.IDX,使用( )命令。
A)INDEX ON 性别 出生日期 TO XS.IDX
B)INDEX ON 性别,出生日期 TO XS.IDX
C)INDEX ON 性别+出生日期 TO XS.IDX
D)INDEX ON 性别+DTOC(出生日期) TO XS.IDX
5.在命令窗口下执行如下命令:
USE XSDA.DBF
INDEX ON 成绩 TO XS.IDX
A=530
B=STR(A,6,1)
若分别用SEEK和FIND命令进行查找,使用( )命令。
A)FIND A
B)FIND &A
SEEK A SEEK &A
C)FIND B
D)FIND &B
SEEK B SEEK A
6.最正确描述命令LOCATE FOR NUM=“A” WHILE FC>6含义的说法是( )。
A)自顶向下查找NUM=“A”的第一个记录。
B)自顶向下查找FC>6的第一个记录。
C)自顶向下查找NUM=“A”且FC>6的第一个记录。
D)自顶向下查找NUM=“A”的第一个记录,且在遇到第一个FC>6的记录处停下来。
7.SORT命令中,当写有多个关键字段名时,其排序的原则是( )。
A)记录结构中第一个关键字段值不存在时,由第二个关键字段值来确定,以此类推。
B)在被查找的记录中第一个关键字段值相同时,由第二个关键字段值来确定,以此类推。
C)先按第一个关键字段值排序,接着第二个关键字段值排序,以此类推。
D)可以按用户心愿,从中选定一个关键字段名,并按它的大小进行排序。
8.进行多重索引时,表达式中各字段( )。
A)除数值型外,其它一律转换为数值型。
B)除字符型外,其它一律转换为字符型。
C)数字型和字符型不变外,其它一律转换为字符型。
D)一律按原样书写。
四、改错题:
1.USE 职工
INDEX ON 工资+出生日期 TO GC
2.USE 职工
INDEX ON 工资 TO GZ
FIND 王爱民
3.USE 职工
INDEX ON 出生日期 TO SR
FIND 10/05/49
4.USE 职工
INDEX ON 姓名 TO XM
VNAME=“王爱民”
FIND VNAME (用两种方法修改)
5.USE 职工
SEEK “宋文彬”
五、对XSDA.DBF表文件,按下列要求写出相应的命令序列。
1.将所有性别为男的记录,先按姓名字段值的升序,再按出生日期值的降序排序,生成名为XSS1.DBF的排序文件,并显示排序文件内容。
2.按入学分字段值的降序、学号升序建立复合索引文件XSI2.CDX。
3.按入学分字段值的降序,再按年龄的升序和按学号的升序建立索引文件XSI3.CDX。
4.以姓名字段建立索引文件,查找并显示姓“王”的第一个记录。分别用LOCATE、FIND、SEEK命令实现。
六、对ZGDA.DBF表文件查找,并显示符合下列条件的记录(方法不限),请写出命令
1.姓“齐”且职称为讲师的第一个记录。
2.性别为男且职称为助教的所有记录。
3.职称为副教授且工资级别为4的所有记录。
4.查询68年7月1以后,72年8月1日以前出生的记录。
5.查询姓名中含“春”字的记录。
6.查询出生年月为“09/10/68”的记录。
七、简答题
1.永久关系和临时关系有什么区别,存在于哪些表中。
2.如何建立两表间的永久关系和临时关系? 练习题答案
一、单项选择题
1.在当前工作区已打开职工人事表,其结构如下:姓名(C,8)、婚否(L)、工作年月(D)、工资(N,6,2)。要显示所有1990年和1990年以后参加工作的女职工情况,使用命令:(C)
A)LIST FOR 工作年月 >= CTOD(″01/01/90″).AND.性别=″女″
B)LIST FOR 工作年月 >= 1990.AND.性别=″女″
C)LIST FOR YEAR(工作年月)>= 90.AND.性别=″女″
D)LIST FOR YEAR(工作年月)> = ′1990′.AND.性别=″女″
2.数据库中“婚姻状况”字段为逻辑类型,要显示所有未婚职工的情况,使用命令(AC)
A) LIST FOR 婚否=.F.
B) LIST FOR 婚否=″F″
C) LIST FOR .NOT. 婚否
D) LIST FOR 婚否=″未婚″
3.设当前表中有一个字段名为ABC,当前记录该字段的值是123。同时有一个内存变量ABC,该内存变量已赋值为-123。执行命令?ABC后,屏幕上显示的信息是(A)
A) 123
B) -123
C) 123 -123
D) 错误信息
4.设当前表有8条记录,在下列3种情况下:当前记录号为1、EOF()为真时、BOF()为真时,命令?RECNO()的结果分别是(B)
A)1、8、1
B)1、9、1
C)1、9、0
D)1、8、0
5.在Visual FoxPro数据库管理系统中,某表文件中有一数值字段,要求有4位整数,2位小数,其值可能有负值,它的宽度应定义为(A)
A) 8
B) 7
C) 6
D) 10
6.把学生表文件中字段名“XM”改为“姓名”,同时把它的宽度从8位改成6位并存盘。如果显示数据库文件记录,会发现各记录的“姓名”字段的数据(C)
A)全部丢失
B)仍全部保留
C)全被截取成前6位
D)凡超长的被删除
7.表文件CJ.DBF中有性别(C)和平均分(N)字段,要显示平均分超过90和不及格的全部女生记录,应当使用命令(D)
A)LIST FOR性别=‘女’.AND.平均分>90.OR.平均分<60
B)LIST FOR性别=‘女’,平均分>90,平均分<60
C)LISE FOR性别=‘女’.AND.平均分>90.AND)平均分<60
D)LISE FOR性别=‘女’.AND.(平均分>90.OR.平均分<60=
8.一个自由表中有3个备注型字段,这些字段的内容存放在(B)
A) 3个.DBT文件中
B) 同一个.FPT文件中
C) 3个.DBF文件中
D) 同一个.DBF文件中
9.某数据库表共有5个字段,其中第一个字段是字符型,宽度为6;第二个字段是数值型,宽度为8,小数位为2;其余3个字段分别是逻辑型、日期型和备注型。则该表每条记录的总宽度是()
A)34个字节
B)35个字节
C)33个字节
D)36个字节
10.数值型字段宽度是6,小数位是2,此字段整数部分最小值是(D)
A)-999
B) 99
B) 9999
D) -99
11.数据库表文件共有8个记录,当前记录号是5,要显示最后4个记录,在下列命令中,错误命令是(C)
A)LIST NEXT 4
B)LIST REST
C)LIST SKIP 4
D)LIST FOR RECNO()>4
12.打开一个空数据库文件,执行LIST命令后,屏幕显示如下信息(D)
A)〃数据库表没有记录〃
B)只显示字段名称
C) .T. 和.F.
D) 不显示任何信息
13.执行命令LIST NEXT 1后,记录指针的位置指向(B)
A)下一条记录
B)原来记录
C)首记录
D)尾记录
14.数据库表中有数学、英语、计算机和总分字段,都是N型。要将所有学生的各门成绩汇总后存入总分字段中,使用命令(C)
A)REPLACE 总分 WITH 数学+英语+计算机
B)REPLACE 总分 WITH 数学,英语+计算机
C)REPLACE ALL 总分 WITH 数学+英语+计算机
D)REPLACE 总分 WITH 数学+英语+计算机 FOR ALL
15.修改数据库表中数据的命令有EDIT,其特点是(A)
A)边查阅边修改
B)表之间自动更新
C)成批自动替换
D)按给定条件顺序编辑修改
16.在Visual FoxPro中,要对某表所有工程师增加150元工资应使用以下命令(D)
A) CHANGE工资WITH工资+150 FOR职称=″工程师″
B) REPLACE 工资 WITH 工资+150 FOR 职称=工程师
C) CHANGE ALL 工资 WITH 工资+150 FOR 职称=″工程师″
D) REPLACE ALL 工资 WITH 工资+150 FOR 职称=″工程师″[NextPage] 17.在Visual FoxPro 系统中,表已经打开,要以全屏幕编辑的方式修改符合条件的记录中的某些字段,应使用命令(A)
A)BROWSE FIELDS 字段名表 FOR 条件
B)REPLACE FIELDS 字段名表 FOR 条件
C)EDIT FIELDS 字段名表 FOR 条件
D)以上3条命令均可
18.设表中有一个C型字段NAME。打开库文件后,要把内存变量C的字符串内容输入到当前记录的NAME字段,应当使用命令(BC)
A) NAME=C
B) REPLACE NAME WITH C
C) REPLACE NAME WITH C
D) REPLACE ALL NAME WITH C
19.使用BROWSE命令可以方便地对当前表记录进行多种编辑操作,其中包括(A)
A) 修改、追加、删除及对备注字段编辑,但不能插入
B) 修改、追加、删除及插入,但不能编辑备注字段
C) 修改、追加、插入及编辑备注字段,但不能删除
D) 修改、追加、删除,但不能插入,不能编辑备注字段
20.使用MODIFY STRUCTURE命令时,为了不丢失数据应注意几点,但是在下列注意事项当中不必要的是(C)
A) 不能同时修改字段名及其类型或宽度
B) 不能同时修改字段名和插入新的字段
C) 不能同时修改字段名和删除字段
D) 不能在删除字段的同时修改字段的类型及宽度
21.自由表的当前记录号是100,在100和101条记录之间插入一条空记录的命令是(C)
A) INSERT
B) APPEND BLANK
C) INSERT BLANK
D) INSERT BEFORE BLANK
22.已打开职工基本情况表,该表结构如下
字段 字段名 类型 宽度 小数
1 姓名 字符型 8
2 性别 字符型 2
3 出生日期 日期型 8
4 婚否 逻辑型 1
5 工资 数值型 6 2
6 职称 字符型 10
7 学历 字符型 12
将所有1955年及以前出生的副教授的工资提高20%,应使用命令(C)
A)REPL 工资 WITH 工资*1.2 FOR YEAR(出生日期)>=1955.OR.职称=″副教授″
B)REPL 工资 WITH 工资*1.2 FOR SUBS(出生日期,7,2)>=55.AND.职称=″副教授″
C)REPL ALL工资 WITH 工资*1.2 FOR YEAR(出生日期)>=1955.AND.职称=″副教授″
D)REPL ALL工资 WITH 工资*1.2 FOR SUBSTR(‘出生日期’,7,2)>=55.AND.职称=’副教授’
23.为使用文件结束函数EOF( )给出逻辑“真”,需对表文件进行操作 (B)
A)GO N(N为记录号)
B)GO BOTTOM
SKIP
C)GO BOTTOM
D)GO BOTTOM
SKIP -1
24.对表文件KXCJ施行如下三条命令的结果为(D)
USE KXCJ
INSERT BLANK BEFORE
INSERT BLANK
A)在第一条记录的后面插入两条记录;
B)在文件开头插入一条空记录;
C)在第二条记录之前插入两条空记录;
D)在文件的开头插入两条空记录;
25.在当前记录的前面增加一个记录的命令是( ),在当前记录的后面增加一个记录的命令是( ),在当前记录的前面增加一条空白记录的命令是( ),在当前记录的后面增加一空白记录的命令是( ),可在文件末尾增加记录的命令是( ) D E A B C
A)INSERT BLANK BEFORE
B)INSER BLAND
C)APPEND
D)INSERT BEFORE
E)INSERT
F)BROWSE
26.使用( )命令是为记录加上*(删除标记),使用( )命令可将加上的删除标记的记录删除,用( )命令删除的记录不可恢复。 B C CD
A)^U
B)DELETE
C)PACK D)ZAP
E)DELETE RECORD(记录号)
27.在工资.DBF表文件的第三个记录的前后各插入一个空记录的正确操作是(B)
A)GO 3 B)GO 2
INSERT BEFORE BLANK INSERT BLANK
INSERT BEFORE GO 4
INSERT BLANK
C)GO 3 D)INSERT BECORD 3 BEFORE BLANK
INSERT BEFORE BLANK INSERT RECORD 4 BEFORE BLANK
GO 3
INSERT BLANK
28.计算所有职称为副教授以及教授的工资总额,并将结果赋予变量ZGZ(D)
A)SUM工资TO ZGZ FOR 职称="副教授".and."教授"
B)SUM工资TO ZGZ FOR 职称="副教授".OR."教授"
C)SUM工资TO ZGZ FOR职称="副教授".AND.职称="教授"
D)SUM工资TO ZGZ FOR"教授"$职称
29.当前工资表文件中有30条记录,当前记录号是8,SUM命令计算总和,如果不给出“范围”选项,那么系统将(B)
A)只计算当前记录的工资值
B)计算全部记录的工资和
C)计算后22条记录的工资和
D)计算前8条记录的工资和
30.计算各类职称的工资总和,并把结果存入GZDT据库中,应使用(C)
A)SUM 职称TO GZDT
B)SUM工资TO GZDT
C)TOTAL ON 职称 TO GZDT FIELDS工资
D)TOTAL ON 工资TO GZDT FIELDS职称
31.在指定范围内对满足条件的数值型字段求和的命令是 (1) ,;对指定范围内满足条件的数值型字段求平均值的命令是 (2) 。(A)(B)
A)SUM
B)AVERAGE
C)COUNT
D)TOTAL
32.当前表中有数值型字段“年龄”,每条记录对应一个职工。下面命令中计出年龄在35岁以上职工人数的是(C)
A)SUM 年龄 TO XY FOR 年龄>35
B)AVERAGE 年龄TO XY FOR年龄>35
C)COUNT FOR年龄>35 TO XY
D)COUNT ON年龄 TO XY FOR年龄>35
二、简答
Visual FoxPro有哪两类索引?如何用命令的方法和操作的方法建立复合索引?
Visual FoxPro有两种结构的索引,一种是独立索引文件.IDX,这种索引只有一个索引关键字;另一种是复合索引文件.CDX,复合索引文件可以包含多个索引关键字,复合索引文件又分为两种:结构复合索引和非结构复合索引。
命令方式建立复合索引的方法:
INDEX ON <关键字1> TAG <索引标记1> OF <复合索引文件名>
INDEX ON <关键字2> TAG <索引标记2> OF <复合索引文件名>
…… &&若建立结构复合索引,则可省略OF <>项
在项目管理器中的操作方法:打开需建立索引的表,然后打开“表设计器” ,即可在“索引”选项卡中建立索引。
主索引、候选索引、普通索引和唯一索引间有什么不同?对于有学号、姓名、性别、出生日期的数据库表,各字段可以建立哪些索引?
主索引:可确保字段中输入值的唯一性并决定了处理记录的顺序,一个数据库表中只能有一个主索引。
候选索引:与主索引一样要求字段的唯一性并决定了处理记录的顺序。在一个数据表和自由表中均可建立多个候选索引。
普通索引可以决定记录处理的顺序,但是允许字段中出现重复值。一个表中可以加入多个普通索引。
唯一索引:为了保持与早期版本的兼容性,还可以建立一个唯一性索引,以指定字段的首次出现为基础对记录进行排序。
可以对学号建立主索引或候选索引,对姓名、性别、出生日期建立普通索引。
三、单项选择题
1.可以将一个表文件排序生成一个新表文件,按所给关键字进行升序排列的命令是(AC),按所给关键字进行降序排列的命令是(B)。
A)SORT…/A
B)SORT…/D
C)SORT…
D)INDEX ON …
2.在任何情况下,使用LOCATE命令完毕时,EOF()的值均为(D)
A)真
B)假
C)保持不变
D)视查找情况而定
3.命令FIND和SEEK都可以用于索引文件查找,它们的区别是(D)
A)SEEK可用于非索引文件查找,而FIND则不能;
B)FIND可用于非关键字查找,而SEEK不能;
C)SEEK可用于组合关键字查找,而FIND不能;
D)SEEK可直接使用D型关键字查找,而FIND不能;
4.对XSDA.DBF文件,以性别(C型)字段和出生日期(D型)字段为关键字建立简单索引文件XS.IDX,使用(D)命令。
A)INDEX ON 性别 出生日期 TO XS.IDX
B)INDEX ON 性别,出生日期 TO XS.IDX
C)INDEX ON 性别+出生日期 TO XS.IDX
D)INDEX ON 性别+DTOC(出生日期) TO XS.IDX
5.在命令窗口下执行如下命令:
USE XSDA.DBF
INDEX ON 成绩 TO XS.IDX
A=530
B=STR(A,6,1)
若分别用SEEK和FIND命令进行查找,使用(D)命令。
A)FIND A B)FIND &A
SEEK A SEEK &A
C)FIND B D)FIND &B
SEEK B SEEK A
6.最正确描述命令LOCATE FOR NUM=“A” WHILE FC>6含义的说法是(C)。
A)自顶向下查找NUM=“A”的第一个记录。
B)自顶向下查找FC>6的第一个记录。
C)自顶向下查找NUM=“A”且FC>6的第一个记录。
D)自顶向下查找NUM=“A”的第一个记录,且在遇到第一个FC>6的记录处停下来。
7.SORT命令中,当写有多个关键字段名时,其排序的原则是(C)。
A)记录结构中第一个关键字段值不存在时,由第二个关键字段值来确定,以此类推。
B)在被查找的记录中第一个关键字段值相同时,由第二个关键字段值来确定,以此类推。
C)先按第一个关键字段值排序,接着第二个关键字段值排序,以此类推。
D)可以按用户心愿,从中选定一个关键字段名,并按它的大小进行排序。
8.进行多重索引时,表达式中各字段(B)。
A)除数值型外,其它一律转换为数值型。
B)除字符型外,其它一律转换为字符型。
C)数字型和字符型不变外,其它一律转换为字符型。
D)一律按原样书写。
四、改错题:
1.USE 职工
INDEX ON 工资+出生日期 TO GC
改正:USE 职工
INDEX ON str(工资)+dtoc(出生日期) TO GC
2.USE 职工
INDEX ON 工资 TO GZ
FIND 王爱民
改正:USE 职工
INDEX ON 姓名 TO GZ
FIND 王爱民
3.USE 职工
INDEX ON 出生日期 TO SR
FIND 10/05/49
改正:USE 职工
INDEX ON 出生日期 TO SR
SEEK ctod(’10/05/49’)
4.USE 职工
INDEX ON 姓名 TO XM
VNAME=“王爱民”
FIND VNAME (用两种方法修改)
改正1:USE 职工
INDEX ON 姓名 TO XM
VNAME=“王爱民”
FIND &VNAME
改正2:USE 职工
INDEX ON 姓名 TO XM
VNAME=“王爱民”
seek VNAME
5.USE 职工
SEEK “宋文彬”
改正:USE 职工
INDEX ON 姓名 TO XM
SEEK “宋文彬”
五、对XSDA.DBF表文件,按下列要求写出相应的命令序列。
1.将所有性别为男的记录,先按姓名字段值的升序,再按出生日期值的降序排序,生成名为XSS1.DBF的排序文件,并显示排序文件内容。
SORT TO xss1.dbf ON 姓名/A,出生日期/D FOR 性别="男"
USE XSS1.DBF
LIST
2.按入学分字段值的降序、学号升序建立复合索引文件XSI2.CDX。
INDEX ON 入学分 TAG 入学分 OF XSI2.CDX DESCENDING
INDEX ON 学号 TAG 学号 OF XSI2.CDX ASCENDING
按入学分字段值的降序,再按年龄的升序和按学号的升序建立索引文件XSI3.CDX。
INDEX ON 入学分 TAG 入学分 OF XSI3.CDX DESCENDING
INDEX ON 年龄 TAG 年龄 OF XSI3.CDX ASCENDING
INDEX ON 学号 TAG 学号 OF XSI3.CDX ASCENDING
以姓名字段建立索引文件,查找并显示姓“王”的第一个记录。分别用LOCATE、FIND、S
EEK命令实现。
INDEX ON 姓名 TAG 姓名
LOCATE FOR 姓名="王" 或 FIND 王 或SEEK "王"
六、对ZGDA.DBF表文件查找,并显示符合下列条件的记录(方法不限),请写出命令
1.姓“齐”且职称为讲师的第一个记录。
locate for 姓名="齐" and 职称="讲师"
display
2.性别为男且职称为助教的所有记录。
list all for 姓别="男" and 职称="助教"
3.职称为副教授且工资级别为4的所有记录。
list all for 职称="副教授" and 工资级别="4"
4.查询68年7月1以后,72年8月1日以前出生的记录。
list all for 出生年月>ctod("07/01/68") and 出生年月<ctod("08/01/72")
5.查询姓名中含“春”字的记录。
list all for "春"$姓名
6.查询出生年月为“09/10/68”的记录。
List all for 出生年月=ctod("09/10/68")
七、简答题
1.永久关系和临时关系有什么区别,存在于哪些表中。
Visual FoxPro 6.0中把表间关系分为永久关系和临时关系两种。永久关系是数据库表之间的一种关系,这种关系不仅在运行时存在,而且一直保留;临时关系是在任意类型表之间建立的一种关系(自由表间只能建立临时关系),临时关系建立以后使得一个表(子表)的记录指针随另一个表(父表)的记录指针移动。对于建立临时关系的两表,只要其中一表被关闭,临时关系即不再保留,当再需要使用这种关系时,必须重建。
2.如何建立两表间的永久关系和临时关系?
建立表间永久关系的方法:①为数据库表需要建立关系的字段建立索引(父表的索引一定是主索引或候选索引。)②建立表间关系,直接将父表的主索引或候选索引拖到子表索引标签处即建立了表间的永久关系(若子表的索引也是主索引或候选索引,则建立的是一对一关系;若子表索引为普通索引或唯一索引,则建立的是一对多关系)
建立临时关系的方法:①在工作区中打开表并赋予一个自定义别名:②打开子表索引④set relation to <关联表达式> into <别名> [additive] 此外,表间临时关系也可在“数据工作期”窗口中建立。