一、思考题1.什么是数据库表?什么是自由表?2.什么是表结构?表的哪几种字段的宽度是固定不变的?3.打开表文件之后,为什么在VisualFoxPro主窗口没有任何显示信息?4.如何编辑备注型字段的值?5.LIST命令和DISPLAY命令有什么区别?6.如果缺省范围子句,哪几条命令只对当前记录操作?7.ZAP命令和PACK命令有什么区别?8.什么是记录指针,它的作用是什么?9.什么是排序和索引?为什么索引的查询效率高?10.VisualFoxPro有几种类型的索引?是否所有的索引都可以在自由表中使用?在表设计器中可以创建的索引文件是哪一种?11.什么是主控索引文件和主控索引标识?它们的作用是什么?12.LOCATE、FIND、SEEK命令在使用上有什么区别?怎么判断查询是否成功?二、选择题1.某表文件有5个字段,其中3个字符型宽度分别为6、12、和10,另外还有一个逻辑型字段和一个日期型字段,该数据库文件中每条记录的总字节数是。
A)37B)38C)39D)402.在表文件文件尾部增加一条空记录,应该使用命令。
A)APPENDB)APPENDBLANKC)INSERT D)INSERTBLANK3.设表文件及其索引文件已打开,为了确保指针定位在物理记录号为1的记录上,应该使用命令。
A)GOTOP B)GOBOF()C)SKIP1D)GO14.设职工表文件已经打开,其中有工资字段,要把指针定位在第一个工资大于620元的记录上,应使用命令.A)FINDFOR工资>620B)SEEK工资>620C)LOCATEFOR工资>620D)FIND工资>6205.删除学生表中姓王的学生,应使用命令。
A)DELETEFOR“王”$姓名B)DELETEFORSUBSTR(姓名,1,2)=“王”C)DELETEFOR姓名=王*D)DELETEFORRIGHT(姓名,1)=“王”6.USE职工LOCATEFOR工资=900为了将指针定位在下一个工资是900的记录上,应该接着使用命令.A)SKIP B)CONTINUE C)SEEK900D)FIND9007.设当前表有10条记录,当EOF()为真时,命令?RECNO()的显示结果是。
A)10B)11C)0D)空8.设当前表中姓名字段为字符型,要把内存变量NAME字符串的内容输入到当前记录的姓名字段,应当使用命令。
A)姓名=NAMEB)REPLACE姓名WITHNAMEC)REPLACE姓名WITH&NAMED)REPLACEALL姓名WITHNAME9.在VisualFoxPro中,打开索引文件的命令中,错误的是。
A)USE〈库文件名>INDEXTO<索引文件名>B)USE<库文件名〉INDEX〈索引文件名〉C)INDEXON职工号TO<索引文件名>D)SETINDEXTO<索引文件名〉10.顺序执行下面命令之后,屏幕所显示的记录号顺序是。
USEXYZGO6LISTNEXT4A)1~4B)4~7C)6~9D)7~1011.在VisualFoxPro中,可以使用FOUND()函数来检测查询是否成功的命令包括。
A)LIST、FIND、SEEKB)FIND、SEEK、LOCATEC)FIND、DISPLAY、SEEKD)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职称=”讲师”Replall实发工资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、A10、C11、B三、上机题1、建立表与复制表操作:(1)用表设计器建立表zg.dbf,步骤详见4。
1。
2建立表结构。
(2)修改zg.dbf表结构,步骤详见4。
2。
1表结构的修改。
(3)将zg.dbf的表结构复制到新表zg1。
dbf中。
USEZGCOPYSTRUTOZG1(4)将zg。
dbf中的所有男教师的记录都复制到zg2。
dbf中。
USE ZGCOPY TO ZG2FOR性别2、写出下列显示表记录的命令.(1)显示zg。
dbf中所有的讲师USE ZGLIST FOR职称=“讲师”(2)显示所有女教师的姓名LIST姓名FOR性别=.F。
(或LIST姓名FOR!性别)(3)显示70年后出生的教师LISTFOR出生日期>{^1970/01/01}或LISTFORYEAR(出生日期)>1970 (4)显示第三条记录的内容LISTRECO3(5)显示前三条男教师的姓名,出生日期,职称GOTOPLISTNEXT3FOR性别FIELDS姓名,出生日期,职称(6)从第3条记录开始显示到末尾记录GO3LISTREST(7)显示所有男教授的姓名、年龄、基本工资LIST姓名,年龄,基本工资FOR性别AND职称="教授”(8)显示所有男性教授或副教授LISTFOR性别AND(职称="教授”OR职称=”副教授”)(9)显示所有姓林的教师命令一:LISTFORLEFT(姓名,2)=”林"命令二:LISTFORSUBSTR(姓名,1,2)="林"命令三:LISTFOR姓名="林"(10)显示姓名中有“林”字的记录.LISTFOR"林”$姓名3、修改命令(1)计算实发工资字段的值,实发工资=基本工资+津贴-扣款。
REPL ALL实发工资WITH基本工资+津贴-扣款(2)在实发工资为0的情况下,分别执行下列三条命令,比较它们的执行结果。
REPL实发工资WITH基本工资+津贴-扣款REPL实发工资WITH基本工资+津贴-扣款FOR职称=”讲师"REPLALL实发工资WITH基本工资+津贴-扣款4、完成下列删除与恢复的命令(1)删除所有男教师的记录DELEFOR性别(2)在删除所有男教师的记录的前提下,除姓“林"的外,恢复所有男教师的记录RECAFOR!(SUBSTR(姓名,1,2)="林”)(3)在删除所有男教师的记录的前提下,除姓“陈”的助讲外,恢复所有男教师的记录RECAFOR!(SUBSTR(姓名,1,2)=”陈”AND职称="助教")5、对zg。
dbf完成下排序、索引命令(1)按基本工资降序建立排序文件szg1。
dbfSORTON基本工资/DTOSZG1(2)按基本工资降序建立单项索引,文件名为izg1.idxINDEXON—基本工资TOIZG1(3)按基本工资建立结构复合索引文件,按降序索引INDEXON基本工资TAGGZDESC(4)按基本工资建立独立复合索引文件的降序,索引标识为jbgz,文件名为zgd1。
cdx INDEXON基本工资DESCTAGJBGZOFZGD1(5)按基本工资升序,基本工资相同再按出生年月建立索引文件,文件名为zgd2.cdx USEZGINDEXONSTR(基本工资,6,2)+DTOC(出生日期)TAGGZCSOFZGD2(6)分别按姓名、职称、出生日期建立结构复合索引文件,索引标识分别为XM、ZC、BIRTHDAY。
USEZG1INDEXON姓名TAGXMINDEXON职称TAGZCINDEXON出生日期TAGBIRTHDAY(7)打开前面所建的所有索引文件,设置结构复合索引文件为主控索引文件,设置XM为主控索引.SETINDEXTOIZG1,ZGD1,ZGD2ORDERTAGXM或SETINDEXTOIZG1,ZGD1,ZGD2SETORDERTOTAGXM6、查找与统计(1)查找林一凡USEZGSETINDEXTOXMFIND林一凡SEEK"林一凡”(2)查找姓王的人FIND王SEEK”王"(3)查找工资是820。
00的记录INDEXON基本工资TAGSALARYFIND820或SEEK820(4)查找职工号为3002叫丁强的记录INDEXON职工号+姓名TAGGHXMFIND3002丁强或SEEK"3002”+"丁强”(5)查找66年8月4日出生的副教授INDEXONDTOC(出生日期)+职称TOBZCSEEK"08/04/66”+”副教授”(6)统计男教师与女教师的人数COUNTFOR性别TOX1COUNTFOR!性别TOX2(7)统计女教师的实发工资、津贴总和SUM实发工资,津贴FOR!性别TOY1,Y2(8)求男教师的平均基本工资A VERAGE基本工资FOR性别(9)计算平均基本工资、平均津贴、最高基本工资和最少基本工资CALCAVG(基本工资),A VG(奖金),MAX(基本工资),MIN(基本工资)(10)按职称进行基本工资的汇总,汇总结果写入表zchz.dbfSETORDERTOTAGZCHZTOTALON职称TOZCHZ FIELDS基本工资USEZCHZLIST注意:在zchz.dbf中只有四条记录。