1、1第四章第四章Visual FoxPro Visual FoxPro 数据库及操作数据库及操作目录上页下页退出2 本本 章章 目录目录第一节第一节Visual FoxPro 数据库及其建立数据库及其建立第二节第二节数据库表的建立和操作数据库表的建立和操作第三节第三节表的排序与索引表的排序与索引第四节第四节 数据完整性数据完整性第五节第五节自由表自由表第六节第六节多表操作多表操作目录上页下页退出3第一节第一节 Visual FoxPro Visual FoxPro 数据库及其建立数据库及其建立 数据库是表的集合。从Visual FoxPro 3.0开始引入了真正意义上的数据库概念。把一个二维表定
2、义为表,把若干个关系比较固定的表集中起来放在一个数据库中管理,在表间建立关系,设置属性和数据有效性规则使相关联的表协同工作。数据库文件具有.dbc扩展名,其中可以包含一个或多个表、关系、视图等。一个Visual FoxPro表或.dbf文件,能够存在以下两种状态之一:与数据库相关联的数据库表,与数据库不关联的自由表。二者的绝大多数操作相同且可以相互转换。相比之下,数据库表的优点要多一些。当一个表是数据库的一部分时,它就可以具有以下内容:长表名和表中的长字段名 表中字段的标题和注释 默认值、输入掩码和表中字段格式化 表字段的默认控件类目录上页下页退出4 字段级规则和记录级规则 支持参照完整性的主
3、关键字索引和表间关系 INSERT、UPDATE或DELETE事件的触发器一、建立数据库一、建立数据库1命令方式命令方式【格式】CREATE DATABASE|?【功能】建立一个新的扩展名为.DBC的数据库文件并打开此数据库。【说明】指定生成的数据库文件,若省略扩展名,则默认为.DBC,同时也自动建立相关联的数据库备注文件扩展名为.DCT,关联的索引文件扩展名为.DCX。如果未指定数据库文件名或用“?”代替数据库名,Visual FoxPro系统会弹出创建对话框,以便用户选择数据库建立的路径和输入数据库名。保存后该数据库文件被建立,并且自动以独占方式打开该数据库。目录上页下页退出5 2菜单方式
4、菜单方式 用菜单方式建立数据库的具体步骤如下:(1)选择【文件】【新建】出现新建对话框。(2)选择“数据库”单选按钮,再单击“新建文件”按钮,出现“创建”对话框。(3)在“创建”对话框中输入文件名。选择“保存”按钮,系统自动打开数据库文件,并且将数据库设计器 也自动打开。3利用项目管理器建立数据库利用项目管理器建立数据库打开已建立的项目文件,出现项目管理器窗口。在“数据”选项卡中选择“数据库”,然后单击“新建数据库”按钮,再通过“创建”对话框提示用户输入数据库名,即扩展名为.DBC的文件名,单击“保存”,出现数据库设计器。目录上页下页退出61.打开数据库打开数据库1)命令方式命令方式 【格式】
5、OPEN DATABASE|?EXCLUSIVE|SHARED 【功能】将磁盘上一个扩展名为.DBC的指定数据库文件打开。【说明】打开一个数据库文件,同名的.DCT相关的数 据库备份文件与.DCX相关的索引文件也一起被打开。数据库打开后,在常用工具栏中可以看见当前正在使用的数据库名,同时当数据库设计器为当前窗口时,系统菜单上出现【数据库】菜单项。:指定要打开的数据库名。如果用户省略或用“?”代替数据库名。系统会显示打开对话框。二、数据库的打开与关闭目录上页下页退出7 在数据库被打开的情况下,它所包含的所有表可以使用。但是,表并没有被真正打开,用户要打开它,仍要用USE命令。2)菜单方式菜单方式
6、 (1)选择【文件】|【打开】,出现打开对话框。(2)选择数据库文件所在的文件夹,将文件类型 选择为“数据库(.dbc)”。(3)选择所要打开的数据库文件名,单击“确定”按钮。3)利用项目管理器打开数据库利用项目管理器打开数据库打开已建立的项目文件,出现项目管理器窗口,选择“数据”标签,选择要打开的数据库名,然后单击“打开”按钮。目录上页下页退出8数据库文件操作完成后,或暂时不用时,必须将其关闭,保存在外部存贮器中以确保数据的安全性。关闭数据库文件有以下几种方式:1命令方式命令方式【格式】CLOSE ALL|DATABASE【功能】关闭当前打开的数据库。【说明】ALL用于关闭所有对象。如数据库
7、、表、索引、项目管理器等。DATABASE关闭当前数据库和数据库表;如果当前没有打开的数据库,则关闭所有打开的自由表、所有工作区内所有索引和格式文件。三、数据库的关闭三、数据库的关闭目录上页下页退出92利用项目管理器关闭数据库利用项目管理器关闭数据库打开已建立的项目文件,出现项目管理器窗口,选择“数据”标签,选择“数据库”下面需要关闭的数据库名,然后单击“关闭”按钮。在常用工具栏上的当前数据库下拉列表框中该数据库名消失,同时在项目管理器中“关闭”按钮变成“打开”按钮。四、数据库的修改四、数据库的修改在VFP中,修改数据库实际是打开数据库设计器,用户可以在数据库设计器中完成各种数据对象的建立、修
8、改、删除等操作。目录上页下页退出10 数据库设计器打开的方法:(1)从项目管理器中打开数据库设计器。(2)从“打开”对话框中打开数据库设计器。(3)用命令方式打开数据库设计器。命令格式:MODIFY DATABASE MODIFY DATABASE 数据库文件名数据库文件名|?NOWAITNOEDITNOWAITNOEDIT 说明:说明:(1)数据库文件名,是指定要修改的数据库文件名,选用“?”,则弹出“打开”对话框,选定要打开的数据库文件。(2)NOWAIT选项:只用于程序中,交互方式下无效。(3)NOEDIT:指打开数据库设计器,但禁止对数据库进行修改。目录上页下页退出111 1命令方式命
9、令方式【格式】DELETE DATABASE DELETE DATABASE 【功能】从磁盘上删除一个扩展名为.DBC的数据库文件。【说明】被删除的数据库不能处于打开状态。被删除的数据库中的表成为自由表。数据库文件名可以包括数据库的路径和数据库名字。如果用“?”代替数据库文件名,将显示打开对话框,用户从打开对话框中选择要从磁盘上删除的数据库的名字。2 2使用项目管理器使用项目管理器打开已建立的项目文件,出现项目管理器窗口,单击“数据”标签,选择要删除的“数据库”,然后单击“移去”按钮。若选择“移去”仅将数据库从项目中移去,被删除的数据库中的表成为自由表。若选择“删除”将从磁盘上删除数据库。五、
10、删除数据库目录上页下页退出12 前面我们已经知道表有二种,一种是数据库表,另一种是自由表。如果建表时数据库是打开的,则建立的表为当前数据库表,否则,建立自由表。无论建立那种表,其方法都相同。一个表由表结构和表记录两部分组成。表结构描述了数据存放形式以及存贮的顺序,确定了表的字段,就完成了对表结构的定义;表记录是表所要保存的数据主体,数据由记录组成,字段是构成记录的基本单元。建立一个表文件首先第一步就是建立表结构,然后再输入表记录。建立表结构的方法有很多,在这里主要讲述三种方法:命令方式、菜单方式和使用项目管理器的方式。第二节第二节 数据库表的建立数据库表的建立和操作和操作目录上页下页退出13一
11、、一、数据库表的建立数据库表的建立 1 1命令方式命令方式【格式】CREATE|?【功能】建立一个新的、扩展名为.DBF的表文件。【说明】指定生成的表文件名,若缺省扩展名,则默认为.DBF。如果使用“?”或末指定表文件名,Visual FoxPro系统会弹出创建对话框,以便用户输入表名。目录上页下页退出14现在用命令方式来建立stud.dbf表。表内容如下:学号姓名性别班级名系别代号地址出生日期是否团员照片备注011110李建国男计012101湖北武汉09/28/84T 011103李宁女电013402江西九江05/06/85F 011202赵娜女英011203广西南宁02/21/84F 02
12、1204孙亮男电013402湖南长沙09/08/86T 011111赵琳女计012101江苏南京11/18/85T 021405罗宇波男英011203江苏南通12/12/85F 目录上页下页退出15用命令方式建立表的具体步骤为:(1)如果没有建立STUDENT数据库,则先建立数据库再打开它。如果创建自由表,该步可略去。(2)在命令窗口中输入CREATE STUD回车,系统打开“表设计器”对话框,如图3-1和图3-2所示。(3)在“字段名”文本框中输入第一个字段名:“学号”,在“类型”下拉列表框中,选择字段的类型为字符型,在宽度输入框中输入10或单击右边的微调按钮至10。(4)将输入光标定位在第
13、二个字段的字段名上,用同样的方法依次输入各个字段的字段名、类型、宽度和小数位数。(5)将所有字段的参数确定好之后,单击“确定”或按快捷键CTRL+W存盘。系统会打开提示窗口,询问用户是否立即输入记录,选择“是”立即开始输入记录,选择“否”不输入记录,光标返回命令窗口,只建立表结构。目录上页下页退出16图3-1 自由表设计器图3-2 数据库表设计器目录上页下页退出17表设计器对话框中包含“字段”、“索引”、“表”三个选项卡。1)“字段字段”选项卡:选项卡:适用于建立表结构,确定表中每个字段的字段名、字段类型、字段宽度和小数位数等。字段名:是某字段的名字。在表中必须是唯一的,字段名必须以汉字、字母
14、和下划线开头,由汉字、字母、数字和下划线组成,对于数据库表支持长字段名,字段名最多为128个字符,自由表不支持长字段名,字段名最多为10个字符。当数据库表转化为自由表时截去超长部分的字符。字段名不能使用系统的保留字。字段类型:表示该字段中存放数据的类型。一个字段即二维表中的一列,其中的数据应具有共同的属性。若存放的是一些符号,不进行数值运算,则定义为字符型;若需要进行数值运算,则根据数值表示的实际意义,选择数值型、货币型、浮点型、双精度型、整型中的一种。对描述日期的字段,可根据需要定义为日期型或日期时间型。对取值只有两种情况,为“真”或为“假”的数据定义为逻辑型。目录上页下页退出18若存储的字
15、符超过254,为节省存储空间可定义为备注型。若要保存图片或OLE对象,可定义为通用型。备注型和通用型字段的信息都没有直接存放在表文件中,而是存放在一个与表文件同名的.FPT文件中。字段宽度:表示该字段所允许存放数据的最大宽度。由数据的最大宽度决定。过大浪费存储空间,过小数据溢出。字符型字段的最大宽度254个字符,数值型字段和浮点型字段的宽度为20位,逻辑型字段的宽度固定为1,日期型字段的宽度固定为8,通用型字段和备注型字段的宽度固定为4。小数位数:只对数值型字段和浮点型字符等数值类型有效,允许最大宽度20。在计算数值型字段和浮点型字段的宽度时,小数点本身也算作一个字符。数值型字段的小数位数由数
16、据的精度决定位数。若建立的是数据库表,则下面还有显示、字段有效性等框。目录上页下页退出19 字段的显示属性 格式:控制字段在浏览窗口、表单、报表等显示时的样式。格式字符及功能如表3-1所示。字符功 能字符功 能A字母字符,不允许空格和标点符号R显示文本框的格式掩码,但不保存到字段中D使用当前的SET DATA格式T删除前导空格和结尾空格E英国日期格式!字母字符转换成大写K光标移至该字段选择所有内容用科学计数法表示数值数据L数值字段显示前导0$显示货币符号表3-1字段的格式字符目录上页下页退出20表3-2 字段的显示掩码字符 标题:若表结构中字段名用的是英文,则可以在标题中输入汉字,这样显示该字
17、段值时就比较直观了。没有设置标题,则将表结构中的字段名作为字段的标题。字符功 能字符功 能X任意字符*左侧显示*9数字字符和+-号.指定小数点位置#数字字符、+-号和空格,用逗号分隔整数部分$指定位置显示货币符号$货币符号与数字不分开显示 输入掩码:控制输入该字段的数据的格式。掩码字符及功能如表3-2所示。目录上页下页退出21 字段有效性 规则:限制该字段的数据的有效范围。在规则中输入:性别=男.OR.性别=女。这样当给“性别”字段输入记录值时就只能输入“男”或“女”。信息:当向设置了规则的字段输入不符合规则的数据时,就会将所设置的信息显示出。默认值:当往表中添加记录时,系统向该字段预置的值。
18、在“性别”字段中输入默认值为“男”。输入记录时只有女生才需要改变默认值,可以减少输入。字段有效性的设置可在图3-2中进行。2 2)表选项卡:)表选项卡:字段选项卡上主要介绍的是字段属性,它控制了字段值的输入,表选项卡则对表的记录属性进行描述,控制记录数据。在这里主要介绍记录有效性和触发器。如图3-3所示。目录上页下页退出22图3-3 记录有效性和触发器目录上页下页退出23 记录有效性 规则:指定记录的有效条件,满足该条件,数据才能输入到表中,它确定的是该记录各字段值之间的总体数据关系是否有错。信息:当记录的数据不符合规则时,由系统显示给用户的提示信息。触发器 当对记录进行操作时,若设置了触发器
19、,则对触发器设置的条件表达式进行验证,若其值为真.T.,则允许进行相关操作,否则,则拒绝操作。插入触发器:当向表中插入或追加记录时,判断其表达式的值,为“真”允许插入或追加,为“假”不允许插入或追加。更新触发器:当要修改记录时,判断其表达式的值,为“真”允许修改,为“假”不允许修改。目录上页下页退出24 删除触发器:当要删除表中记录时,判断其表达式的值,为“真”允许删除,为“假”不允许删除。以上三类触发器也可以用相应的命令实现:CREATE TRIGGER ON 表名FOR INSERT AS触发条件表达式CREATE TRIGGER ON 表名FOR UPDATE AS触发条件表达式CREA
20、TE TRIGGER ON 表名FOR DELETE AS触发条件表达式 2 2菜单方式菜单方式 选择【文件】|【新建】打开新建对话框,选择“表”,单击“新建文件”出现创建对话框,确定需要建立表的路径和表名,按“保存”按钮后,出现“表设计器”对话框。以下步骤同命令方式。目录上页下页退出253 3用项目管理器新建表用项目管理器新建表 打开已建立的项目文件,出现项目管理器窗口,选择“数据”选项卡中的“数据库”下的表,然后单击“新建”按钮。出现新建表对话框,选择“新建表”出现创建对话框,确定需要建立表的路径和表名,按“保存”按钮后,出现图3-1所示的“表设计器”对话框。以下步骤同命令方式。二、数据库
21、表记录的输入二、数据库表记录的输入 如果在刚建好表结构时,在系统提示是否立即输入记录的对话框中选择“是”可直接进入输入记录窗口。如果选择了“否”,再想输入表记录就要以追加方式输入记录。输入表记录的方法又分为命令方式和菜单方式两种方法。1命令方式命令方式【格式】APPEND BLANK【功能】在当前已打开表的末尾追加一条或多条记录。目录上页下页退出26【说明】BLANK:表示在表末尾追加一条空记录,并自动返回命令窗口,此时系统并不弹出编辑窗口。【例4-1】在学生表末尾追加记录。USE STUD&打开表 APPE&或EDIT 注意:注意:输入逻辑值时只输入T或F,定界符系统自动生成 输入日期值时只
22、输入数码,分隔符系统自动生成 输入备注值时,光标位于MEMO上时,按 CTRL+PgDn进入编辑窗口,完成后按CTRL+W返回下一个字段继续输入。2菜单方式菜单方式(1)首先打开表STUD.DBF。(2)选择【显示】|【浏览】命令。(3)选择【表】|【追加新记录】命令,用户可以输 入追加记录的各个字段。目录上页下页退出271表的打开表的打开 表文件建好后,以文件的形式保存在磁盘上,在进行各种操作之前,首先必须打开表。打开表的过程实质上就是将表从磁盘调入内存,这样就可以对表中的数据进行各种操作。系统在任何时刻都只能对内存中的表进行访问。(1)命令方式)命令方式【格式】USE【功能】打开指定磁盘的
23、指定路径下的表和相关的索引文件。【说明】和:指定表文件所在的驱动器及 路 径,若 省 略 盘 符 和 路 径 参 数,则 打 开 当前盘、当前路径下的表文件。三、表的打开与关闭三、表的打开与关闭目录上页下页退出28数据库名!表文件名:指定打开指定数据库中的表文件。若末指定数据库名,则在当前数据库中查找,没有则在自由表中查找。两者同名,则打开数据库中的表。如果表文件中含有通用型、备注型字段,同名的.FPT文件也同时打开。若不指定表文件名而使用“?”,系统会弹出“使用”对话框,以便用户指定打开表的文件名。【例4-2】打开在E盘VFP子目录中STUD.DBF表。USE E:VFPSTUD(2)用项目
24、管理器打开表用项目管理器打开表在项目管理器中选中需要打开的表,选择“浏览”或“修改”都能直接打开表且进行浏览或修改,关闭浏览或修改窗口后,该表仍处于打开状态。目录上页下页退出29 2表的关闭表的关闭 表文件操作完成后,或暂时不用时,必须将其关闭,保存到外存中以确保数据的安全性。关闭表就是将表文件从内存中调出,保存在磁盘上。关闭表文件有以下几种方式:(1)打开另一个表文件)打开另一个表文件 如果工作区中已打开有表文件,打开另一表文件时,系统将自动将先前打开的表文件关闭。(2)使用不带任何选项的)使用不带任何选项的USE命令命令 【格式】USE 【功能】关闭当前已打开的表文件。(3)使用)使用CL
25、EAR命令命令 【格式】CLEAR ALL 【功能】关闭所有工作区中已打开的表文件、索引文 件、格 式 文 件 及 备 注 文 件 等,同 时 释 放 所 有的内存变量。并选择工作区1为当前工作区。目录上页下页退出30(4)使用CLOSE命令【格式1】CLOSE ALL【功能】关闭各种类型文件,并选择工作区1为当前工作区。【格式2】CLOSE DATABASES【功能】关闭所有已打开的数据库文件、表文件、索引 文 件、格 式 文 件 及 备 注 文 件 等,并 选 择 工 作区1为当前工作区。(5)退出Visual FoxPro系统【格式1】QUIT【功能】退出Visual FoxPro系统,
26、并关闭所有打开的文件,返回操作系统。(6)在数据工作窗口中关闭 在数据工作窗口中选择要关闭的表文件,然后选择“关闭”按钮,系统将关闭所选择的表文件。目录上页下页退出311删除自由表删除自由表【格式】DELETE FILE 表文件名表文件名|?【功能】将指定的表文件从磁盘上删除。【说明】如果删除的表文件存在有与之相关的.fpt备注文件和(.cdx或.idx)索引文件,则同时删除这些文件。删除一个表文件,应保证该表文件是处于关闭状态的。要删除的表文件如果不是在默认的路径下,则文件名应指明路径。表文件名不能包含通配符。若不指定文件名或使用“?”,系统会弹出“删除”对话框,选择要删除的表文件路径、文件
27、类型及文件名后,单击“删除”按钮。四、表的删除四、表的删除目录上页下页退出32 2删除数据库表删除数据库表 先将数据库表从数据库中移去,然后再用删除自由表的方法进行删除。移去数据库表的命令是:【格式】REMOVE TABLE 表文件名表文件名|?DELETERECYCLE【功能】从当前数据库中移去一个表。【说明】表文件名:准备从数据库中移去的表文件名。选择?将出现移去对话框,从中选择一个要 从当前数据库中移去的表。选择DELETE在移去数据库表的同时,从磁盘上删除。选择RECYCLE在移去数据库表的同时,不会立即从磁盘上删除,而是放入回收站中。目录上页下页退出33 3在项目管理器中删除表在项目
28、管理器中删除表 在项目管理器中选中需要删除的表,选择“移去”按钮或选择主菜单中【项目】|【移去文件】命令,出现一个选择对话框,若选择“移去”按钮,则将表文件移出项目文件,若选择“删除”按钮,则将表文件从磁盘上删除。五、表的显示五、表的显示 1.1.表结构的显示表结构的显示 在表的使用过程,要经常查看表的结构和记录,以随时了解表的变化情况。【格式】LIST|DISPLAY STRUCTURE TO PRINT PROMPT|TO FILE 【功能】显示或打印当前表文件的结构。目录上页下页退出34 在执行以上命令时,如果系统中没有已打开的表文件,系统提示输入文件名。用LIST命令,所有信息连续显示
29、,信息较多时,屏幕停止在最后一屏;用DISPLAY命令,如果信息较多则分屏显示,敲任意键继续显示下一屏。【例4-3】显示表STUD.DBF的结构。USE STUD USE STUD LIST STRUCTURELIST STRUCTURE需要指出的是,最后一行显示出的记录字节数是所有字段宽度之和再加1。这额外的一个字节是用来存放记录的删除标记(*)的。2.2.表记录的显示表记录的显示1)命令方式命令方式【格式】LIST|DISPLAY FIELDS F O R W H I L E OFFNOCONSOLE TO PRINTER PROMPT|TO FILE【功能】将当前表文件的记录按照指定的选
30、项进行显示。目录上页下页退出35 【说明】DISPLAY命令与LIST命令的功能相似,当表文件的数据记录较多时,用DISPLAY命令较为方便。还有一点不同之处就是,如果同时缺省和 子句,DISPLAY命令只显示当前的一条记录,而LIST命令则是取默认值ALL而显示全部记录。FIELDS:用来指定显示的字段。:用来指定显示哪些记录。“范围”有以下四种表示方法:ALL:所有记录。NEXT N:从当前记录开始,后面的N条记录(包括当前记录)RECORD N:第N条记录。REST:当前记录后的全部记录(包括当前记录)。目录上页下页退出36FOR:指定对表文件中指定范围内满足条件的记录进行操作。WHIL
31、E:也是指定对表文件中指定范围内满足条件的记录进行操作,但是,当第一次遇到不满足条件的记录时,停止继续往后搜索。WHILE若与FOR同时使用,则WHILE项优先;若两者都不选用,则显示中指定的全部记录。OFF:表示不显示记录号;若不选此项,则在各记录前显示记录号。【例4-4】显示表STUD.DBF的全部记录。USE STUD LIST 目录上页下页退出37【例4-5】显示男生的记录。USE STUD DISPLAY FOR 性别性别=男男 FIELDS 学号学号,姓姓;名名,性别性别,班级名班级名,系别代号系别代号【例4-6】显示表中所有记录的学号、姓名和性别。USE STUD LIST FI
32、ELDS 学号学号,姓名姓名,性别性别【例4-7】显示表中1985年出生的同学的学号、姓名、性别及出生日期。USE STUD LIST FIELDS 学号学号,姓名姓名,性别性别,出生日期出生日期;FOR YEAR(出生日期出生日期)=1985 目录上页下页退出382)2)菜单方式菜单方式(1)打开表。(2)选择【显示】|【浏览】命令,系统弹出记录浏览窗 口,显示当前表中的记录。这时还可以选择【显示】|【浏览】或【编辑】来改变显示方式。3)3)利用项目管理器利用项目管理器 在项目管理器中,选择需要显示的表文件,单击“浏览”按钮或选择主菜单中【项目】|【浏览】命令,系统弹出记录浏览窗口,显示当前
33、表中的记录。目录上页下页退出39六、表的修改六、表的修改 1.1.表结构的修改表结构的修改表结构的改变有时会引起表记录的变化,所以在一般情况下不轻易进行修改。但在确实需要时也可以进行修改。无论进行何种修改,使用的命令都是一个 1)命令方式命令方式【格式】MODIFY STRUCTURE【功能】将当前已打开的表文件的表设计器打开进行修改。【说明】要修改表结构必须要先打开需要修改结构的表文件。如果当前工作区中没有已打开的数据库,执行此命令时系统会弹出“打开”对话框,以便用户选择需要修改表结构的文件名及路径等信息,用户选择完成后,系统将弹出表设计器对话框。主要有增加、修改、删除和移动几种操作。目录上
34、页下页退出40(1)增加字段:将光标移至需插入位置上的字段上,选择“插入”按钮或按快捷键ALT+I,在该位置上出现一个新字段,原位置以下的各字段均下移一行。确定增加字段的字段名、字段类型、字段宽度等参数,选择“确定”按钮即可。(2)修改字段:将光标定位在需要修改处,编辑修改,完成后选择“确定”按钮即可。(3)删除字段:将光标移至需删除的字段上,选择“删除”按钮或按快捷键ALT+D,在该位置上的字段被删除,原位置以下各字段均上移一行。选择“确定”按钮。(4)移动字段:将光标移至需移动位置的字段上,用鼠标拖动字段名前的“”按钮,出现一个虚框,当虚框出现在目标位置上时松开鼠标,移动完成,选择“确定”
35、按钮即可。无论是何种修改,选择“确定”按钮后,由于表结构的变化要影响表记录数据,所以都要出现对话框由用户确认修改是否有效。目录上页下页退出41使用MODIFY STRUCTURE命令要注意以下几点:在MODIFY STRUCTURE命令的执行期间,如果强行退出,有可能丢失数据。不能同时修改字段名和它的类型,否则系统将不能正确地送回原来的数据而造成数据的丢失。如果在修改字段名的同时插入或删除了字段,会引起字段位置发生变化,有可能造成数据丢失。但是,在插入或删除字段的同时却可以修改字段的宽度或字段的类型,MODIFY STRUCTURE将根据字段名正确地从备份文件中传送数据。如果修改表结构完成后出
36、现了数据丢失现象,或者对其不满意,可利用备份文件将表恢复到修改前的状态,方法是先将新的表文件删除掉,再将备份文件的扩展名.BAK改为表文件扩展名.DBF,将备注备份文件扩展名.TBK改为备注文件的扩展名.FPT。目录上页下页退出422)利用数据库设计器利用数据库设计器 在数据库设计器中选中需要修改的表文件,再选择主菜单中【数据库】|【修改】命令,具体的修改方法同命令方式。3)利用项目管理器利用项目管理器 在项目管理器中选中需要修改的表文件,再选择主菜单中【项目】|【修改】命令或单击项目管理器中的“修改”按钮。2.2.修改记录修改记录 在表的使用维护过程中,有大量的工作是对数据记录的修改、编辑与
37、更新,通常可以采用编辑修改、浏览修改和替换修改三种方式。目录上页下页退出43 1)编辑修改编辑修改 【格式】EDIT/CHANGE FIELDS FOR WHILE 【功能】按照给定条件编辑修改当前打开的表文件记录。【说明】FIELDS:若选择此选项,则只列出字段名表中的字段,且显示顺序同字段名表中的顺序;若未选择此选项,将显示表中的所有字段,显示顺序同表中的字段顺序。:若未选择此选项,则EDIT/CHANGE命令的范围为全部记录。FOR 和WHILE:同前面其他命令所述,在此不再重复叙述。目录上页下页退出44【例4-8】修改STUD.DBF中计0121班学生的学号、姓名和性别等信息。USE
38、STUD EDIT FIELDS 学号学号,姓名姓名,性别性别 FOR 班级名班级名=”计计0121”全部修改完毕,使用 Ctrl+End 或 Ctrl+W 键保存所有修改的结果。目录上页下页退出452)2)浏览修改浏览修改(1)命令方式【格式】BROWSE FIELDS FOR 【功能】显示当前表的记录内容,以供编辑修改。【说明】编辑结束后,按Ctrl+W或Ctrl+End存盘退出BROWSE编辑窗口,或者按Ctrl+Q或Esc键放弃存盘退出BROWSE窗口。(2)菜单方式利用菜单方式进行浏览修改的操作步骤如下:打开表。选择【显示】|【浏览】命令,系统弹出记录浏览窗口。在编辑修改窗口中编辑修
39、改数据内容,完成后按Ctrl+W键存盘退出Browse窗口。目录上页下页退出463)3)替换修改替换修改(1)命令方式【格式】REPLACE WITH ADDITIVE,WITH ADDITIVE.FOR WHILE NOOPTIMIZE【功能】用指定表达式的值替换当前表中满足条件记录的指定字段的值。【说明】该命令适合对当前库进行成批地、有规律地修改。缺省范围、条件时,仅替换当前记录。该命令回车后,数据修改自动完成。适用于程序设计。ADDITIVE:只对备注型字段修改有效。选择:表示添加内容,不选择:表示替换内容。表达式的类型必须与字段类型一致。表达式的值不能超出字段宽度,否则,数据无效。目录
40、上页下页退出47【例4-9】修改STUD.DBF中的“学号”字段数据,。USE STUD REPLACE 学号学号 WITH”20”+学号学号 ALL(2)菜单方式 打开表文件。选择【显示】|【浏览】命令。选择【表】|【替换字段】命令,弹出图3-4所示的“替换字段”对话框。单击字段下拉按钮选择要进行替换操作的字段名,在“替换为”显示栏中输入替换表达式,再选择“替换条件”显示框中的范围、条件。单击“替换”按钮,系统将自动完成替换操作。目录上页下页退出48表3-4替换字段对话框目录上页下页退出49七、记录指针的定位七、记录指针的定位 记录号用于标识数据记录在表文件中的物理顺序。记录指针是一个指示器
41、,它始终指向当前表中正在操作处理的那条记录,此记录被称为当前记录。如果要对某条记录进行处理,必须移动记录指针,使其指向该记录。在任意时刻指针只能指向唯一的一条记录。记录指针定位有绝对定位、相对定位和查询定位三种。在这里暂时只讲前二种,查询定位在讲到查询时再详细介绍。目录上页下页退出501绝对定位绝对定位【格式】GO|GOTO RECORD IN|IN【功能】将记录指针绝对定位到指定的记录上。:记录的物理记录号。IN|IN:指定操作表所在的工作区;若缺省,则对当前工作区表操作。工作区的概念在后面再详细介绍。绝对定位与是否打开索引文件没有关系。目录上页下页退出512 2相对定位相对定位【格式1】S
42、KIP IN|【功能】记录指针从当前记录向前(或向后)移动若干个记录。【说明】:表示移动的记录个数。若数值表达式的值为负值,表示向前移动记录;否则,表示向后移动记录。如果缺省此项,则表示向后移动1个记录。如果记录指针已经移过文件的最后一个记录,则RECNO()函数返回的值等于文件中的记录总数加1,EOF()函数返回逻辑真(.T.)值。【格式2】GO|GOTO【功能】将记录指针移动到表文件的首记录或尾记录。TOP:将记录指针移动到表文件的首记录。BOTTOM:将记录指针动到表文件的最后一条记录。目录上页下页退出52相对定位与是否打开索引文件有关。如果打开了索引文件,记录指针按索引文件中顺序移动。
43、否则按表文件中物理顺序移动。【例4-10】绝对定位命令的用法。USE STUD GOTO 2 GO 3【例4-11】相对定位的用法。USE STUDUSE STUD SKIP 4&SKIP 4&系统主窗口显示为系统主窗口显示为5 5 SKIP 3 SKIP 3&系统主窗口显示为系统主窗口显示为2 2 SKIP 8&SKIP 8&超出了记录总数超出了记录总数6 6 go top&go top&系统主窗口显示为系统主窗口显示为1 1目录上页下页退出53 表记录的删除也是表维护的一项经常性的工作,因为删除意味着数据的消失,所以对记录的删除操作比较慎重,删除可分为逻辑删除和物理删除两种操作。逻辑删除还
44、可以恢复,而物理删除则不可恢复。1 1逻辑删除记录逻辑删除记录 逻辑删除就是给指定的记录作删除标记“*”。(1)命令方式)命令方式【格式】DELETE FOR WHILE【功能】对当前表中指定范围内满足条件的记录作删除标记“*”。【说明】DELETE命令仅仅是在要删除的记录前加上一个删除标记“*”,并不是真正地从表文件中将该记录删除掉。可以用LIST或DISP命令显示带删除标记的记录。八、表记录的删除八、表记录的删除目录上页下页退出54 ,FOR、WHILE等各项选项意义同前;如果同时缺省和 子句,则仅仅删除当前的记录。【例4-12】删除STUD.DBF中所有男同学的记录。USE STUD D
45、ELETE FOR 性别性别=男男 LIST FIELDS 学号,姓名,性别,班级名,系别学号,姓名,性别,班级名,系别;代号,地址,出生日期,是否团员代号,地址,出生日期,是否团员(2)菜单方式)菜单方式 利用菜单方式逻辑删除记录的具体操作步骤如下:首先打开表文件 选择【显示】|【浏览】命令,系统弹出记录浏览窗口,显示当前表中的记录。主菜单上增加【表】菜单项。目录上页下页退出55 选择【表】|【删除记录】命令,出现图3-5所示的“删除”对话框。单击删除对话框中的For按钮或While按钮,系统弹出表达式生成器,用户可以在表达式框中输入一个逻辑表达式,如性别=”男”,单击【确定】按钮完成条件表
46、达式的输入。在“作用范围”下拉列表框中选择范围,如ALL。单击“删除”对话框中的“删除”按钮,系统将完成对指定范例内满足指定条件的记录的逻辑删除。2 2隐藏逻辑删除记录隐藏逻辑删除记录【格式】SET DELETED ON|OFF【功能】将表文件中已逻辑删除的记录隐藏,仿佛 真正删除一样。目录上页下页退出56图3-5记录删除对话框目录上页下页退出57【说明】表文件中被逻辑删除的记录只是在该记录上加一个删除标记,当SET DELETED设置为OFF时,对该表文件的各种操作,对被删除的记录同样有效。当SET DELETED ON时,可使对表文件中数据的各种操作,一般均不包括有删除标记的记录,但下列情
47、况例外:命令的记录范围是当前记录或RECORD(n)时;INDEX或REINDEX命令不受SET DELETED的影响,始终处理带删除标记的记录。SET DELETED的缺省状态是OFF。【例4-13】隐藏上题中STUD.DBF的标记删除记录。USE STUD SET DELETED ON3 3恢复逻辑删除记录恢复逻辑删除记录 恢复逻辑删除是将被逻辑删除的记录恢复为正常记录。即去掉“*”号。目录上页下页退出58(1)命令方式)命令方式【格式】RECALL FOR WHILE NOOPTIMIZE【功能】将当前表文件中指定范围内满足条件的已作删除标记“*”的记录恢复,即去掉这些删除记录的删除标记
48、,使之成为正常记录。【说明】RECALL命令与DELETE命令相对应,它可以去掉被逻辑删除记录的删除标记“*”。,FOR、WHILE等各项选项意义同前;如果同时缺省和 子句,则仅仅恢复当前记录。【例4-14】恢复STUD.DBF中删除的所有记录。USE STUD RECALL ALL(2)菜单方式)菜单方式 首先打开表文件目录上页下页退出59 选择【显示】|【浏览】命令。选择【表】|【恢复记录】命令,出现类似图3-5所示对话框。余下操作与“删除”对话框的操作相同。4 4物理删除记录物理删除记录 物理删除是将当前表文件中被逻辑删除的记录全部清除。(1)命令方式)命令方式【格式】PACK MEMO
49、DBF【功能】将当前表文件中所有带删除标记(*)的记录全部真正地删除掉。【说明】若选用MEMO选项,PACK MEMO将压缩与表文 件 同 名 的 备 注 文 件 中 的 无 用 空 间,但 并 不 删除表文件中作了删除标记的记录。若选用DBF选项,而不用MEMO选项,则只删除表文件中作了删除标记的记录,而不压缩相应的备注文件。目录上页下页退出60 若不带任何选项,PACK命令将删除数据库文件中作了删除标记的记录,同时压缩相应的备注文件。注意:执行该命令后被删除的记录将不能被恢复,因此 使用时应特别小心。【例4-15】将STUD.DBF中的学号为“021405”的记录进行物理删除。USE ST
50、UD DELETE FOR 学号学号=”021405”PACK(2)菜单方式)菜单方式利用菜单方式物理删除表记录的具体步骤如下:首先打开表文件 选择【显示】|【浏览】命令,系统弹出记录浏览窗 口,显示当前表中的记录。主菜单上增加【表】菜单。选择【表】|【彻底删除】命令,出现“确 认”对话框。目录上页下页退出61单击“是”按钮,完成物理删除过程。注意:用户也可以在EDIT、CHANGE、BROWSE窗口中,按Ctrl+T键对当前记录作(或取消)删除标记,也可以用鼠标单击记录最左边的删除标记栏作删除(或取消)标记。5 5删除全部记录删除全部记录 【格式】ZAP 【功能】将当前打开的表文件中的所有记