第4-1章 数据表的设计.ppt
数据表设计第第4章章 12/20/20221目录目录目录目录主要主要内容内容1.1.数据表的基本概念数据表的基本概念2.2.创建新表创建新表3.3.打开与关闭表打开与关闭表4.4.显示与修改表结构显示与修改表结构5.5.复制表结构复制表结构 6.6.复制数据表复制数据表7.7.浏览记录浏览记录8.8.追加记录追加记录9.9.指针定位指针定位10.10.修改数据表记录修改数据表记录11.11.删除记录删除记录12/20/20222目录目录目录目录4.1 数据表的基本概念数据表的基本概念 VFP6.0VFP6.0中中的的数数据据库库是是由由许许多多相相关关联联的的数数据据表和其他对象组成,数据库的扩展名表和其他对象组成,数据库的扩展名.DBC.DBC。数据表可以有两种存在方式:数据表可以有两种存在方式:自由表自由表 单独的一个数据表,称之为自由表。单独的一个数据表,称之为自由表。数据库表数据库表 存在于数据库中的表,称之为数据库表。存在于数据库中的表,称之为数据库表。问题问题1 1:自由表与数据库表的区别?:自由表与数据库表的区别?12/20/20223目录目录目录目录4.1 数据表的基本概念数据表的基本概念 自由表与数据库表的区别:自由表与数据库表的区别:自自由由表表的的扩扩展展名名为为.DBF.DBF。它它独独立立存存在在,不不与与任任何数据库相关联。何数据库相关联。数数据据库库表表的的扩扩展展名名为为.DBF.DBF,它它与与某某一一个个数数据据库库相相关关联联,数数据据库库表表有有一一些些自自由由表表所所没没有有的的特特性性:字段验证、记录验证、触发器和永久关系等。字段验证、记录验证、触发器和永久关系等。问题问题2 2:自由表与数据库表可否互相转换?:自由表与数据库表可否互相转换?12/20/20224目录目录目录目录4.1 数据表的基本概念数据表的基本概念 自由表与数据库表的命名规则:自由表与数据库表的命名规则:命名规则和命名规则和WindowsWindows系统中的规则一样,主系统中的规则一样,主文件名可以使用汉字、字母、数字、下划线及文件名可以使用汉字、字母、数字、下划线及它们的组合,支持长文件名。它们的组合,支持长文件名。不能用空格、和?等。不能用空格、和?等。扩展名为扩展名为.DBF.DBF。工作区别名:工作区别名:系统默认系统默认A A、B B、CJCJ。W11W11、W12W12、W32767W32767为工作区别名。为工作区别名。提示:提示:不要把工作区别名作为数据库名或数据表名。不要把工作区别名作为数据库名或数据表名。12/20/20225目录目录目录目录4.2 建立数据表结构建立数据表结构设计表的结构设计表的结构 所谓表的结构,就是对表的每一列定义它所谓表的结构,就是对表的每一列定义它的字段名、字段类型、字段长度、和小数点的的字段名、字段类型、字段长度、和小数点的位数以及是否允许位数以及是否允许NULLNULL值等信息。值等信息。字段名字段名字段名又称字段变量。它是由汉字、字母、字段名又称字段变量。它是由汉字、字母、下划线开头,后跟若干个汉字、字母、数字、下划线开头,后跟若干个汉字、字母、数字、下划线等组成的字符串。但不能用空格、和下划线等组成的字符串。但不能用空格、和?。?。自由表的字段名最长为个字符,数据自由表的字段名最长为个字符,数据表中的字段最多是字符。表中的字段最多是字符。12/20/20226目录目录目录目录字段类型字段类型每个字段中的数据必须是同一数据类型。每个字段中的数据必须是同一数据类型。字段宽度字段宽度 数据宽度也称数据长度,指变量字段中的可能取值的最大数据宽度也称数据长度,指变量字段中的可能取值的最大宽度。而不是这段变量名本身的宽度。宽度。而不是这段变量名本身的宽度。小数位数小数位数 只对数值型和浮点型数据有效,小数位的取值范围为只对数值型和浮点型数据有效,小数位的取值范围为0-150-15。NULLNULL值值 指定记录中字段是否允许输入指定记录中字段是否允许输入NULLNULL(空)值。需要注意的是,空)值。需要注意的是,NULLNULL值与空格、空字符串或值与空格、空字符串或0 0是不同的。是不同的。NULLNULL不是一种数据类型,不是一种数据类型,当一个字段的值被置为当一个字段的值被置为NULLNULL时,其数据类型并不发生改变。时,其数据类型并不发生改变。问题问题3 3:哪些数据类型的宽度是固定的?哪些数据类型的宽度是固定的?12/20/20227目录目录目录目录4.2 建立数据表结构建立数据表结构字段名字段名字段类型字段类型字段宽度字段宽度小数位数小数位数编号编号字符型(字符型(C C)6 6姓名姓名字符型(字符型(C C)8 8性别性别字符型(字符型(C C)2 2婚否婚否逻辑型(逻辑型(L L)1 1工作时间工作时间日期型(日期型(D D)8 8部门代码部门代码字符型(字符型(C C)2 2基本工资基本工资数值型(数值型(N N)7 72 2简历简历备注型(备注型(M M)4 412/20/20228目录目录目录目录4.2 建立数据表结构建立数据表结构建立建立表结构表结构建立表结构一般有四种方法:建立表结构一般有四种方法:利用表设计器利用表设计器利用表向导利用表向导使用使用SQLSQL语言的语言的CREATE TABLECREATE TABLE命令命令利用命令方式创建利用命令方式创建 Create Create 提示:若创建的数据表为数据库表,提示:若创建的数据表为数据库表,则必须则必须事先打开该数据库。事先打开该数据库。12/20/20229目录目录目录目录4.2 建立数据表结构建立数据表结构建立建立表结构表结构建立表结构一般有四种方法:建立表结构一般有四种方法:利用表设计器利用表设计器【文件文件】“新建新建”对话框中选择对话框中选择“表表”新建新建文件文件进入进入“表设计器表设计器”利用表向导利用表向导【文件文件】“新建新建”对话框中选择对话框中选择“表表”向导向导进入进入“表向导表向导”操作演示操作演示问题问题4 4:通用型和备注型字段的内容如何输入?:通用型和备注型字段的内容如何输入?提示:提示:如果需要在一个字段上输入空值(如果需要在一个字段上输入空值(NULLNULL),),则必须使用组合键:则必须使用组合键:CTRL+0CTRL+0,或者输入或者输入“.NULL.”.NULL.”12/20/202210目录目录目录目录4.2 建立数据表结构建立数据表结构 所有输入的数据记录输入完毕后,要单击窗口所有输入的数据记录输入完毕后,要单击窗口的关闭按钮或按的关闭按钮或按Ctrl+WCtrl+W键退出输入数据状态。按键退出输入数据状态。按EscEsc键或键或Ctrl+QCtrl+Q键也可关闭记录输入窗口,但最后输入键也可关闭记录输入窗口,但最后输入的记录的数据将不被保存。备注型字段和通用型字的记录的数据将不被保存。备注型字段和通用型字段的内容都被保存在一个与表同名,扩展名为段的内容都被保存在一个与表同名,扩展名为.fptfpt的文件中。的文件中。提示:提示:输入数据记录时,系统根据输入到表中顺序,表输入数据记录时,系统根据输入到表中顺序,表中的每个记录都自动赋予一个顺序号,称为记录号。中的每个记录都自动赋予一个顺序号,称为记录号。12/20/202211目录目录目录目录4.2 建立数据表结构建立数据表结构使用使用SQLSQL语言的语言的CREATE TABLECREATE TABLE命令命令(第七章(第七章SQLSQL语句)语句)利用命令方式创建利用命令方式创建 Create Create 【格式格式】CREATE CREATE 【功能功能】打开表设计器,建立一个新表结构打开表设计器,建立一个新表结构 操作演示操作演示create xsda12/20/202212目录目录目录目录4.3 打开与关闭表打开与关闭表打开表打开表 打打开开一一个个表表最最常常用用的的方方法法有有两两种种:一一是是在在系系统统窗窗口口中中利利用用系系统统菜菜单单按按菜菜单单操操作作的的方方式式进进行行,二二是是在在命命令令窗窗口口中中或程序中利用或程序中利用USEUSE命令打开。命令打开。菜单方式菜单方式:【文件文件】“打开打开”在对话框中欲打在对话框中欲打开的选择文件名开的选择文件名12/20/202213目录目录目录目录4.3 打开与关闭表打开与关闭表命令命令方式方式:【格格式式】USE USE|?ININ|ALIASALIAS 【功能功能】打开表文件打开表文件 指指定定需需要要打打开开的的表表,如如果果选选择择?号号,则则系系统统会会显显示一个示一个“打开打开”对话框,让用户选择一个表打开。对话框,让用户选择一个表打开。用用ALIASALIAS子子句句为为打打开开的的表表命命名名一一个个别别名名,若若无无此此选选项项,原原表表主主名就是它的别名。名就是它的别名。如如果果选选ININ子子句句,那那么么可可以以用用ININ子子句句指指定定工工作作区区号号,以以便便在在非非当前工作区中打开一个表。当前工作区中打开一个表。若当前工作区已经打开了一个表,则系统先关闭已打开的表,若当前工作区已经打开了一个表,则系统先关闭已打开的表,然后再打开指定的表。然后再打开指定的表。12/20/202214目录目录目录目录4.3 打开与关闭表打开与关闭表例如:例如:USE USE 学学生生情情况况表表.DBF.DBF&打打开开“学学生生情情况况表表.dbf”.dbf”表文件表文件USEUSE学学生生情情况况表表ALIAS ALIAS studentstudent&在在打打开开表表学学生生情况表情况表.dbf.dbf 的同时命名了一个别名的同时命名了一个别名studentstudent 12/20/202215目录目录目录目录4.3 打开与关闭表打开与关闭表关闭表关闭表若若命命令令中中输输入入不不带带任任何何参参数数的的“USE”USE”命命令令,则关闭当前工作区中已经打开的表。则关闭当前工作区中已经打开的表。若若在在当当前前工工作作区区中中新新建建或或打打开开另另外外一一个个表表,则系统自动关闭已在当前工作区中打开的表。则系统自动关闭已在当前工作区中打开的表。在在系系统统提提供供的的“数数据据工工作作期期”窗窗口口中中,先先单单击选择需要关闭的表,然后单击击选择需要关闭的表,然后单击“关闭关闭”按钮按钮 12/20/202216目录目录目录目录4.4 显示与修改表结构显示与修改表结构显示表结构显示表结构【格式格式】LIST|DISPLAY STRUCTURELIST|DISPLAY STRUCTURE to printerprompt|to files to printerprompt|to files【功能功能】显示表的结构。显示表的结构。1 1、命命令令执执行行之之前前首首先先应应将将表表打打开开,否否则则系系统统将将显显示示“打打开开”对话框,以选择要打开的表。对话框,以选择要打开的表。2 2、LIST LIST 和和DISPLAY DISPLAY 可可以以选选择择任任意意一一个个,所所不不同同的的是是:若若字字段段较较多多,一一页页显显示示不不下下,LISTLIST连连续续显显示示信信息息直直到到显显示示完完毕毕为为止止;DISPLAY DISPLAY 采采用用分分页页显显示示信信息息,即即显显示示一一屏屏信信息息后后暂暂停停,按任意键或单击鼠标继续显示后面的内容。按任意键或单击鼠标继续显示后面的内容。USE USE 学生情况表学生情况表LIST STRU LIST STRU 12/20/202217目录目录目录目录4.4 显示与修改表结构显示与修改表结构修改表结构修改表结构【格式格式】MODIFY STRUCTURE MODIFY STRUCTURE【功能功能】打开表设计器窗口,修改表结构打开表设计器窗口,修改表结构 。更改已有的字段更改已有的字段添加新字段添加新字段插入字段插入字段删除字段删除字段调整字段顺序调整字段顺序提示:提示:1 1、字段宽度的总计数目?字段宽度的总计数目?2 2、修改表结构应注意的问题?修改表结构应注意的问题?12/20/202218目录目录目录目录4.5 复制表结构复制表结构【格格式式】COPY COPY STRUCTURE STRUCTURE TO TO FIELDSFIELDS 【功能功能】复制当前表的结构,生成一个只有结构的复制当前表的结构,生成一个只有结构的自由表。自由表。USE USE 学生情况表学生情况表COPY STRU TO COPY STRU TO stustu FIELDS FIELDS 学号学号,姓名姓名,性别性别USE USE stustu DISP STRU&DISP STRU&查看新表的结构查看新表的结构 12/20/202219目录目录目录目录4.6 数据表的复制数据表的复制命令方式命令方式【格格式式】COPY COPY TO TO FORFORFIELDSFIELDS【功功能能】将将打打开开的的表表全全部部或或部部分分记记录录复复制制到到 指指定定的表中,产生一个新表。的表中,产生一个新表。【说说明明】首首先先需需要要打打开开要要复复制制的的表表,执执行行命命令令后后新新表表处处于于未打开的状态;若需要操作新表,则应先将其打开。未打开的状态;若需要操作新表,则应先将其打开。新新表表的的结结构构由由FIELDSFIELDS 指指定定,确确省省时时系系统统默默认认为全部字段。为全部字段。复复制制的的数数据据记记录录由由 短短语语和和FORFOR 短短语语指指定定,若若确省则系统默认全部记录确省则系统默认全部记录。12/20/202220目录目录目录目录4.6 数据表的复制数据表的复制【例例1】copy to shmf1 for 性别性别=女女 type deli结果:结果:s0201103,s0201103,刘雨刘雨,女女,01/02/1985,565,F,01/02/1985,565,F,s0201105,s0201105,吴红梅吴红梅,女女,05/12/1984,595,F,05/12/1984,595,F,s0201107,s0201107,金阳金阳,女女,11/07/1983,550,T,11/07/1983,550,T,s0201108,s0201108,张敏张敏,女女,09/30/1984,586,F,09/30/1984,586,F,12/20/202221目录目录目录目录4.6数据表的复制数据表的复制【例例2】copy to shmf2 for copy to shmf2 for 性别性别=女女 type deli type deli with blankwith blank结果:结果:s0201103 s0201103 刘雨刘雨 女女 01/02/1985 565 F 01/02/1985 565 F s0201105 s0201105 吴红梅吴红梅 女女 05/12/1984 595 F 05/12/1984 595 F s0201107 s0201107 金阳金阳 女女 11/07/1983 550 T 11/07/1983 550 T s0201108 s0201108 张敏张敏 女女 09/30/1984 586 F 09/30/1984 586 F 12/20/202222目录目录目录目录4.6 数据表的复制数据表的复制【例例3】copy to shmf3 for copy to shmf3 for 性别性别=女女 type deli with type deli with tabtab结果:结果:s0201103刘雨刘雨女女 01/02/1985565Fs0201105吴红梅吴红梅女女 05/12/1984595Fs0201107金阳金阳女女 11/07/1983550Ts0201108张敏张敏女女 09/30/1984586F12/20/202223目录目录目录目录4.6 数据表的复制数据表的复制【例例4】copy to shmf4 for copy to shmf4 for 性别性别=女女 type deli with type deli with“结果:结果:s0201103,s0201103,刘雨刘雨,女女,01/02/1985,565,F,01/02/1985,565,F,s0201105,s0201105,吴红梅吴红梅,女女,05/12/1984,595,F,05/12/1984,595,F,s0201107,s0201107,金阳金阳,女女,11/07/1983,550,T,11/07/1983,550,T,s0201108,s0201108,张敏张敏,女女,09/30/1984,586,F,09/30/1984,586,F,12/20/202224目录目录目录目录4.7 数据表记录的浏览数据表记录的浏览菜单方式菜单方式 浏览模式(行式):浏览模式(行式):【显示显示】浏览浏览 编辑模式(页式):编辑模式(页式):【显示显示】编辑编辑 显示部分记录和字段显示部分记录和字段 【表表】属性属性“工作区属性工作区属性”窗窗口口12/20/202225目录目录目录目录命令方式命令方式【格式格式】LIST|DISPLAYFIELDSLIST|DISPLAYFIELDSFORFOR WHILE WHILEOFFTO PRINTER2OFFTO PRINTER【说明说明】FIELDSFIELDS 指指定定要要显显示示的的字字段段名名,它它们们之之间间用用逗逗号号分分隔隔,FIELDSFIELDS可可选选可可不不选选。若若缺缺省省该该项项,显显示示表表中中的的所所有有字字段,但备注型、通用型字段不显示。段,但备注型、通用型字段不显示。和和FORFOR 可可选选项项短短语语限限定定显显示示的的记记录录的的范范围围和和应应满足的条件,相当于记录过滤器。满足的条件,相当于记录过滤器。选选OFFOFF时,不显示记录号而只显示记录内容。时,不显示记录号而只显示记录内容。LISTLIST和和DISPLAYDISPLAY的的区区别别有有两两点点:一一是是若若范范围围和和条条件件短短语语均均缺缺省省,LISTLIST显显示示所所有有记记录录,DISPLAYDISPLAY显显示示当当前前记记录录;二二是是若若记记录录很多,一页显示不下时,很多,一页显示不下时,LISTLIST连续显示,连续显示,DISPLAYDISPLAY分页显示。分页显示。12/20/202226目录目录目录目录4.7 数据表记录的浏览数据表记录的浏览【例例1】USE 学生情况表学生情况表 LIST【例例2】USE 学生情况表学生情况表 DISPLAY&显示当前记录显示当前记录 DISPLAY ALL&分屏显示所有记录分屏显示所有记录 DISPLAY FOR 性别性别=“男男”FIELDS 姓名姓名,性别性别,出生年月出生年月 LIST 姓名,性别姓名,性别 LIST OFF 性别性别=“女女”12/20/202227目录目录目录目录 BROWSEBROWSE命令命令【格格式式】BROWSE BROWSE FIELDSFIELDSFORFORFREEZEFREEZELOCKLOCK NOAPPEND NOAPPEND NOMODIFYNOMODIFY【说明说明】FIELDS FIELDS 选选项项用用来来指指定定窗窗口口中中显显示示的的字段,确省该选项系统默认为全部字段。字段,确省该选项系统默认为全部字段。FOR FOR 选选项项用用来来指指定定记记录录的的显显示示条条件件,确确省省该选项系统默认为全部记录,即该选项系统默认为全部记录,即ALLALL。FREEZEFREEZE 选项用于指定可以编辑的字段。选项用于指定可以编辑的字段。LOCKLOCK 选项指定锁定到的字段序号。选项指定锁定到的字段序号。12/20/202228目录目录目录目录4.7 数据表记录的浏览数据表记录的浏览【例例1】BROW&显示显示“学生情况表学生情况表.dbf”【例例2】BROW FIELDS 学号学号,姓名姓名,性别性别,出生年月出生年月 FOR 性别性别=”男男”12/20/202229目录目录目录目录4.8 数据表记录的追加数据表记录的追加菜单方式菜单方式 打开表打开表 显示显示 浏览浏览(或编辑或编辑)追加方式追加方式 打开表打开表 显示显示 浏览浏览(或编辑或编辑)表表 追加新记录追加新记录 命令方式命令方式【格式格式】APPEND BLANKAPPEND BLANK【功功能能】向向当当前前打打开开表表中中追追加加若若干干条条记记录录或或一一条条空空记记录。录。不不选选任任何何可可选选项项,则则打打开开记记录录输输入入窗窗口口(编编辑辑窗窗口口),可以追加若干条记录。,可以追加若干条记录。选选BLANKBLANK只只能能在在尾尾部部添添加加一一条条空空白白记记录录,不不打打开开记记录输入窗口,并将记录指针指向这条记录空记录。录输入窗口,并将记录指针指向这条记录空记录。12/20/202230目录目录目录目录4.8 数据表记录的追加数据表记录的追加【例例1】USE 学生情况学生情况.dbf&打开学生情况表打开学生情况表APPEND&打开表编辑窗口,追加记录打开表编辑窗口,追加记录APPEND BLANK12/20/202231目录目录目录目录4.8 数据表记录的批量追加数据表记录的批量追加菜单方式菜单方式 打开表打开表 在在“浏览浏览”窗口状态下窗口状态下 表表 追加记录追加记录 进入进入“追加来源追加来源”对话框对话框命令方式命令方式【格格式式】APPEND APPEND FROMFROMFIELDSFIELDSFORFOR【功能功能】将将 指定的表中的记录追加到当前打开的表中。指定的表中的记录追加到当前打开的表中。命命令令执执行行前前要要首首先先打打开开目目的的表表(要要追追加加记记录录的的表表),而而源源表表则不需要提前打开。则不需要提前打开。选?将弹出选?将弹出“打开打开”对话框,以选择包含追加记录的文件。对话框,以选择包含追加记录的文件。FIELDSFIELDS短短语语指指定定追追加加的的字字段段,FORFOR短短语语用用来来指指定定要要追追加加的的记记录应满足的条件,不选录应满足的条件,不选FORFOR短语则将所有记录添加到当前表中。短语则将所有记录添加到当前表中。12/20/202232目录目录目录目录4.8 数据表记录的批量追加数据表记录的批量追加【例例1】USE xuesheng APPEND FROM 学生情况表学生情况表 FOR 性别性别=”男男”listuse12/20/202233目录目录目录目录4.9 数据表记录的插入数据表记录的插入菜单方式菜单方式命令方式命令方式【格式格式】INSERT BEFORE BLANKINSERT BEFORE BLANK【功能功能】在当前表中插入新记录。在当前表中插入新记录。使使用用BEFOREBEFORE选选项项,则则在在当当前前记记录录之之前前插插入入一一条条新新记录,缺省该选项则在当前记录之后插入新记录。记录,缺省该选项则在当前记录之后插入新记录。若有若有BLANKBLANK选项则插入一条空白记录,并不立即选项则插入一条空白记录,并不立即进入新记录数据的输入状态,否则立即弹出新记录进入新记录数据的输入状态,否则立即弹出新记录的编辑窗口,输入记录数据。的编辑窗口,输入记录数据。12/20/202234目录目录目录目录4.9 数据表记录的插入数据表记录的插入【例例1】use 学生情况表学生情况表listgo 4insert before blank list问题问题3 3:insert insert 和和 appendappend的区别?的区别?12/20/202235目录目录目录目录4.10 数据表记录的指针定位数据表记录的指针定位当前记录:当前记录:系统设有一个记录指针,该指针指向的系统设有一个记录指针,该指针指向的记录称为当前记录。打开一个数据表时,记记录称为当前记录。打开一个数据表时,记录指针指向第一条记录。随着命令的执行,录指针指向第一条记录。随着命令的执行,指针不断移动。指针不断移动。记录定位记录定位:若要操作表中(修改某一个字段值),若要操作表中(修改某一个字段值),必须先使记录指针指向该记录,称为记录定必须先使记录指针指向该记录,称为记录定位。位。12/20/202236目录目录目录目录4.10 数据表记录的指针定位数据表记录的指针定位菜单方式菜单方式 打开表后,显示打开表后,显示“浏览浏览”窗口,然后执窗口,然后执行行“表表”菜单中的菜单中的“转到记录转到记录”命令后的级命令后的级联菜单选择执行相应的命令。联菜单选择执行相应的命令。命令方式命令方式指针移动有绝对移动和相对移动两种情况:指针移动有绝对移动和相对移动两种情况:指针的绝对移动指针的绝对移动 所所谓谓指指针针的的绝绝对对移移动动,就就是是不不考考虑虑目目前前指指针针的的位位置置,直直接接将将指指针针移移动动到到指指定定的的记记录录上。上。12/20/202237目录目录目录目录 指针的绝对移动指针的绝对移动【格式一格式一】GO|GOTO TOP|BOTTOM GO|GOTO TOP|BOTTOM【格式二格式二】GO|GOTOGO|GOTO【功功能能】将将指指针针定定位位到到指指定定的的记记录录或或第第一一条条、最最后后一一条记录上条记录上 命命令令中中GOGO、GOTOGOTO可可任任选选一一种种,二二者者的的作作用用是是等等价价的。的。选选项项TOPTOP可可将将记记录录指指针针定定位位在在表表的的第第一一条条记记录录上上,但此时函数但此时函数BOF()BOF()的值为的值为.F.F.。选选项项BOTTOMBOTTOM可可将将记记录录指指针针定定位位在在表表的的最最后后一一个个记记录上,但此时函数录上,但此时函数EOF()EOF()的值为的值为.F.F.。12/20/202238目录目录目录目录4.10 数据表记录的指针定位数据表记录的指针定位 当当指指针针移移到到第第一一条条记记录录之之前前(注注:不不是是第第一一条条记记录)时,则录)时,则BOF()BOF()的值为的值为T.T.,否则否则BOF()BOF()为为.F.F.。当当指指针针移移到到最最后后一一条条记记录录之之后后(注注:不不是是最最后后一一条条记记录录)时时,EOF()EOF()为为.T.T.,否否则则为为.F.F.。当当且且仅仅当当表表为空时,为空时,BOF()BOF()和和EOF()EOF()才同时为才同时为.T.T.。另外,系统还提供了一个用于测试当前记录记录另外,系统还提供了一个用于测试当前记录记录号的函数号的函数RECNO()RECNO(),该函数返回值为当前记录指针所该函数返回值为当前记录指针所指向记录的记录号。指向记录的记录号。问题问题4 4:go top go top?recnorecno()()?bofbof()()12/20/202239目录目录目录目录 指针的相对移动指针的相对移动 所所谓谓指指针针的的相相对对移移动动,就就是是相相对对于于当当前前记记录录指指针针的的位位置置,向前或向后移动向前或向后移动n n条记录。条记录。【格式格式】SKIP+|-SKIP+|-【功能功能】记录指针以当前记录为基准,向前或向后移动记录指针以当前记录为基准,向前或向后移动 条记录。条记录。【说说明明】若若 的的值值是是一一个个正正数数(此此时时“+”号号可可以以省省去去),表表示示指指针针从从当当前前位位置置向向后后(表表尾尾部部)移移动动 个记录。个记录。若若 的的值值是是一一个个负负数数,表表示示指指针针从从当当前前位位置置向前(表头部)移动向前(表头部)移动 个记录个记录 若只有若只有SKIPSKIP命令而没有指定命令而没有指定 ,则默认,则默认 的值为的值为+1+1。12/20/202240目录目录目录目录4.10 数据表记录的指针定位数据表记录的指针定位USE 学生情况表学生情况表&假设表中假设表中10条记录条记录?RECNO(),BOF()&结果为结果为1,.F.SKIP 1?RECNO(),BOF()&结果为结果为1,.T.GO 4?RECNO()GO BOTTOM?RECNO(),EOF()&结果为结果为10,.F.SKIP?RECNO(),BOF()&结果为结果为11,.T.12/20/202241目录目录目录目录条件定位条件定位【格式格式】LOCATELOCATEFORFOR|WHILE|WHILE2【功功能能】在在当当前前表表中中将将指指针针定定位位在在指指定定范范围围内内满满足足给给定定条条件件的的第第一一个个记录上。记录上。LOCATELOCATE命命令令在在表表中中顺顺序序查查找找满满足足条条件件的的记记录录,即即从从第第1 1条条记记录录开开始按记录号的顺序依次进行查找。始按记录号的顺序依次进行查找。缺省时,默认为缺省时,默认为ALLALL。找找到到符符合合条条件件的的记记录录,则则将将记记录录指指针针指指向向该该记记录录,此此时时EOF()EOF()为为.F.F.,FOUND()FOUND()为为.T.T.;若若未未找找到到符符合合条条件件的的记记录录,则则记记录录指指针针指指向向最最后一条记录的后面,此时后一条记录的后面,此时EOF()EOF()为为.T.T.,FOUND()FOUND()为为.F.F.。程序中常常测试程序中常常测试FOUND()FOUND()和和EOF()EOF()的值来判断是否找到某一个记录。的值来判断是否找到某一个记录。LOCATELOCATE命命令令只只能能将将记记录录指指针针定定位位到到第第一一个个符符合合条条件件的的记记录录上上,若若要继续查找满足条件的其他记录,可以执行继续查找命令要继续查找满足条件的其他记录,可以执行继续查找命令CONTINUECONTINUE。12/20/202242目录目录目录目录条件定位条件定位【格式格式】CONTINUECONTINUE【功能功能】继续执行继续执行LOCATELOCATE命令命令 CONTINUECONTINUE必必须须在在LOCATELOCATE命命令令之之后后使使用用,用用来来继继续查找满足条件的记录。续查找满足条件的记录。CONTINUECONTINUE可多次使用,直到记录指针移到表尾可多次使用,直到记录指针移到表尾或超出范围。或超出范围。12/20/202243目录目录目录目录4.10数据表记录的指针定位数据表记录的指针定位USE 学生情况表学生情况表 LOCATE ALL FOR 性别性别=“男男”?FONND()DISPCONTINUE12/20/202244目录目录目录目录4.11 数据表记录的修改数据表记录的修改菜单方式菜单方式 浏览窗口(或编辑窗口)中修改浏览窗口(或编辑窗口)中修改 “浏览浏览”窗口中显示,执行系统菜单窗口中显示,执行系统菜单“表表”下的下的“替换字段替换字段”命令,则弹出命令,则弹出“替换字段替换字段”对话框对话框 。命令方式命令方式【格式格式】REPLACE REPLACE 1 WITH WITH ,WITH WITH ,2,FORFOR【功能功能】对当前表中指定范围内满足条件的记录分别对当前表中指定范围内满足条件的记录分别用表达式的值自动取代相应字段的原来值。用表达式的值自动取代相应字段的原来值。12/20/202245目录目录目录目录4.11数据表记录的修改数据表记录的修改 如如果果不不选选用用 和和FORFOR 短短语语,则则只对当前记录进行字段更改。只对当前记录进行字段更改。如如果果只只选选定定了了 短短语语,则则对对指指定定范范围围内内的的所所有有记记录录进进行行字字段段更更改改。如如果果只只选选了了FORFOR 短语,则默认范围短语,则默认范围ALLALL。可可以以同同时时更更改改几几个个不不同同字字段段的的值值。其其中中,n是是需需要要更更新新的的字字段段名名,而而WITHWITH后后面面的的 n的的值值用用来来替替换换对对应应字字段段的的值值。值值的的数数据据类类型型必须和字段的类型相同。必须和字段的类型相同。12/20/202246目录目录目录目录4.11 数据表记录的修改数据表记录的修改利用利用EDITEDIT 命令修改数据命令修改数据【格式格式】EDIT|CHANGE FIELDSEDIT|CHANGE FIELDSFORFOR12/20/202247目录目录目录目录4.12 数据表记录的删除和恢复数据表记录的删除和恢复 删除表中记录的操作有删除表中记录的操作有2 2种方式,一是逻辑删除,二是物理种方式,一是逻辑删除,二是物理删除。删除。逻辑删除逻辑删除 逻逻辑辑删删除除记记录录只只对对记记录录作作删删除除标标记记,并并未未从从表表中中真真正正删删除除这这些些记记录录,这这些些记记录录仍仍然然保保存存在在表表中中,并并可可在在必必要要时时恢恢复复成成正常的记录。正常的记录。浏览窗口中逻辑删除记录浏览窗口中逻辑删除记录 逻辑删除最简单的方法是在浏览窗口单击每个要删除记录逻辑删除最简单的方法是在浏览窗口单击每个要删除记录左边的小方框,标记要删除的记录(小方框变黑)。左边的小方框,标记要删除的记录(小方框变黑)。用用“表表”菜单操作菜单操作 打开打开“浏览浏览”窗口后,执行窗口后,执行“表表”菜单下的菜单下的“删除记录删除记录”命令,可在弹出的命令,可在弹出的“删除删除”对话框中设定要删除记录的范围对话框中设定要删除记录的范围和条件和条件12/20/202248目录目录目录目录4.12 数据表记录的删除和恢复数据表记录的删除和恢复 命令删除命令删除【格式格式】DELETE DELETE FORFOR【功能功能】逻辑删除指定的记录。逻辑删除指定的记录。【说说明明】和和FORFOR 均均不不选选时时,仅仅逻辑删除当前记录。逻辑删除当前记录。【例例】USE USE 学生情况表学生情况表 DELE DELE ALL ALL FOR FOR 性性别别=”=”女女”&删删除除性性别别为为“女女”全部记录全部记录12/20/202249目录目录目录目录4.12 数据表记录的删除和恢复数据表记录的删除和恢复注意:注意:若若没没有有使使用用SET SET DELETE DELETE ON ON 命命令令,即即SET SET DELETEDELETE状状态态为为OFFOFF,则则逻逻辑辑删删除除的的记记录录和和其其他他记记录录一一样样参参与与操操作作,否否则则,被被逻逻辑辑删删除除的的记记录录将将被被隐隐藏藏起起来来,不不参参与与有有关关的的计计算算。默默认认情情况况下下是是OFFOFF状状态。态。用用LISTLIST或或DISPLAYDISPLAY命令显示数据记录时,则作命令显示数据记录时,则作了逻辑删除的记录第一个字段前会显示一个了逻辑删除的记录第一个字段前会显示一个“*”号。号。12/20/202250目录目录目录目录4.12 数据表记录的删除和恢复数据表记录的删除和恢复恢复逻辑删除的记录恢复逻辑删除的记录 浏览窗口中逻辑删除记录浏览窗口中逻辑删除记录 浏览窗口中,再次单击已被逻辑删除记录的逻浏览窗口中,再次单击已被逻辑删除记录的逻辑删除标记,小方块即恢复正常的颜色。表明该记辑删除标记,小方块即恢复正常的颜色。表明该记录已恢复为正常记录。录已恢复为正常记录。利用命令恢复已逻辑删除的记录利用命令恢复已逻辑删除的记录【格式格式】RECALLRECALLFORFOR【功能功能】将已作过逻辑删除的记录恢复为正常记将已作过逻辑删除的记录恢复为正常记录。录。12/20/202251目录目录目录目录物理删除物理删除菜单操作菜单操作执行系统执行系统“表表”菜单下的菜单下的“彻底删除彻底删除”命令,将弹出一个确认命令,将弹出一个确认对话框,单击对话框,单击“确定确定”按钮即可按钮即可命令方式命令方式【格式格式】PACKPACK