一、思考题1.什么是数据库表?什么是自由表?2.什么是表结构?表的哪几种字段的宽度是固定不变的?3.打开表文件之后,为什么在Visual FoxPro主窗口没有任何显示信息?4.如何编辑备注型字段的值?5.LIST命令和DISPLAY命令有什么区别?6.如果缺省范围子句,哪几条命令只对当前记录操作?7.ZAP命令和PACK命令有什么区别?8.什么是记录指针,它的作用是什么?9.什么是排序和索引?为什么索引的查询效率高?10.Visual FoxPro有几种类型的索引?是否所有的索引都可以在自由表中使用?在表设计器中可以创建的索引文件是哪一种?11.什么是主控索引文件和主控索引标识?它们的作用是什么?12.LOCATE、FIND、SEEK命令在使用上有什么区别?怎么判断查询是否成功?二、选择题1.某表文件有5个字段,其中3 个字符型宽度分别为6、12、和10,另外还有一个逻辑型字段和一个日期型字段,该数据库文件中每条记录的总字节数是。
A)37 B)38 C)39 D)402.在表文件文件尾部增加一条空记录,应该使用命令。
A)APPEND B)APPEND BLANK C)INSERT D)INSERT BLANK3.设表文件及其索引文件已打开,为了确保指针定位在物理记录号为1的记录上,应该使用命令。
A)GO TOP B)GO BOF() C)SKIP 1 D)GO 14.设职工表文件已经打开,其中有工资字段,要把指针定位在第一个工资大于620元的记录上,应使用命令。
A)FIND FOR 工资>620 B)SEEK 工资>620C)LOCATE FOR 工资>620 D)FIND 工资>6205.删除学生表中姓王的学生,应使用命令。
A)DELETE FOR “王”$姓名 B)DELETE FOR SUBSTR (姓名,1,2)=“王”C)DELETE FOR 姓名=王* D)DELETE FOR RIGHT (姓名,1)=“王”6.USE职工LOCATE FOR工资=900为了将指针定位在下一个工资是900的记录上,应该接着使用命令。
A)SKIP B)CONTINUE C)SEEK 900 D)FIND 9007.设当前表有10条记录,当EOF()为真时,命令?RECNO()的显示结果是。
A)10 B)11 C)0 D)空8.设当前表中姓名字段为字符型,要把内存变量NAME 字符串的内容输入到当前记录的姓名字段,应当使用命令。
A)姓名=NAME B)REPLACE 姓名 WITH NAMEC)REPLACE 姓名 WITH &NAME D)REPLACE ALL 姓名 WITH NAME9.在Visual FoxPro中,打开索引文件的命令中,错误的是。
A) USE<库文件名> INDEX TO <索引文件名>B) USE<库文件名> INDEX <索引文件名>C) INDEX ON 职工号 TO <索引文件名>D) SET INDEX TO <索引文件名>10.顺序执行下面命令之后,屏幕所显示的记录号顺序是。
USE XYZGO 6LIST NEXT 4A)1~4 B)4~7 C)6~9 D)7~1011.在Visual FoxPro中,可以使用FOUND()函数来检测查询是否成功的命令包括。
A) LIST、FIND、SEEK B)FIND、SEEK、LOCATEC) FIND、DISPLAY、SEEK D) LIST、SEEK、LOCATE三、上机题1.建立表与复制表操作:(1)建立一个职工表(zg.dbf),字段有:职工号(C,6),姓名(C,8),性别(L),出生日期(D),职称(C,10),基本工资(N,8,2),奖金(N,8,2),实发工资(N,8,2),其内容如下:(2)修改职工表表结构,在实发工资前增加一个新的字段,扣款(N,8,2)。
(3)将zg.dbf的表结构复制到新表zg1.dbf中。
(4)将zg.dbf 中的所有男教师的记录都复制到zg2.dbf中。
2.写出下列显示表记录的命令。
(1)显示zg.dbf中所有的讲师(2)显示所有女教师的姓名(3)显示70年后出生的教师(4)显示第三条记录的内容(5)显示前三条男教师的姓名,出生日期,职称(6)从第3条记录开始显示到末尾记录(7)显示所有男教授的姓名、年龄、基本工资(8)显示所有男性教授或副教授(9)显示所有姓林的教师(10)显示姓名中有“林”字的记录。
3.修改命令。
(1)计算实发工资字段的值,实发工资=基本工资+津贴-扣款。
(2)在实发工资为0的情况下,分别执行下列三条命令,比较它们的执行结果。
Repl 实发工资 with 基本工资+津贴-扣款Repl 实发工资 with 基本工资+津贴-扣款for 职称="讲师"Repl all 实发工资 with 基本工资+津贴-扣款4.完成下列删除与恢复的命令。
(1)删除所有男教师的记录(2)在删除所有男教师的记录的前提下,除姓“林”的外,恢复所有男教师的记录(3)在删除所有男教师的记录的前提下,除姓“陈”的助讲外,恢复所有男教师的记录5.对zg.dbf完成下排序、索引命令。
(1)按基本工资降序建立排序文件szg1.dbf(2)按基本工资建立单项索引,文件名为izg1.idx(3)按基本工资建立结构复合索引文件,按降序索引(4)按基本工资建立独立复合索引文件,索引标识为jbgz,按降序索引,文件名为zgd1.cdx (5)按基本工资升序,基本工资相同再按出生年月建立索引文件,文件名为zgd2.cdx (6)分别按姓名、职称、出生日期建立结构复合索引文件,索引标识分别为XM、ZC、BIRTHDAY。
(7)打开前面所建的所有索引文件,设置结构复合索引文件为主控索引文件,设置XM为主控索引。
6.查找与统计。
(1)查找林一凡(2)查找姓王的人(3)查找工资是820.00的记录(4)查找职工号为3002姓名为丁强的记录(5)查找66年8月4日出生,职称为副教授的记录(6)统计男教师与女教师的人数(7)统计女教师的实发工资、津贴总和(8)求男教师的平均基本工资(9)计算平均基本工资、平均津贴、最高基本工资和最少基本工资(10)按职称进行基本工资的汇总,汇总结果写入表zchz.dbf参考答案二、选择题1、B2、B3、D4、C5、B6、B7、B8、B9、A 10、C 11、B三、上机题1.建立表与复制表操作:(1)用表设计器建立表zg.dbf,步骤详见4.1.2建立表结构。
(2)修改zg.dbf表结构,步骤详见4.2.1 表结构的修改。
(3)将zg.dbf的表结构复制到新表zg1.dbf中。
USE ZGCOPY STRU TO ZG1(4)将zg.dbf 中的所有男教师的记录都复制到zg2.dbf中。
USE ZGCOPY TO ZG2 FOR 性别2.写出下列显示表记录的命令。
(1)显示zg.dbf中所有的讲师USE ZGLIST FOR 职称=“讲师”(2)显示所有女教师的姓名LIST 姓名 FOR 性别=.F.(或 LIST 姓名 FOR !性别 )(3)显示70年后出生的教师LIST FOR 出生日期>{^1970/01/01} 或LIST FOR YEAR(出生日期)>1970(4)显示第三条记录的内容LIST RECO 3(5)显示前三条男教师的姓名,出生日期,职称GO TOPLIST NEXT 3 FOR 性别 FIELDS 姓名,出生日期,职称(6)从第3条记录开始显示到末尾记录GO 3LIST REST(7)显示所有男教授的姓名、年龄、基本工资LIST 姓名,年龄,基本工资 FOR 性别 AND 职称="教授"(8)显示所有男性教授或副教授LIST FOR 性别 AND (职称="教授" OR 职称="副教授")(9)显示所有姓林的教师命令一:LIST FOR LEFT(姓名,2)="林"命令二:LIST FOR SUBSTR(姓名,1,2)="林"命令三:LIST FOR 姓名="林"(10)显示姓名中有“林”字的记录。
LIST FOR "林"$姓名3.修改命令(1)计算实发工资字段的值,实发工资=基本工资+津贴-扣款。
REPL ALL 实发工资WITH 基本工资+津贴-扣款(2)在实发工资为0的情况下,分别执行下列三条命令,比较它们的执行结果。
REPL 实发工资 WITH 基本工资+津贴-扣款REPL 实发工资 WITH 基本工资+津贴-扣款FOR 职称="讲师"REPL ALL 实发工资 WITH 基本工资+津贴-扣款4.完成下列删除与恢复的命令(1)删除所有男教师的记录DELE FOR 性别(2)在删除所有男教师的记录的前提下,除姓“林”的外,恢复所有男教师的记录RECA FOR !(SUBSTR(姓名,1,2)="林")(3)在删除所有男教师的记录的前提下,除姓“陈”的助讲外,恢复所有男教师的记录RECA FOR !(SUBSTR(姓名,1,2)="陈" AND 职称="助教")5.对zg.dbf完成下排序、索引命令(1)按基本工资降序建立排序文件szg1.dbfSORT ON 基本工资/D TO SZG1(2)按基本工资降序建立单项索引,文件名为izg1.idxINDEX ON -基本工资 TO IZG1(3)按基本工资建立结构复合索引文件,按降序索引INDEX ON 基本工资 TAG GZ DESC(4)按基本工资建立独立复合索引文件的降序,索引标识为jbgz,文件名为zgd1.cdxINDEX ON 基本工资 DESC TAG JBGZ OF ZGD1(5)按基本工资升序,基本工资相同再按出生年月建立索引文件,文件名为zgd2.cdxUSE ZGINDEX ON STR(基本工资,6,2)+DTOC(出生日期) TAG GZCS OF ZGD2(6)分别按姓名、职称、出生日期建立结构复合索引文件,索引标识分别为XM、ZC、BIRTHDAY。
USE ZG1INDEX ON 姓名 TAG XMINDEX ON 职称 TAG ZCINDEX ON 出生日期 TAG BIRTHDAY(7)打开前面所建的所有索引文件,设置结构复合索引文件为主控索引文件,设置XM为主控索引。