教学题目VisualFoxPro数据库及其操作(二)教学目标1、掌握自由表与数据库表之间的转换2、掌握添加记录的命令格式及其应用3、掌握删除记录的命令格式及其应用4、掌握修改记录的命令格式及其应用5、掌握定位的命令格式及其应用6、掌握测试函数(对表进行操作)教学内容1、将自由表添加到数据库中成为数据库表的方法及其应用2、将数据库表移去成为自由表的方法及其应用3、添加记录的命令格式及其应用4、删除记录的命令格式及其应用5、修改记录的命令格式及其应用6、定位的命令格式及其应用7、测试函数教学重点1、表之间的转换2、用命令方式删除、修改、定位记录教学难点1、用命令方式删除、修改、定位记录教学过程自由表与数据库表之间的转换一.自由表与数据库表的转换自由表与数据库表的区别:1.自由表不可使用长字段名或长表名,而数据库表可以自由表―10个字符数据库表-128个字符2.自由表不可建立主索引,而数据库表可以3.自由表不可设置字段有效性,而数据库表可以1.自由表数据库表菜单方式:要将已建好的自由表添加至某数据库中,可以先打开“数据库设计器”,点击右键,选择“添加表”一项,如图所示。再从出现的窗口中找到相应的表名即可。这时该表即成为指定数据库的数据库表,出现在数据库设计器中。如下图所示。命令方式:ADDTABLE表名Eg:ADDTABLE学生表1.数据库表自由表菜单方式:打开数据库设计器,如图所示,选择要成为自由表的表,点击右键,选择“删除”,出现如图所示对话框,移去:将表从数据库中移去,成为自由表。删除:将表从盘上永久删除,不再可恢复。取消:取消当前操作。命令方式:REMOVETABLE表名[DELETE][RECYCLE][DELETE]:将表从磁盘中删除[RECYCLE]:将删除的表放入回收站中EG:REMOVETABLE学生表(将学生表转换为自由表)REMOVETABLE学生表DELETE(将学生表从磁盘中删除)REMOVETABLE学生表DELETERECYCLE(将学生表放入回收站中)表的基本操作一.使用浏览器操作表格式:Use操作的表Browse在浏览窗口中可以添加、删除、修改纪录等各项操作。添加记录:Ctrl+Y删除记录:1.逻辑删除给记录添加逻辑删除标记方法:表(菜单栏)/删除记录(快捷键为:ctrl+t)2.物理删除将带有逻辑删除标记的记录从磁盘中删除方法:表(菜单栏)/彻底删除二.使用命令操作表1.向表中追加新记录:格式1:append[blank]说明:(1).选blank选项,执行该命令后,直接在表末尾添加一条空白记录;(2).不选blank选项,则弹出编辑窗口,以交互窗口方式输入记录。格式2:APPENDFROM表文件名说明:将FROM后表中的记录添加在当前数据表的尾部。1.插入记录:格式1:INSERTBEFOREBLANK功能:向当前表当前记录之前插入一个空白记录格式2:INSERTBEFORE功能:向当前表当前记录之前可插入若干条记录格式3:INSERTBLANK功能:向当前表当前记录之后插入一条记录格式4:INSERT功能:向当前表当前记录之后可插入若干条记录2.删除表中的记录:1)逻辑删除记录格式:Delete[范围][For条件]功能:逻辑删除当前表中满足条件的记录,被逻辑删除的记录前有删除标记,并没有从数据库中清除,可用Recall命令恢复。说明:1.[范围]:all:当前表的所有记录(范围缺省时的默认值)nextn:从当前记录向后的n条记录。如:next3是指从当前记录向后的3条记录。rest:从当前记录开始到表结束所有的记录。2.如不加[for条件]:表示逻辑删除当前记录Eg:use职工Deletefor职工号=”E1”deleteall&&逻辑删除所有记录注:delete逻辑删除当前记录1)物理删除记录格式:Pack功能:从磁盘中彻底删除当前表中带有逻辑删除标记的记录2)ZAP功能:清空当前表中所有记录,只保留表的结构。2.恢复记录:格式:recall[范围][For条件]功能:恢复当前表中被逻辑删除的记录Eg:use职工recallalluse注:不加[for条件]:recall只恢复当前逻辑删除的记录3.修改表中记录:格式:replace字段名with内容……[For条件]功能:修改当前表中满足条件的字段的值注:如不加[For条件]只修改当前表中当前字段的值Eg:将“职工”表中在“WH1”仓库工作的职工的工资提高5%use职工replace工资with工资*1.05for仓库号=“WH1”use注:replaceall字段名with表达式:修改字段的所有值Eg:将”职工”表中每个人的工资提高5%Replaceall工资with工资*1.054.显示记录:格式1:list[字段名表][范围][For条件]格式2:display[字段名表][范围][For条件]功能:在Vfp的主窗口屏幕上显示指定记录。说明:(1).display与list大部分情况下相同,区别:在不加任何选项的情况下,list为显示所有记录,而display为显示当前记录。Eg:use职工&&打开“职工”表list仓库号,职工号for工资1230&&列出工资大于1230元的职工所在的仓库号,职工号5.查询定位记录命令1)、绝对定位GO[to][record][物理记录号|内存变量表达式]|[top]|[bottom]【功能】将记录指针移动到指定的位置Gotop:将记录指针指向表中的第一条记录上Gobottom:将记录指针指向表中的最后一条记录上2)、相对定位skip[±记录数]【功能】从当前记录开始向前或向后移动记录指针。注:记录数省略时,相当于skip13)、用LOCATE格式:LOCATE[范围][FOR条件]功能:按顺序搜索表,从而找到满足指定逻辑表达式的第一个记录。参数描述:[范围]:指定要定位的记录范围。只有在范围内的记录才被定位。LOCATE命令的默认范围是ALL。[FOR条件]:LOCATE命令按顺序搜索当前表以找到满足逻辑表达式的第一个记录。CONTINUE:将记录指针指向下一条满足条件的记录上,如没有满足条件的记录,记录指针指向文件尾部(EOF)测试函数1.测试文件尾函数:格式:eof()说明:(1).该函数用于测试当前表的记录指针是否指向文件尾,是则返回真值;否则返回假值;Eg:测试文件记录指针是否指向文件尾use仓库gobottom?eof().F.skip?eof().T.2.测试文件头函数:格式:bof()说明:(1).用于测试指定工作区中的表的记录指针是否指向文件头,是则返回真值;否则返回假值;Eg:测试记录指针是否指向文件头use仓库gotop?bof().f.skip-1?bof().t.3.测试当前记录号函数:格式:recno()功能:得到当前的记录号Eg:use仓库?recno()1skip?recno()24.测试表文件记录数函数:格式:reccount()功能:得到表的记录数Eg:测试职工档案表的记录数use仓库?reccount()55.测试当前是否被逻辑删除格式:deleted()功能:返回值为.T.或.F.注:括号内可指定被测工作区号,其范围为1~32767,例deleted(2)它的功能是测试2号工作区中的表是否被逻辑删除.笔试题:Eg1:使数据库表变为自由表的命令是___A)DROPTABLEB)REMOVETABLEC)FREETABLED)RELEASETABLE【答案】B【解析】本题考查的是数据库表到自由表的转换。在VISUALFOXPRO中使用REMOVETABLE表名命令来使当前打开的数据库中指定表名的数据库表从数据库中移除,变为自由表。同理,使用ADDTABLE表名命令可使一个指定的自由表添加到当前打开的数据库中。Eg2:当前打开的图书表中有字符型字段“图书号”,要求将图书号以字母A开头的图书记录全部打上删除标记,通常可以使用命令_____A)DELETEFOR图书号=”A”B)DELETEWHILE图书号=”A”C)DELETEFOR图书号=”A*”D)DELETEFOR图书号LIKE”A%”【答案】C【解析】本题考查的是数据表内容删除命令DELETE的使用了。在VISUALFOXPRO中删除表中数据有两种方式:逻辑删除,物理删除。逻辑删除是指给暂时不使用的记录加上删除标志,使用DELETE命令。物理删除是把无效的记录的彻底从磁盘删除,使用PACK或者ZAP命令。本题中要求将图书号以字母A开头的图书记录全部打上删除标记,因此应使用DELETE命令。该命令的语法格式:DELETE范围FOR条件。其中范围可以表示对表中所有满足条件的记录都要加删除标志。省略范围后的DELETE语法是:DELETEFOR条件而不是DELETEWHILE条件。WHILE条件也是对表文件指定范围内满足条件的记录进行操作,当第一次遇到不满足条件记录时停止向后运行。由上可知,选项B错误。选项C的条件中“A*”,这里的*只是普通的字符,而不起通配符的作用,因此,A错误。选项D中,LIKE运算符不可用于传统VFP命令中,因此,D选项错误。A选项中图书号=“A”,默认情况下,用单等号比较两个字符串,只要第二个字符串是第一个字符串的前部分字符,返回值即为真,因此,A选项符合题义。Eg3:在VISUALFOXPRO中,使用LOCATEFORexpr命令按条件查找记录,当查找满足条件的第一条记录后,如果还需要查找下一条满足条件的记录,应使用___A)再次使用LOCATEFORexpr命令B)SKIP命令C)CONTINUE命令D)GO命令【答案】C【解析】本题考查的是数据表记录的查找方法。在VISUALFOXPRO中与表记录的查找和浏览有关的命令主要有:LOCATEFOR、CONTINUE、SKIP和GO。GO命令是将记录指针移动到指定记录上,如:GO5是将记录指针移动到第5条记录上,GOTOP将记录指针定位在表的第一个记录上。SKIP命令使记录指针在表中向前移动或向后移动,例如SKIP2使记录指针在表中向后移动2条记录,SKIP-2使记录指针在表中向前移动2条记录。LOCATEFORexpr命令按顺序搜索表从而找到满足指定表达式expr的第一个记录。如:LOCATEFOR图书号=“A”是按顺序搜索表从而找到满足图书号字段的值是以字母A开头的第一条记录。Locate发现一个满足条件的记录之后,可执行CONTINUE,从而在表的剩余部分寻找其他满足条件的记录。当执行CONTINUE时,搜索操作从满足条件的记录的下一条记录开始继续执行。可重复执行CONTINUE,直到到达边界或表尾。Eg4:在VISUALFOXPRO中,下列关于表的叙述正确的是___A)在数据库表和自由表中,都能给字段定义有效性规则和默认值B)在自由表中,能给表中的字段定义有效性规则和默认值C)在数据库表中,能给表中的字段定义有效性规则和默认值D)在数据库表和自由表中,都不能给字段定义有效性规则和默认值【答案】C【解析】本题是对数据表和自由表不同之处的考查。数据库表和自由表最明显的差别是在表设计器中,数据库表可以为表中的字段定义显示格式、设定显示掩码、设定显示标题,还可以设定字段的有效性规则、默认值以及添加字段注释。而这些对于自由表来说是不可以设定的。上机题Eg1将自由表职工添加到订货管理数据库中【解析】将“订货管理”数据库打开,即可将自由表“职工”添加到当前数据库中。1.打开数据库:opendatabase订货管理或modifydatabase订货管理或文件\打开\文件类型选“数据库”\选择“订货管理”\单击“确定”按钮即可。2.添加表:addtable职工或右击“订货管理”数据库\单击“添加表”\在“打开”对话框中选择“职工”\单击“确定”即可。