如何管理数据表

上传人:夏** 文档编号:587728545 上传时间:2024-09-06 格式:PPT 页数:135 大小:11.08MB
返回 下载 相关 举报
如何管理数据表_第1页
第1页 / 共135页
如何管理数据表_第2页
第2页 / 共135页
如何管理数据表_第3页
第3页 / 共135页
如何管理数据表_第4页
第4页 / 共135页
如何管理数据表_第5页
第5页 / 共135页
点击查看更多>>
资源描述

《如何管理数据表》由会员分享,可在线阅读,更多相关《如何管理数据表(135页珍藏版)》请在金锄头文库上搜索。

1、第第2章章 如何管理数据表如何管理数据表2.1 案例引入案例引入管理商品信息表管理商品信息表2.2 生成商品信息表生成商品信息表2.3 使用商品信息表使用商品信息表2.4 更新商品信息表更新商品信息表2.5 数据表相关知识数据表相关知识习题习题上机实验题上机实验题设计一个数据库应用管理系统,例如,商品销售管理设计一个数据库应用管理系统,例如,商品销售管理系统,首要的工作是确定所管理的对象,依据所管理系统,首要的工作是确定所管理的对象,依据所管理的对象设计数据库文件,即数据表,例如商品信息表、的对象设计数据库文件,即数据表,例如商品信息表、销售情况表、库存表和员工表等等。数据表是构成数销售情况表

2、、库存表和员工表等等。数据表是构成数据库应用管理系统的重要部分。据库应用管理系统的重要部分。商品信息表是商品销售管理系统数据库中的一张数据商品信息表是商品销售管理系统数据库中的一张数据表,它是一张由行、列组成的二维表。每列的名称被表,它是一张由行、列组成的二维表。每列的名称被称为字段名;各字段的属性的集合称为表的结构,它称为字段名;各字段的属性的集合称为表的结构,它描述了数据存放形式以及存储的顺序,确定了表的字描述了数据存放形式以及存储的顺序,确定了表的字段,例如字段名为段,例如字段名为spbh(商品编号)、类型为字符型商品编号)、类型为字符型、宽度为、宽度为6、没有小数位等;每行被称为记录,

3、由各、没有小数位等;每行被称为记录,由各字段的值组成,表记录是表所要保存的数据主体,例字段的值组成,表记录是表所要保存的数据主体,例如商品编号为如商品编号为110101、商品名称为钢笔、品牌为英雄、商品名称为钢笔、品牌为英雄、型号为型号为K1、销售单价为销售单价为5.2元。商品信息表的表结构元。商品信息表的表结构如图如图2-1所示,而该表中的内容,也就是表记录的显所示,而该表中的内容,也就是表记录的显示如图示如图2-2所示。所示。2.1 案例引入案例引入管理商品信息表管理商品信息表图图2-1 商品信息表结构商品信息表结构图图2-2商品信息表的记录商品信息表的记录从上面的图中可以看出,数据表是由

4、表结构和表记录从上面的图中可以看出,数据表是由表结构和表记录共同构成的,一个共同构成的,一个Visual FoxPro所认可的表,在外所认可的表,在外存储器以文件为单位存放,因此数据表也被称为数据存储器以文件为单位存放,因此数据表也被称为数据库文件,其文件扩展名为库文件,其文件扩展名为.dbf。在在Visual FoxPro系系统中,数据表的存在状态有两种:统中,数据表的存在状态有两种: 一是与数据库相一是与数据库相关联的数据库表;二是与数据库不相关联的自由表。关联的数据库表;二是与数据库不相关联的自由表。二者的绝大多数操作相同且两种状态可以相互转换,二者的绝大多数操作相同且两种状态可以相互转

5、换,相比之下数据库表的优点要多一些。当一个表是数据相比之下数据库表的优点要多一些。当一个表是数据库的一部分时,即数据表的状态为数据库表时,它就库的一部分时,即数据表的状态为数据库表时,它就可以具有以下特性:可以具有以下特性: 长表名和表中的长字段名;长表名和表中的长字段名; 表中字段的标题和注释;表中字段的标题和注释; 默认值、输入掩码和表中字段格式化;默认值、输入掩码和表中字段格式化; 表字段的默认控件类;表字段的默认控件类; 支持参照完整性的主关键字索引和表间关系;支持参照完整性的主关键字索引和表间关系; INSERT、UPDATE或或DELETE事件的触发器。事件的触发器。以商品信息表为

6、例,上述功能显示举例如图以商品信息表为例,上述功能显示举例如图2-3以及以及图图2-4所示。其功能的具体含义参见第所示。其功能的具体含义参见第4章相关内容。章相关内容。图图2-3数据表的结构数据表的结构“表设计器表设计器”字段标签的显示内容字段标签的显示内容图图2-4数据表的结构数据表的结构“表设计器表设计器”表标签的显示内容表标签的显示内容2.2.1创建商品信息表结构创建商品信息表结构创建表结构的方法主要有两种:创建表结构的方法主要有两种: 利用表设计器方式利用表设计器方式和和CREATE TABLE-SQL命令方式。命令方式。现在用表设计器方式创建商品信息表现在用表设计器方式创建商品信息表

7、spxx.dbf,其表其表各项数据如表各项数据如表2-1所示。所示。2.2 生成商品信息表生成商品信息表表表2-1商品信息表的数据商品信息表的数据商品编号商品名称品牌型号销售单价110101钢笔英雄K15.2000110102钢笔英雄M210.8000110207钢笔永生S67.6000110208钢笔永生S78.8000210114牙膏佳洁士120g12.6000210256牙膏高露洁80g6.8000223798牙刷三笑软毛2.0000316001矿泉水娃哈哈500mL1.2000320209可乐可口可乐1.2L4.4000330303果味汽水醒目500mL2.0000410177饼干美味

8、200g3.0000420278面包喜悦300g3.60001. 打开打开“表设计器表设计器”在项目管理器窗口中的在项目管理器窗口中的“项项”列表中选择列表中选择“自由表自由表”后单击后单击“新建新建”按钮,在出现的按钮,在出现的“新建表新建表”对话框中对话框中单击单击“新表新表”按钮,然后在按钮,然后在“创建创建”对话框中选择保对话框中选择保存表文件的文件夹并输入表存表文件的文件夹并输入表2-1中的数据。中的数据。输入表文件名输入表文件名“spxx”,单击单击“保存保存”按钮,则打开按钮,则打开如图如图2-5所示的自由表的所示的自由表的“表设计器表设计器”对话框。对话框。图图2-5创建自由表

9、的创建自由表的“表设计器表设计器”窗口窗口2. 在在“表设计器表设计器”中创建表结构中创建表结构 在在“字段名字段名”文本框中输入第一个字段名文本框中输入第一个字段名“spbh”,在在“类型类型”下拉列表框中,选择字段的类下拉列表框中,选择字段的类型为型为“字符型字符型”,在宽度输入框中输入,在宽度输入框中输入6或单击右边或单击右边的微调按钮至的微调按钮至6。 将输入光标定位在第二个字段的字段名上,用同将输入光标定位在第二个字段的字段名上,用同样的方法依次输入各个字段的字段名、类型、宽度和样的方法依次输入各个字段的字段名、类型、宽度和小数位数。小数位数。 将所有字段的参数确定好之后,单击将所有

10、字段的参数确定好之后,单击“确定确定”按按钮或按钮或按Ctrl+W键存盘。系统会打开提示窗口,询问键存盘。系统会打开提示窗口,询问用户是否立即输入记录,选择用户是否立即输入记录,选择“是是”立即开始输入记立即开始输入记录;选择录;选择“否否”则不立即输入记录数据,光标返回命则不立即输入记录数据,光标返回命令窗口,此时只建立表结构,记录为空。令窗口,此时只建立表结构,记录为空。“表设计器表设计器”对话框中包含对话框中包含“字段字段”、“索引索引”、“表表”3个选项卡,如图个选项卡,如图2-5所示。所示。(1) “字段字段”选项卡选项卡使用于建立表结构,确定表中每个字段的字段名、字使用于建立表结构

11、,确定表中每个字段的字段名、字段类型、字段宽度和小数位数等。段类型、字段宽度和小数位数等。字段名。是某个字段的名字。在表中必须是惟一的,字段名。是某个字段的名字。在表中必须是惟一的,字段名必须以汉字、字母和下划线开头,由汉字、字字段名必须以汉字、字母和下划线开头,由汉字、字母、数字和下划线组成,对于数据库表支持长字段名,母、数字和下划线组成,对于数据库表支持长字段名,字段名最多为字段名最多为128个字符,自由表不支持长字段名,个字符,自由表不支持长字段名,字段名最多为字段名最多为10个字符。当数据库表转化为自由表时个字符。当数据库表转化为自由表时自动截去超长部分的字符。特别要注意的是,字段名自

12、动截去超长部分的字符。特别要注意的是,字段名不能使用系统的保留字。不能使用系统的保留字。 类型。标识该字段中存放数据的类型。一个字段类型。标识该字段中存放数据的类型。一个字段即二维表中的一列,其中的数据应具有共同的属性。即二维表中的一列,其中的数据应具有共同的属性。若存放的是一些符号,不进行数值运算,如商品编号、若存放的是一些符号,不进行数值运算,如商品编号、商品名称等,则定义为字符型;若需要进行数值运算,商品名称等,则定义为字符型;若需要进行数值运算,如销售数量、销售单价等,则根据数值标识的实际意如销售数量、销售单价等,则根据数值标识的实际意义,选择数值型、货币型、浮点型、双精度型、整型义,

13、选择数值型、货币型、浮点型、双精度型、整型中的一种。对描述日期的字段,可根据需要定义为日中的一种。对描述日期的字段,可根据需要定义为日期型或日期时间型。对取值只有两种情况,为期型或日期时间型。对取值只有两种情况,为“真真”或为或为“假假”的数据定义为逻辑型。若存储的字符超过的数据定义为逻辑型。若存储的字符超过254个,为节省存储空间可定义为备注型。若要保存个,为节省存储空间可定义为备注型。若要保存图片或图片或OLE对象,可定义为通用型。备注型和通用对象,可定义为通用型。备注型和通用型字段的信息都没有直接存放在表文件中,而是存放型字段的信息都没有直接存放在表文件中,而是存放在一个与表文件同名的在

14、一个与表文件同名的.fpt文件中。表字段的基本数文件中。表字段的基本数据类型如表据类型如表2-2所示。所示。 表表2-2表字段的基本数据类型表字段的基本数据类型 数据类型字母表示说明示例字符型C字母、汉字符号和数字型文本商品的编号或名称货币型Y货币单位商品的销售单价数值型N整数或小数学生的考试成绩浮点型F(同数值型)双精度型B双精度型数值实验要求的高精度型数据整型I不带小数点的数值库存数量日期型D年、月、日生日日期时间型T年、月、日、时、分、秒员工的上班时间逻辑型L真与假员工婚姻状况备注型M不定长的一段文本员工简历通用型GOLE员工的照片或声音 宽度。宽度。 表示该字段所允许存放数据的最大宽度

15、,表示该字段所允许存放数据的最大宽度,由数据的最大宽度决定,过大浪费存储空间,过小数由数据的最大宽度决定,过大浪费存储空间,过小数据溢出。字符型字段的最大宽度为据溢出。字符型字段的最大宽度为254个字符,数值个字符,数值型字段和浮点型字段的宽度为型字段和浮点型字段的宽度为20,逻辑字段的宽度固,逻辑字段的宽度固定为定为1,日期型字段的宽度固定为,日期型字段的宽度固定为8,通用型和备注型,通用型和备注型字段的宽度固定为字段的宽度固定为4。 小数位数。小数位数。 对于数值、浮点型和双精度型的字段对于数值、浮点型和双精度型的字段还需要指定其小数的位数,这些数据类型的字段宽度,还需要指定其小数的位数,

16、这些数据类型的字段宽度,实际上是实际上是“整数部分的宽度整数部分的宽度+小数点小数点1位位+小数位数宽小数位数宽度度”。如果小数位数不为。如果小数位数不为0,则小数位数必须比整个,则小数位数必须比整个字段的宽度至少小字段的宽度至少小2。 空值(空值(NULL)支持。支持。 空值是用来指示记录中的空值是用来指示记录中的一个字段有或没有数据的标识。一个字段有或没有数据的标识。NULL不是一种数据不是一种数据类型或一个值,确切地说,它是用来指示数据存在或类型或一个值,确切地说,它是用来指示数据存在或不存在的一种属性。通过使用不存在的一种属性。通过使用NULL,就有了一个判就有了一个判定某个字段是否具

17、有一个值的办法。定某个字段是否具有一个值的办法。(2) 表选项卡表选项卡对表的记录属性进行描述,控制记录数据。主要功能对表的记录属性进行描述,控制记录数据。主要功能有记录有效性和触发器,如图有记录有效性和触发器,如图2-4所示。所示。记录有效性中包括规则和信息。记录有效性中包括规则和信息。 规则。规则。 指定记录的有效条件,满足该条件,数据指定记录的有效条件,满足该条件,数据才能输入到表中,它确定的是该记录各字段值之间的才能输入到表中,它确定的是该记录各字段值之间的总体数据关系是否有错。总体数据关系是否有错。 信息。信息。 当记录的数据不符合规则时,有系统显示当记录的数据不符合规则时,有系统显

18、示给用户的提示信息。给用户的提示信息。当对记录进行操作时,若设置了触发器,则对触发器当对记录进行操作时,若设置了触发器,则对触发器设置的条件表达式进行验证,若其值为真设置的条件表达式进行验证,若其值为真.T.,则允则允许进行相关操作,否则,拒绝操作。有许进行相关操作,否则,拒绝操作。有3种触发器:种触发器: 插入触发器。插入触发器。 当向表中插入或追加记录时,判断其当向表中插入或追加记录时,判断其表达式的值,为表达式的值,为“真真”允许插入或追加,为允许插入或追加,为“假假”不不允许插入或追加。允许插入或追加。更新触发器。更新触发器。 当要修改记录时,判断其表达式的值,当要修改记录时,判断其表

19、达式的值,为为“真真”允许修改,为允许修改,为“假假”不允许修改。不允许修改。删除触发器。删除触发器。 当要删除表中记录时,判断其表达式当要删除表中记录时,判断其表达式的值,为的值,为“真真”允许删除,为允许删除,为“假假”不允许删除。不允许删除。用户也可以在用户也可以在“命令命令”窗口或程序中使用窗口或程序中使用CREATE TABLE-SQL命令创建表的结构。该命令的基本语法命令创建表的结构。该命令的基本语法格式如下:格式如下: CREATE TABLE TableName(FieldName1 FieldType (nFieldWidth , nPrecision)NULL | NOT

20、NULL ,FieldName2,)其中,其中,TableName为表文件名;为表文件名;FieldName1、FieldName2为字段名;为字段名;nFieldWidth为字段宽度;为字段宽度;nPrecision为小数位数;为小数位数;NULL 和和NOT NULL用于指用于指定该字段是否允许为空值。定该字段是否允许为空值。例如,商品信息表结构的创建可以使用下列命令:例如,商品信息表结构的创建可以使用下列命令: CREATE TABLE spxx(spbh C(6), spmc C(10), pp C(10), xh C(10), xsdj Y(8)又例如,创建销售情况表又例如,创建销售

21、情况表结构,其中结构,其中cjbh(成交编号)和成交编号)和spbh(商品编号)字商品编号)字段不允许为段不允许为NULL值,而值,而xssl(销售数量)字段则允销售数量)字段则允许为许为NULL值:值: CREATE TABLE xsqk (cjbh C(6) NOT NULL, spbh C(6) NOT NULL, xssl I(4) NULL)也可以用也可以用SET NULL ON|OFF命令控制表字段中是否命令控制表字段中是否允许允许NULL值。在默认情况下,系统处于值。在默认情况下,系统处于SET NULL OFF状态。状态。值得注意的是,当设置表中的字段可以接受值得注意的是,当设

22、置表中的字段可以接受NULL值值时,该表最多只能有时,该表最多只能有254个字段。个字段。2.2.2 表结构的修改表结构的修改建立表以后,如果表结构需要增加字段、删除字段或建立表以后,如果表结构需要增加字段、删除字段或修改字段内容,则可以修改表的结构。修改表结构的修改字段内容,则可以修改表的结构。修改表结构的方式有两种:方式有两种: 1. 用表设计器修改表的结构用表设计器修改表的结构如果已经建立的表结构已经存在于一个项目中,就可如果已经建立的表结构已经存在于一个项目中,就可以在以在“项目管理器项目管理器”窗口中先选定要修改的表,然后窗口中先选定要修改的表,然后单击单击“修改修改”命令按钮,便可

23、以打开命令按钮,便可以打开“表设计器表设计器”对对话框。如图话框。如图2-6所示,用户可根据需要修改表结构。所示,用户可根据需要修改表结构。也可以在当前已被打开的表文件中,使用也可以在当前已被打开的表文件中,使用MODIFY STRUCTURE命令打开命令打开“表设计器表设计器”对话框,进行对话框,进行修改。修改。图图2-6利用利用“表设计器表设计器”修改表结构修改表结构2. 用用ALTER TABLE-SQL命令修改表的结构命令修改表的结构用户可以在用户可以在“命令命令”窗口或程序中使用该命令来修改窗口或程序中使用该命令来修改表的结构。该命令的基本语法如下:表的结构。该命令的基本语法如下:

24、格式格式1: 用用ADD子句增加字段,用子句增加字段,用ALTER子句修改子句修改字段。字段。ALTER TABLE TableName ADD|ALTER COLUMEFieldName FieldType (nFieldWidth , nPrecision)格式格式2: 用用DROP子句删除字段。子句删除字段。ALTER TABLE TableName DROP COLUMN FieldName格式格式3: 用用RENAME子句更改字段名。子句更改字段名。ALTER TABLE TableName RENAME COLUMN FieldName1 TO FieldName2例如:例如: 将

25、将zje(总金额)字段添加到销售情况表总金额)字段添加到销售情况表(xsqk.dbf)中。代码如下:中。代码如下:ALTER TABLE xsqk ADD COLUMN zje y(8) 将字段名将字段名zje更改为更改为zongje。代码如下:代码如下:ALTER TABLE xsqk RENAME zje TO zongje 将字段将字段zongje从表从表xsqk中删除。代码如下:中删除。代码如下:ALTER TABLE xsqk DROP COLUMN zongje值得考值得考虑的是,在修改宽度、类型时,是否会引起数据的溢虑的是,在修改宽度、类型时,是否会引起数据的溢出、丢失;在修改字

26、段名时,是否会引起数据的丢失出、丢失;在修改字段名时,是否会引起数据的丢失以及该字段是否在其他位置被引用。以及该字段是否在其他位置被引用。 在已经建立的商品信息表中要输入商品信息,也就是在已经建立的商品信息表中要输入商品信息,也就是输入记录,有输入记录,有4种方法:种方法: 2.2.3 输入商品信息输入商品信息1. 表结构创建以后立即输入记录表结构创建以后立即输入记录如图如图2-5所示,如果刚建好商品信息表的结构时,在所示,如果刚建好商品信息表的结构时,在系统提示是否立即输入记录的对话框中选择系统提示是否立即输入记录的对话框中选择“是是”按按钮,就可以直接进入输入记录编辑窗口,如图钮,就可以直

27、接进入输入记录编辑窗口,如图2-7所所示,在该编辑窗口中,系统用一条横线将各个记录隔示,在该编辑窗口中,系统用一条横线将各个记录隔开,其中一行显示一个字段,包括字段名以及字段值。开,其中一行显示一个字段,包括字段名以及字段值。在这个窗口可以将商品信息一一输入,输入结束后,在这个窗口可以将商品信息一一输入,输入结束后,单击窗口的单击窗口的“关闭关闭”按钮,或者按按钮,或者按Ctrl+End组合键组合键或者或者Ctrl+W组合键,即可以将输入的记录,即商品组合键,即可以将输入的记录,即商品信息存盘退出。信息存盘退出。图图2-7输入记录编辑窗口输入记录编辑窗口2. 在浏览窗口中追加记录在浏览窗口中追

28、加记录用户通过表的浏览功能可以在屏幕上查看和处理表的用户通过表的浏览功能可以在屏幕上查看和处理表的记录。利用表的浏览功能浏览当前工作区中的表有多记录。利用表的浏览功能浏览当前工作区中的表有多种方法。如利用菜单命令种方法。如利用菜单命令“显示显示/浏览浏览”;或在;或在“数数据工作期据工作期”窗口中选择表,然后单击窗口中选择表,然后单击“浏览浏览”按钮;按钮;或使用或使用BROWSE命令。如果表由项目所管理,无论命令。如果表由项目所管理,无论表是否被打开,均可以在表是否被打开,均可以在“项目管理器项目管理器”窗口中选择窗口中选择需要浏览的表,单击窗口中的需要浏览的表,单击窗口中的“浏览浏览”按钮

29、。通过上按钮。通过上述的任何一种方法,都将显示如图述的任何一种方法,都将显示如图2-8所示以表格形所示以表格形式显示商品信息表的浏览窗口。式显示商品信息表的浏览窗口。图图2-8在浏览窗口输入记录在浏览窗口输入记录当商品信息表处于浏览状态时,利用菜单命令当商品信息表处于浏览状态时,利用菜单命令“表表/追加新记录追加新记录”或或APPEND BLANK命令,则可追加一命令,则可追加一条空记录,并且处于编辑状态,等待用户输入数据;条空记录,并且处于编辑状态,等待用户输入数据;如果利用菜单命令如果利用菜单命令“显示显示/追加方式追加方式”则可追加多条则可追加多条记录,即输入一行信息以后单击记录,即输入

30、一行信息以后单击Enter键,光标将停键,光标将停留在下一个空白行的行首,可输入下一行的信息。留在下一个空白行的行首,可输入下一行的信息。此外,表的浏览窗口与编辑窗口可以相互切换,其操此外,表的浏览窗口与编辑窗口可以相互切换,其操作方法是利用菜单命令作方法是利用菜单命令“显示显示/浏览浏览”与与“显示显示/编辑编辑”。在浏览窗口中,备注型字段显示在浏览窗口中,备注型字段显示“memo”(表示无内表示无内容)或者容)或者“Memo”(表示有内容)。输入备注型字段表示有内容)。输入备注型字段内容时,操作步骤是:内容时,操作步骤是: 把光标移动到备注型字段后,把光标移动到备注型字段后,按下按下Ctr

31、l+Home组合键或者双击备注型字段;在出现组合键或者双击备注型字段;在出现的编辑窗口中输入备注内容,结束后关闭编辑窗口。的编辑窗口中输入备注内容,结束后关闭编辑窗口。在浏览窗口中,通用型字段显示在浏览窗口中,通用型字段显示“gen”(表示无内表示无内容)或者容)或者“Gen”(表示有内容)。输入通用型字段表示有内容)。输入通用型字段内容时,操作步骤是:内容时,操作步骤是: 把光标移动到通用型字段后,把光标移动到通用型字段后,按下按下Ctrl+Home组合键或者双击通用型字段;在出现组合键或者双击通用型字段;在出现编辑窗口后利用菜单命令编辑窗口后利用菜单命令“编辑编辑/插入对象插入对象”插入其

32、插入其内容,结束时关闭编辑窗口。内容,结束时关闭编辑窗口。3. 利用利用INSERT-SQL命令追加记录命令追加记录INSERT-SQL命令可以在命令可以在“命令命令”窗口或程序中向一窗口或程序中向一张表中追加记录,其命令格式:张表中追加记录,其命令格式: INSERT INTO TableName(FieldName1,FieldName2,) VALUES(eExpression1,eExpression2,)例如,使用例如,使用INSERT-SQL命令向商品信息表命令向商品信息表spxx插入插入一条新记录。一条新记录。INSERT INTO spxx(spbh,spmc,pp,xh,xs

33、dj)VALUES (420279,面包面包,喜悦喜悦,150g,2)4. 利用利用APPEND命令追加记录命令追加记录APPEND命令是向当前数据表文件追加记录,有两种命令是向当前数据表文件追加记录,有两种格式:格式: (1) 使用使用APPEND命令向数据表追加空记录命令向数据表追加空记录APPEND BLANK IN nWorkArea | cTableAlias格式中,格式中,BLANK用于说明向表内追加用于说明向表内追加一条记录,默认时系统向数据表中追加一条空记录,一条记录,默认时系统向数据表中追加一条空记录,并打开表的浏览窗口以便用户输入该记录的数据。并打开表的浏览窗口以便用户输入

34、该记录的数据。(2) 使用使用APPEND FROM命令追加记录命令追加记录APPEND FROM FileName DELIMITED | XLS该格式命该格式命令是实现从其他表或文件如数据表文件令是实现从其他表或文件如数据表文件.dbf、文本文文本文件件.txt、Excel文件文件.xsl等中向当前数据表文件等中向当前数据表文件导入数据记录,其中导入数据记录,其中DELIMITED用于说明追加文件用于说明追加文件为文本文件,为文本文件,XLS用于说明追加文件为用于说明追加文件为Excel文件,文件,默认时追加文件为数据表文件。默认时追加文件为数据表文件。此外当前数据表处于浏览状态时利用菜单

35、命令此外当前数据表处于浏览状态时利用菜单命令“表表/追加记录追加记录”,打开后如图,打开后如图2-9所示,选择文件类型、所示,选择文件类型、追加的数据来源文件后,也可以将其他文件如数据表追加的数据来源文件后,也可以将其他文件如数据表文件、文本文件、文件、文本文件、Excel文件等中的数据单加到当前文件等中的数据单加到当前工作区的表中。工作区的表中。图图2-9利用菜单利用菜单“表表/追加记录追加记录”后后“追加来源追加来源”窗口窗口在追加过程中,对于表文件来说,只有与当前数据表在追加过程中,对于表文件来说,只有与当前数据表的字段相同的字段,其数据追加到当前表中;对于文的字段相同的字段,其数据追加

36、到当前表中;对于文本文件来说,要求其每条记录以回车符结尾,各字段本文件来说,要求其每条记录以回车符结尾,各字段内容用逗号分隔,字符型字段值要加引号;对于内容用逗号分隔,字符型字段值要加引号;对于Excel文件来说,要求工作表的列结构与当前数据表文件来说,要求工作表的列结构与当前数据表的表结构相应。的表结构相应。通过前两节的内容建立了商品信息表的数据表文件后,通过前两节的内容建立了商品信息表的数据表文件后,如果要使用已经建立在存储器上的数据表时,要通过如果要使用已经建立在存储器上的数据表时,要通过打开、浏览、定位、筛选、索引等功能来使用商品信打开、浏览、定位、筛选、索引等功能来使用商品信息表。息

37、表。2.3 使用商品信息表使用商品信息表1. 工作区工作区对一张数据表的操作是通过一个工作区来进行的。工对一张数据表的操作是通过一个工作区来进行的。工作区是用来标识一张打开的数据表的区域,也就是,作区是用来标识一张打开的数据表的区域,也就是,打开一张数据表时必须为该数据表指定一个工作区。打开一张数据表时必须为该数据表指定一个工作区。系统允许使用编号为系统允许使用编号为132747这个范围内的工作区,这个范围内的工作区,就是说,每个工作区都有一个编号,称为工作区号。就是说,每个工作区都有一个编号,称为工作区号。例如,例如,1号工作区、号工作区、2号工作区等,其中前号工作区等,其中前10个工作区个

38、工作区还可以用字母还可以用字母AJ来表示。同时对已经打开数据表的来表示。同时对已经打开数据表的工作区,还可以用表的工作区,还可以用表的“别名别名”来标识该数据表,如来标识该数据表,如何来定义表名,后面再介绍。何来定义表名,后面再介绍。2.3.1 打开与关闭商品信息表打开与关闭商品信息表对于工作区的使用要注意到:对于工作区的使用要注意到: 一个工作区只能打开一个工作区只能打开一张数据表。当在已经打开数据表的工作区中,再次一张数据表。当在已经打开数据表的工作区中,再次打开另外一张数据表,则前一张打开的数据表自动关打开另外一张数据表,则前一张打开的数据表自动关闭。另外,用户可以同时在多个工作区中分别

39、打开多闭。另外,用户可以同时在多个工作区中分别打开多张数据表,也可以将一张数据同时在多个工作区中打张数据表,也可以将一张数据同时在多个工作区中打开。开。如果同时在多个工作区中分别打开多个数据表时,只如果同时在多个工作区中分别打开多个数据表时,只有一个工作区被称为当前工作区,这个工作区就是系有一个工作区被称为当前工作区,这个工作区就是系统正在操作的工作区,系统将当前工作区认定为默认统正在操作的工作区,系统将当前工作区认定为默认工作区。通过界面交互地或用命令进行有关数据表的工作区。通过界面交互地或用命令进行有关数据表的处理操作时,如果不指定工作区号时,则其操作对象处理操作时,如果不指定工作区号时,

40、则其操作对象为当前工作区中的数据表。另外,在为当前工作区中的数据表。另外,在Visual FoxPro系统启动,默认的当前工作区号为系统启动,默认的当前工作区号为1。操作工作区的命令为操作工作区的命令为SELECT,其命令格式为:其命令格式为: SELECT nWorkArea | cTableAlias其中,其中,nWorkArea 为工作区号;为工作区号;cTableAlias为数据为数据表的别名。表的别名。【例【例2-1】说明下列语句的功能。】说明下列语句的功能。SELECT 1USE spxx其功能为在其功能为在1号工作区打开商品信息表号工作区打开商品信息表spxx.dbf,当前正在操

41、作的为当前正在操作的为1号工作区。号工作区。【例【例2-2】说明下列语句的功能。】说明下列语句的功能。SELECT 1USE spxxSELECT 0USE xsqk其功能为在其功能为在1号工作区中打开商品信息表号工作区中打开商品信息表spxx.dbf,再在再在2号工作区中打开销售情况表号工作区中打开销售情况表xsqk.dbf,执行到此,此时的当前操作工作区为执行到此,此时的当前操作工作区为2号。这里的号。这里的SELECT 0是指选择未被使用的最小编号的工作区,是指选择未被使用的最小编号的工作区,因为前面已经使用了因为前面已经使用了1号工作区,故销售情况表实际号工作区,故销售情况表实际是在是

42、在2号工作区打开的。号工作区打开的。2. 打开和关闭数据表打开和关闭数据表要打开数据表文件,如打开商品信息表、销售情况表要打开数据表文件,如打开商品信息表、销售情况表等等。使用表时首先必须把数据表打开,其意义在于等等。使用表时首先必须把数据表打开,其意义在于告知系统当前所要操作的数据表,并在内存中开辟一告知系统当前所要操作的数据表,并在内存中开辟一块存储区域。数据表的打开可以显式打开或者隐式打块存储区域。数据表的打开可以显式打开或者隐式打开。显式打开是指用户利用菜单等界面操作方法,或开。显式打开是指用户利用菜单等界面操作方法,或者用者用USE命令直接打开数据表,例如上述例命令直接打开数据表,例

43、如上述例1和例和例2。隐式打开是指在执行某些操作(通过界面操作或者执隐式打开是指在执行某些操作(通过界面操作或者执行各种行各种SQL命令)时,系统会自动打开相应的数据表。命令)时,系统会自动打开相应的数据表。例如,前面已经介绍过的例如,前面已经介绍过的ALTER-SQL命令修改表结命令修改表结构时,构时,INSERT-SQL命令插入记录时,被操作的数据命令插入记录时,被操作的数据表都将自动打开;另外,在表都将自动打开;另外,在“项目管理器项目管理器”窗口中选窗口中选择一张数据表后,单击择一张数据表后,单击“修改修改”或或“浏览浏览”按钮时,按钮时,数据表也会自动打开。数据表也会自动打开。(1)

44、 打开数据表打开数据表打开数据表有不同的方法。当一张数据表刚创建的时打开数据表有不同的方法。当一张数据表刚创建的时候,该数据表自动处于打开状态;已经存在的数据表候,该数据表自动处于打开状态;已经存在的数据表要再次被使用和操作,可以使用下列方式打开数据表:要再次被使用和操作,可以使用下列方式打开数据表: 使用菜单命令使用菜单命令“文件文件/打开打开”或者单击或者单击“常用常用”工工具条上的具条上的“打开打开”按钮,将出现按钮,将出现“打开打开”对话框,如对话框,如图图2-10所示。在该对话框中选择数据表文件,则指定所示。在该对话框中选择数据表文件,则指定数据表将在当前工作区打开。数据表将在当前工

45、作区打开。图图2-10 数据表数据表“打开打开”窗口窗口 在在“数据工作期数据工作期”中单击中单击“打开打开”按钮,将出现按钮,将出现“打开打开”对话框,如图对话框,如图2-10所示。在该对话框中选择所示。在该对话框中选择数据表文件,则指定数据表将在当前未被使用的最小数据表文件,则指定数据表将在当前未被使用的最小工作区号中打开,并且不影响当前工作区。工作区号中打开,并且不影响当前工作区。数据工作期是当前数据动态工作环境的一种表示。在数据工作期是当前数据动态工作环境的一种表示。在系统启动后,自动生成一个数据工作期,称为系统启动后,自动生成一个数据工作期,称为“默认默认”数据工作期。每一个表单、表

46、单集或者报表在运行数据工作期。每一个表单、表单集或者报表在运行过程中,为管理自己所用的数据,可以形成自己的数过程中,为管理自己所用的数据,可以形成自己的数据工作期。每一个数据工作期有自己的一组工作区,据工作期。每一个数据工作期有自己的一组工作区,工作区含有打开的表、表索引和关系。工作区含有打开的表、表索引和关系。 在在“项目管理器项目管理器”窗口中单击选择需要打开的数窗口中单击选择需要打开的数据表,然后单击据表,然后单击“修改修改”或者或者“浏览浏览”按钮,则指定按钮,则指定数据表将被打开,并且出现数据表将被打开,并且出现“表设计器表设计器”对话框或者对话框或者数据表的浏览窗口。数据表将在当前

47、未被使用的最小数据表的浏览窗口。数据表将在当前未被使用的最小工作区号中被打开,并且设置该工作区为当前工作区。工作区号中被打开,并且设置该工作区为当前工作区。 在命令窗口使用命令打开数据表。在命令窗口使用命令打开数据表。命令格式如下:命令格式如下: USE TableName IN nWorkArea |cTableAlias AGAIN ALIAS cTableAlias NOUPDATE其中:其中: IN子句用于指定数据表在哪个工作区打开,默认时,子句用于指定数据表在哪个工作区打开,默认时,则表示在当前工作区中打开;则表示在当前工作区中打开;AGAIN用于说明该数据表被再次打开,即数据表在用

48、于说明该数据表被再次打开,即数据表在多个工作区中被打开;多个工作区中被打开;ALIAS子句用于定义数据表的别名,默认时,数据表子句用于定义数据表的别名,默认时,数据表的别名一般与表名相同;的别名一般与表名相同;NOUPDATE指定数据表打开后,不允许修改其结构指定数据表打开后,不允许修改其结构和数据。和数据。例如,解释下列命令:例如,解释下列命令: USE spxx在当前工作区中打在当前工作区中打开商品信息表开商品信息表spxx。USE xsqk IN 0 ALIAS qk0号工号工作区代表当前还未使用的工作区中的最小号工作区,作区代表当前还未使用的工作区中的最小号工作区,所以上述命令的功能为

49、:所以上述命令的功能为: 在未使用的最小工作区号在未使用的最小工作区号的工作区中打开销售情况表的工作区中打开销售情况表xsqk,取别名为取别名为qk。USE yg IN 4 NOUPDATE在在4号工作区打开员工表号工作区打开员工表yg,并且设置不允许修改并且设置不允许修改USE spxx IN 10 AGAIN 在在10号工作区中再次打开号工作区中再次打开spxx表,其别名为表,其别名为J。值得注意的是,表的别名是对工作区中打开的数据表值得注意的是,表的别名是对工作区中打开的数据表的一个临时标识或称呼,使用别名,将便于输入,特的一个临时标识或称呼,使用别名,将便于输入,特别是在应用程序中,工

50、作区通常是用别名来标识工作别是在应用程序中,工作区通常是用别名来标识工作区的数据表。别名可以通过区的数据表。别名可以通过USE命令中的命令中的ALIAS子句子句来指定,其命名规则与数据表名相同,但是如果一张来指定,其命名规则与数据表名相同,但是如果一张数据表同时在多个工作区中打开,并且均未指定别名,数据表同时在多个工作区中打开,并且均未指定别名,则在第一次打开的工作区中,别名与数据表名相同,则在第一次打开的工作区中,别名与数据表名相同,其他工作区用其他工作区用AJ以及以及W11W32747表示。一般情况表示。一般情况下,如果在工作区中打开一张数据表而未指定别名,下,如果在工作区中打开一张数据表

51、而未指定别名,则其别名被默认为数据表名。则其别名被默认为数据表名。(2) 关闭数据表关闭数据表当数据表不需要再使用时,可以通过关闭操作或命令当数据表不需要再使用时,可以通过关闭操作或命令来关闭一张数据表。其含义在于将该数据表所占的内来关闭一张数据表。其含义在于将该数据表所占的内存空间,即工作区,释放出来。在操作过程中,如果存空间,即工作区,释放出来。在操作过程中,如果在一个工作区中已经打开了一张数据表,则在此工作在一个工作区中已经打开了一张数据表,则在此工作区中再次打开另一张数据表时,原先的数据表则将自区中再次打开另一张数据表时,原先的数据表则将自动被关闭。动被关闭。 通过界面操作。该操作主要

52、在通过界面操作。该操作主要在“数据工作期数据工作期”窗窗口进行,在其窗口先选定一张数据表的别名,然后单口进行,在其窗口先选定一张数据表的别名,然后单击击“关闭关闭”按钮,即实现了关闭一张数据表的操作。按钮,即实现了关闭一张数据表的操作。 使用命令方式。在命令窗口可以使用下列命令来使用命令方式。在命令窗口可以使用下列命令来实现关闭一张数据表的操作。实现关闭一张数据表的操作。格式格式1: 关闭当前工作区或指定工作区号或指定数据关闭当前工作区或指定工作区号或指定数据表别名的数据表。表别名的数据表。USE IN nWorkArea | cTableAlias其中,不使用其中,不使用IN子句时,指关闭当

53、前工作区中的数子句时,指关闭当前工作区中的数据表;当使用据表;当使用IN子句选择子句选择nWorkArea时,指关闭指时,指关闭指定工作区号中的数据表,选择定工作区号中的数据表,选择cTableAlias时,指关闭时,指关闭指定数据表别名的数据表。指定数据表别名的数据表。例如:例如: USE spxx IN 1 & 在在1号工作区打开号工作区打开spxx数据数据SELECT 1 & 将将1号工作区设置为当前操作工号工作区设置为当前操作工作区作区USE xsqk & 在在1号工作区中再次打开号工作区中再次打开xsqk数据,数据,同时关闭同时关闭spxx数据表数据表USE & 或或 USE IN

54、1 或或 USE IN spxx 命令关命令关闭数据表闭数据表xsqk格式格式2: 关闭所有工作区中的数据表。关闭所有工作区中的数据表。CLOSE TABLES & 关闭所有工作区中的数据表关闭所有工作区中的数据表CLOSE ALL & 关闭所有数据库、数据表和索引,关闭所有数据库、数据表和索引,并且将当前工作区号设置为并且将当前工作区号设置为0另外,在退出另外,在退出Visual FoxPro系统时,所有数据表也都将被关闭。系统时,所有数据表也都将被关闭。(3) 数据表的独占与共享数据表的独占与共享Visual FoxPro是一个多用户的开发环境,网络上的是一个多用户的开发环境,网络上的多用

55、户可以在同一时刻访问同一张数据表。这种一张多用户可以在同一时刻访问同一张数据表。这种一张数据表同时被多个用户访问的情况,就是数据表的共数据表同时被多个用户访问的情况,就是数据表的共享使用。反之,当一张数据表只能被一个用户打开时,享使用。反之,当一张数据表只能被一个用户打开时,称为数据表的独占使用。称为数据表的独占使用。一般在默认情况下,数据是以独占方式打开的。当然一般在默认情况下,数据是以独占方式打开的。当然系统的默认打开方式可以选择菜单系统的默认打开方式可以选择菜单“工具工具”|“选项选项”,打开,打开“选项选项”对话框设置,或者使用命令设置。对话框设置,或者使用命令设置。命令为:命令为:

56、SET EXCLUSIVE OFF& 设置设置“共享共享”为默认打开方式为默认打开方式SET EXCLUSIVE ON& 设置设置“独占独占”为默认打开为默认打开方式在打开数据表时,也可以显式地指定数据表的打方式在打开数据表时,也可以显式地指定数据表的打开方式是独占还是共享。也有界面操作和命令操作两开方式是独占还是共享。也有界面操作和命令操作两种。在采用界面操作方法打开数据表时,在种。在采用界面操作方法打开数据表时,在“打开打开”对话框中有一个对话框中有一个“独占独占”复选框,选中表示独占,否复选框,选中表示独占,否则表示共享,如图则表示共享,如图2-10所示。在使用命令方式下,只所示。在使用

57、命令方式下,只要在要在USE命令后加子句命令后加子句SHARED(共享)或者共享)或者EXCLUSIVE(独占)即可,例如:独占)即可,例如: USE spxx SHARED & 以共享方式打开以共享方式打开spxx数据表数据表USE spxx EXLUSIVE & 以独占方式打开以独占方式打开spxx数据数据表另外注意,当改变表另外注意,当改变SET EXLUSIVE的设置并不能的设置并不能改变在设置之前已经打开的数据表的共享或独占的状改变在设置之前已经打开的数据表的共享或独占的状态;一张数据表同时被多次打开时,只以第一次的打态;一张数据表同时被多次打开时,只以第一次的打开方式为准。开方式为

58、准。一旦商品信息表被创建在计算机存储器中,如果要查一旦商品信息表被创建在计算机存储器中,如果要查看该数据表的信息,则要通过相应的方法。比如首先看该数据表的信息,则要通过相应的方法。比如首先要按照上面所谈的那样来打开商品信息表,然后根据要按照上面所谈的那样来打开商品信息表,然后根据Visual FoxPro所提供的浏览等功能查看所需要的信所提供的浏览等功能查看所需要的信息。息。1. 显示数据表记录显示数据表记录可以通过界面方式和命令方式来显示数据表的记录内可以通过界面方式和命令方式来显示数据表的记录内容。容。2.3.2 查看商品信息查看商品信息(1) 利用界面方式来浏览数据表利用界面方式来浏览数

59、据表从项目管理器中打开商品信息表从项目管理器中打开商品信息表spxx,并单击并单击“浏览浏览”按钮即可显示当前所选定的商品信息表的记录内容按钮即可显示当前所选定的商品信息表的记录内容了。了。也可以使用菜单也可以使用菜单“文件文件”|“打开打开”功能,在打开对功能,在打开对话框中选择商品信息表话框中选择商品信息表spxx,将该数据表打开;然后将该数据表打开;然后再使用菜单再使用菜单“显示显示”|“浏览浏览”功能将已经打开的当功能将已经打开的当前工作区中的商品信息表前工作区中的商品信息表spxx的记录内容显示在浏览的记录内容显示在浏览窗口中。菜单窗口中。菜单“显示显示”|“浏览浏览”还有一种模式是

60、还有一种模式是“显示显示”|“编辑编辑”。这两种模式可以相互切换,利用。这两种模式可以相互切换,利用菜单切换后的编辑模式显示商品信息表。菜单切换后的编辑模式显示商品信息表。(2) 利用命令方式来浏览数据表利用命令方式来浏览数据表格式如下:格式如下: BROWSE FIELDS FieldList FOR lExpression FREEZE FieldNameNOAPPEND NODELETE NOMODIFY TITLE cExpression格式中的各子句的含义:格式中的各子句的含义: FIELDS子句用于指定在浏览窗口中出现的字段(各子句用于指定在浏览窗口中出现的字段(各字段名之间用逗号

61、分隔),默认时表示所有字段;字段名之间用逗号分隔),默认时表示所有字段;FOR子句用于筛选记录,仅有满足条件的记录在浏子句用于筛选记录,仅有满足条件的记录在浏览窗口中显示;览窗口中显示;FREEZE子句用于指定可以修改的字段,其他字段的子句用于指定可以修改的字段,其他字段的数据不可修改;数据不可修改;NOAPPEND指定不可追加记录;指定不可追加记录;NODELETE指定不可删除记录;指定不可删除记录;NOMODIFY指定不可修改记录,但是可追加或删除指定不可修改记录,但是可追加或删除记录;记录;TITLE子句指定浏览窗口的标题,默认时为数据表名。子句指定浏览窗口的标题,默认时为数据表名。例如

62、:例如: 浏览商品信息表浏览商品信息表spxx,仅显示销售单价小于仅显示销售单价小于10元的商品的编号、名称和销售单价。元的商品的编号、名称和销售单价。USE spxxBROWSE FIELDS spbh,spmc,xsdj FOR xsdj10 NOMODIFY TITLE 商品信息商品信息执行结果如图执行结果如图2-11所示。当所示。当Visual FoxPro主窗口中存在浏览窗口而且主窗口中存在浏览窗口而且为活动窗口时,系统将出现为活动窗口时,系统将出现“表表”菜单项,以便用户菜单项,以便用户对当前工作区的表进行各种操作。对当前工作区的表进行各种操作。图图2-11 BROWSE例子执行结

63、果例子执行结果2. 记录指针的定位记录指针的定位当用户向数据表中输入数据时,当用户向数据表中输入数据时,Visual FoxPro为每为每个记录都按输入顺序指定了个记录都按输入顺序指定了“记录号记录号”。第一个输入。第一个输入的记录,其记录号为的记录,其记录号为1,依次类推。也就是,记录号,依次类推。也就是,记录号用于标识记录在数据表文件中的物理顺序。用于标识记录在数据表文件中的物理顺序。当一张数据表被打开后,系统自动为该表生成当一张数据表被打开后,系统自动为该表生成3个控个控制标志:制标志: 记录的开始标志、记录指针标志、记录的记录的开始标志、记录指针标志、记录的结束标志。记录的开始标志介于

64、数据表结构和记录之结束标志。记录的开始标志介于数据表结构和记录之间,前面是数据表结构信息,后面是第间,前面是数据表结构信息,后面是第1条记录。记条记录。记录的结束标志是整个数据记录结束的标志。记录指针录的结束标志是整个数据记录结束的标志。记录指针标识是一个指示器,它始终指向当前数据表文件中正标识是一个指示器,它始终指向当前数据表文件中正在进行操作处理的那条记录,此记录被称为当前记录。在进行操作处理的那条记录,此记录被称为当前记录。如果要对某条记录进行处理,必须如果要对某条记录进行处理,必须移动记录指针,使其指向该记录。在任意时刻指针只移动记录指针,使其指向该记录。在任意时刻指针只能指向惟一的一

65、条记录。能指向惟一的一条记录。记录指针定位是指将指针指向数据表文件内待操作的记录指针定位是指将指针指向数据表文件内待操作的记录。对记录进行修改、删除等操作时,记录指针必记录。对记录进行修改、删除等操作时,记录指针必须先指向该记录。须先指向该记录。记录指针定位有绝对定位、相对定位和条件定位记录指针定位有绝对定位、相对定位和条件定位3种。种。记录指针的绝对定位是指把记录指针移动到指定的位记录指针的绝对定位是指把记录指针移动到指定的位置。例如,指定记录的记录号、第置。例如,指定记录的记录号、第1个记录或者最后个记录或者最后一个记录;记录指针的相对定位是指把指针从当前位一个记录;记录指针的相对定位是指

66、把指针从当前位置开始,相对于当前记录向前或者向后移动若干条记置开始,相对于当前记录向前或者向后移动若干条记录位置。记录指针的条件定位是指按照一定的条件自录位置。记录指针的条件定位是指按照一定的条件自动在整张数据表或者在指定数据表的范围内查找符合动在整张数据表或者在指定数据表的范围内查找符合该条件的记录,如果找到符合该条件的记录,如果找到符合条件的记录,则把指针定位到该记录上,否则,记录条件的记录,则把指针定位到该记录上,否则,记录指针将定位到整张数据表或数据表的指定范围的末尾。指针将定位到整张数据表或数据表的指定范围的末尾。对于记录的定位的操作有两种形式:对于记录的定位的操作有两种形式: 界面

67、操作和命界面操作和命令操作。令操作。(1) 通过界面操作实现记录的定位通过界面操作实现记录的定位当数据表处于浏览状态时,系统菜单将增加一项当数据表处于浏览状态时,系统菜单将增加一项“表表”菜单项,记录的定位可以通过菜单菜单项,记录的定位可以通过菜单“表表|转到记录转到记录|”来操作,也可以直接在浏览窗口中通过鼠标操作来操作,也可以直接在浏览窗口中通过鼠标操作或者键盘上的光标键进行操作。或者键盘上的光标键进行操作。当使用浏览窗口的当使用浏览窗口的“表表”菜单项进行定位操作时,将菜单项进行定位操作时,将出现如图出现如图2-12所示的所示的“定位记录定位记录”对话框,在该对话对话框,在该对话框中用户

68、可以设置记录定位的条件。框中用户可以设置记录定位的条件。图图2-12 “定位记录定位记录”对话框对话框 “作用范围作用范围”是对记录的筛选,可以选择的范围包括是对记录的筛选,可以选择的范围包括4项:项: All: 指数据表中的全部记录。指数据表中的全部记录。Next n: 指从当前记录开始的指从当前记录开始的n条记录,其中条记录,其中n在其在其右边的微调框中输入。右边的微调框中输入。Record n: 指指定记录,记录号指指定记录,记录号n在其右边的微调框在其右边的微调框中输入。中输入。Rest: 指当前记录及其后的所有记录。指当前记录及其后的所有记录。For和和While是指记录指针定位在满

69、足条件的第是指记录指针定位在满足条件的第1个记个记录上,在它们的右边文本框中输入或单击文本框右边录上,在它们的右边文本框中输入或单击文本框右边的的“”按钮通过表达式生成器生成条件。在进行条按钮通过表达式生成器生成条件。在进行条件定位时,如果在指定的范围内未找到符合条件的记件定位时,如果在指定的范围内未找到符合条件的记录,则记录指针指向指定范围的结尾。录,则记录指针指向指定范围的结尾。(2) 通过命令进行记录定位通过命令进行记录定位绝对定位:绝对定位: GOTO nRecordNumber IN nWorkArea | IN cTableAlias|TOP|BOTTOM其中,记录号其中,记录号n

70、RecordNumber必须在数据表记录的必须在数据表记录的有效范围内;有效范围内;TOP是指第是指第1个记录;个记录;BOTTOM是指最是指最后一条记录;短语后一条记录;短语IN nWorkArea 或或 IN cTableAlias是指定操作数据表所在的工作区或别名。是指定操作数据表所在的工作区或别名。绝对定位的功能是将记录指针绝对定位在指定的记录绝对定位的功能是将记录指针绝对定位在指定的记录上。上。例如:例如: USE spxx & 打开商品信息文件打开商品信息文件spxxGOTO 3 & 将记录指针定位在第将记录指针定位在第3号记录上号记录上GOTO TOP & 将记录指针定位在第一个

71、记录上将记录指针定位在第一个记录上?RECNO() & 显示当前记录指针所指向的记录的显示当前记录指针所指向的记录的记录号记录号GOTO BOTTOM &将记录指针定位在数据表的将记录指针定位在数据表的最后一个记录上相对定位:最后一个记录上相对定位: SKIP nRcords IN nWorkArea | cTableAlias其中,其中,nRcord为记录数,用于指定记录指针需要移为记录数,用于指定记录指针需要移动的记录个数,正数表示向后移动,负数表示向前移动的记录个数,正数表示向后移动,负数表示向前移动,默认时为动,默认时为1;其他短语与绝对定位命令格式相同。;其他短语与绝对定位命令格式相

72、同。相对定位的功能是记录指针从当前记录向前或向后移相对定位的功能是记录指针从当前记录向前或向后移动若干个记录。如果记录指针已经移过数据表文件的动若干个记录。如果记录指针已经移过数据表文件的最后一个记录,则最后一个记录,则RECNO()()(测试记录号函数)测试记录号函数)返回的值等于数据表文件中的记录总数加返回的值等于数据表文件中的记录总数加1,此时,此时EOF()()(文件结束测试函数)返回逻辑值为文件结束测试函数)返回逻辑值为.T.;如果从第一条记录向上移动如果从第一条记录向上移动1条记录,记录指针将指条记录,记录指针将指向记录的开始标志,此时向记录的开始标志,此时RECNO()()函数的

73、返回值函数的返回值仍为仍为1,BOF()()(文件开始测试函数)将返回文件开始测试函数)将返回.T.。例如:例如: USE xsqk & 打开销售情况表打开销售情况表xsqk,记录记录指针指向第指针指向第1号记录号记录SKIP 4 & 记录指针向后移动记录指针向后移动4个记录数,即指向个记录数,即指向第第5号记录号记录SKIP -3 & 记录指针向前移动记录指针向前移动3个记录数,即指向个记录数,即指向第第2号记录号记录?EOF(),BOF(),RECNO() & 显示函数值,分别为显示函数值,分别为.F.、.F.、2GOTO BOTTOM & 记录指针指向最后一个记录记录指针指向最后一个记录

74、SKIP & 记录指针向后移一个记录记录指针向后移一个记录?EOF(),BOF(),RECNO() & 显示函数值分别为显示函数值分别为.T.、.F.、13GOTO TOP & 记录指针指向第一个记录记录指针指向第一个记录SKIP-1 & 记录指针向前移一个记录记录指针向前移一个记录?EOF(),BOF(),RECNO() & 显示函数值分别为显示函数值分别为.F.、.T.、1条件定位:条件定位: LOCATE FOR lExpression Scope其中,条件表达式其中,条件表达式lExpression用于表示记录的定位条用于表示记录的定位条件;范围件;范围Scope 用于进行条件定位的范

75、围,即用于进行条件定位的范围,即ALL或或NEXT或或RECORD或或REST,范围默认时指范围默认时指ALL。条件定位的功能是查找满足条件的第一个记录,并将条件定位的功能是查找满足条件的第一个记录,并将记录指针指向找到的记录,可以使用记录指针指向找到的记录,可以使用CONTINUE命命令从当前记录位置开始继续进行条件定位,即定位到令从当前记录位置开始继续进行条件定位,即定位到下一条满足条件的记录。下一条满足条件的记录。例如:例如: USE spxx LOCATE FOR 销售单价销售单价2& 将记录指针定位在第将记录指针定位在第一个满足条件的记录上一个满足条件的记录上CONTINUE & 将

76、记录指针继续定位在下一个满将记录指针继续定位在下一个满足条件的记录上足条件的记录上3. 筛选数据表记录筛选数据表记录在实际使用中,用户往往只想查看和处理满足一定条在实际使用中,用户往往只想查看和处理满足一定条件的一部分记录,例如查看商品信息表中商品名称为件的一部分记录,例如查看商品信息表中商品名称为“钢笔钢笔”的记录,可以对数据表记录进行筛选。就如的记录,可以对数据表记录进行筛选。就如上面已经看到的那样,许多对数据表进行处理的命令上面已经看到的那样,许多对数据表进行处理的命令中,如中,如BROWSE命令等,通过命令等,通过FOR子句的使用可以子句的使用可以完成筛选功能。完成筛选功能。也可以通过

77、相应的过滤设置来达到筛选的目的。首先也可以通过相应的过滤设置来达到筛选的目的。首先可以使用界面方式设置过滤器:可以使用界面方式设置过滤器: 当数据表处于浏览当数据表处于浏览状态时,利用菜单状态时,利用菜单“表表”|“属性属性”命令打开命令打开“工作工作区属性区属性”对话框,如图对话框,如图2-13所示,可以在数据过滤器所示,可以在数据过滤器中填写条件或利用条件生成器生成条件。中填写条件或利用条件生成器生成条件。图图2-13 “工作区属性工作区属性”对话框对话框用户也可以使用命令的形式进行记录的筛选。其格式用户也可以使用命令的形式进行记录的筛选。其格式为:为: SET FILTER TO lEx

78、pression其中,条件表达式其中,条件表达式lExpression用于指定记录需要满足用于指定记录需要满足的条件,默认时表示所有记录,即取消筛选。的条件,默认时表示所有记录,即取消筛选。例如:例如: USE spxxSET FILTER TO spmc=钢笔钢笔 & 筛选商品名称为筛选商品名称为钢笔的记录钢笔的记录BROWSE FIELDS spbh,spmc,xsdj & 浏览商浏览商品名称为钢笔的记录的编号、名称和销售单价品名称为钢笔的记录的编号、名称和销售单价SET FILTER TO & 取消筛选状态取消筛选状态4. 限制对字段的访问限制对字段的访问在浏览或者使用数据表时,如果只打

79、算显示或处理数在浏览或者使用数据表时,如果只打算显示或处理数据表中的部分字段,可以设置字段筛选来限制对某些据表中的部分字段,可以设置字段筛选来限制对某些字段的访问。在许多对数据表进行操作的命令中,例字段的访问。在许多对数据表进行操作的命令中,例如如BROWSE命令,通过使用命令,通过使用FIELDS子句可以完成字子句可以完成字段筛选功能。段筛选功能。当数据表处于浏览状态时,如图当数据表处于浏览状态时,如图2-13所示,利用所示,利用“工工作区属性作区属性”对话框可以筛选字段。对话框可以筛选字段。用户也可以使用命令进行记录字段的筛选。命令格式用户也可以使用命令进行记录字段的筛选。命令格式如下:如

80、下: SET FIELD TO FieldList其中,字段名表其中,字段名表FieldList用于列出所需的字段,默认用于列出所需的字段,默认时表示所有字段,也就是取消筛选。时表示所有字段,也就是取消筛选。例如:例如: USE spxxSET FIELD TO spbh,spmc & 设置限制访问字段设置限制访问字段状态状态BROWSE FOR xsdj5 & 浏览销售单价小于浏览销售单价小于5元元的商品编号及名称的商品编号及名称SET FIELD TO & 取消限制访问字段状态取消限制访问字段状态5. 索引数据表索引数据表索引是为了方便查询,在索引是为了方便查询,在Visual FoxPr

81、o中的索引是中的索引是根据数据表中的某些字段值,建立起一个逻辑顺序索根据数据表中的某些字段值,建立起一个逻辑顺序索引文件。引文件。(1) 索引关键字及索引种类索引关键字及索引种类索引就是用户根据数据表中某些字段值,为数据表建索引就是用户根据数据表中某些字段值,为数据表建立一个顺序的索引文件,使对记录的显示、查询、打立一个顺序的索引文件,使对记录的显示、查询、打印更为迅速,同时,也可以限制记录重复,并支持不印更为迅速,同时,也可以限制记录重复,并支持不同数据表之间的同数据表之间的“关系关系”。由于索引文件中存储的是。由于索引文件中存储的是按照某一字段值排列的一组记录,每个记录号指向一按照某一字段

82、值排列的一组记录,每个记录号指向一个待处理的记录,因此索引可以理解为根据某一个字个待处理的记录,因此索引可以理解为根据某一个字段值进行逻辑排序的一组指针。段值进行逻辑排序的一组指针。关键字是指用来当作索引顺序的字段名,例如,对关键字是指用来当作索引顺序的字段名,例如,对“销售单价销售单价”进行索引,建立一个按进行索引,建立一个按“销售单价销售单价”大小大小顺序排序的索引文件,那么,顺序排序的索引文件,那么,“销售单价销售单价”就是索引就是索引的关键字。建立的索引被保存在复合索引文件里,当的关键字。建立的索引被保存在复合索引文件里,当数据表打开或更新时,索引同时被打开和更新。索引数据表打开或更新

83、时,索引同时被打开和更新。索引文件的名字与数据表名相同,并具有文件的名字与数据表名相同,并具有.cdx扩展名。扩展名。索引可分为索引可分为4种类型:种类型: 主索引。指每个数据库表只能有一个主关键字,主索引。指每个数据库表只能有一个主关键字,并且要求该字段输入的值是惟一的,不允许重复,例并且要求该字段输入的值是惟一的,不允许重复,例如,商品编号、员工编号等可以作为主索引字段,而如,商品编号、员工编号等可以作为主索引字段,而商品名称不能作为主索引字段,因为它们的输入值不商品名称不能作为主索引字段,因为它们的输入值不是惟一的。一个数据库可以根据主关键字段给每一个是惟一的。一个数据库可以根据主关键字

84、段给每一个数据表建立一个主索引,一张数据表只能有一个主索数据表建立一个主索引,一张数据表只能有一个主索引。引。 候选索引。候选索引。 指在数据表和自由表中都可以建立多指在数据表和自由表中都可以建立多个候选索引,但是其中的数据必须是惟一的。个候选索引,但是其中的数据必须是惟一的。 普通索引。普通索引。 指此字段中的数据不需要是惟一的,指此字段中的数据不需要是惟一的,允许字段中的值重复。在一张数据表中可以存在多个允许字段中的值重复。在一张数据表中可以存在多个普通索引。普通索引。 惟一索引。指索引文件对每一个特定的关键字只惟一索引。指索引文件对每一个特定的关键字只存储一次,而忽略了重复值第二次或以后

85、的记录。存储一次,而忽略了重复值第二次或以后的记录。(2) 索引文件的种类索引文件的种类Visual FoxPro有有3种索引文件,它们分别是:种索引文件,它们分别是: 结构复结构复合索引文件(合索引文件(.cdx)、)、非结构复合索引文件(非结构复合索引文件(.cdx)以及独立索引文件(以及独立索引文件(.idx)。)。 结构复合索引文件。结构复合索引文件。 是将一张数据表的一个或多是将一张数据表的一个或多个索引的索引信息存储在一个索引文件中,而且索引个索引的索引信息存储在一个索引文件中,而且索引文件的主文件与数据表名相同,在创建时系统自动给文件的主文件与数据表名相同,在创建时系统自动给定。

86、在使用过程中,结构复合索引自动地与数据表同定。在使用过程中,结构复合索引自动地与数据表同步打开、更新和关闭。因此,在创建结构复合索引文步打开、更新和关闭。因此,在创建结构复合索引文件时,不要建立无用的索引,多余的索引将降低系统件时,不要建立无用的索引,多余的索引将降低系统的性能。的性能。 非结构复合索引文件。是将一张数据表的一个或非结构复合索引文件。是将一张数据表的一个或多个索引的索引信息存储在一个索引文件中。在使用多个索引的索引信息存储在一个索引文件中。在使用过程中,非结构复合索引文件不会随着数据表的打开过程中,非结构复合索引文件不会随着数据表的打开而自动打开,只有用打开索引文件命令将其打开

87、才能而自动打开,只有用打开索引文件命令将其打开才能起作用。如果想创建多个索引标识,但是又不想在每起作用。如果想创建多个索引标识,但是又不想在每次打开时维护它们,以减轻应用程序的负担,此时非次打开时维护它们,以减轻应用程序的负担,此时非结构复合文件较为有用。结构复合文件较为有用。 独立索引文件。是存储一种索引的索引文。文件独立索引文件。是存储一种索引的索引文。文件名自定。独立索引文件一般作为临时索引文件,特点名自定。独立索引文件一般作为临时索引文件,特点是这种索引文件查找速度快。与非结构复合索引文件是这种索引文件查找速度快。与非结构复合索引文件一样,独立索引文件也需要单独用打开命令打开才有一样,

88、独立索引文件也需要单独用打开命令打开才有效。效。(3) 建立索引建立索引在在Visual FoxPro中建立索引是非常容易的事,由于中建立索引是非常容易的事,由于Visual FoxPro允许在一个数据表中设定多个索引,允许在一个数据表中设定多个索引,因此,以因此,以“商品信息表商品信息表”为例来创建结构复合索引,为例来创建结构复合索引,有两种方法:有两种方法: 表设计器和命令方式。表设计器和命令方式。 用用“表设计器表设计器”创建结构复合索引。在使用创建结构复合索引。在使用“表表设计器设计器”创建或者修改结构时,可以创建数据表的索创建或者修改结构时,可以创建数据表的索引。首先,在引。首先,在

89、“表设计器表设计器”中选择中选择“索引索引”选项卡,选项卡,然后在然后在“索引名索引名”框中输入索引名称,在框中输入索引名称,在“类型类型”列列表中选择一种索引类型,再在表中选择一种索引类型,再在“表达式表达式”框中输入索框中输入索引表达式,单击引表达式,单击“索引名索引名”左侧的按钮以切换索引的左侧的按钮以切换索引的升序(用升序(用表示)或者降序(用表示)或者降序(用表示)。如图表示)。如图2-14所所示,为示,为spxx商品信息表创建了商品信息表创建了4个不同类型的索引:个不同类型的索引: 图图2-14 创建结构复合索引创建结构复合索引第一,第一, 索引名为索引名为spbh,索引类型为索引

90、类型为“候选索引候选索引”,索引表达式为索引表达式为spbh,为升序。为升序。第二,第二, 索引名为索引名为spmc,索引类型为索引类型为“普通索引普通索引”,索引表达式为索引表达式为spmc,为降序。为降序。第三,第三, 索引名为索引名为pp,索引类型为索引类型为“惟一索引惟一索引”,索,索引表达式为引表达式为pp,筛选条件为筛选条件为xsdj10,为升序。在创为升序。在创建索引时,建索引时,“筛选筛选”用于指定记录参加索引的条件,用于指定记录参加索引的条件,即哪些记录参加索引。即哪些记录参加索引。第四,第四, 索引名为索引名为pp_xh,索引类型为索引类型为“惟一索引惟一索引”,索引表达式

91、为索引表达式为pp+xh,为升序。为升序。 用命令创建结构复合索引。在使用用命令创建结构复合索引。在使用CREATE TABLE-SQL命令创建数据表,或者使用命令创建数据表,或者使用ALTER TABLE-SQL命令修改表结构时,均可以通过使用有命令修改表结构时,均可以通过使用有关的子句创建索引。对于在当前工作区中打开的数据关的子句创建索引。对于在当前工作区中打开的数据表,用户也可以使用表,用户也可以使用INDEX命令创建数据表的索引。命令创建数据表的索引。格式如下:格式如下: INDEX ON eExpression TO TAG TagName FOR lExpressiom ASCEN

92、DING|DESCENDING UNIQUE|CANDIDATE说明:说明: TAG: 指定建立或追加标识的标识名,如索指定建立或追加标识的标识名,如索引名,只对建立复合索引文件时有效。引名,只对建立复合索引文件时有效。FOR: 用于筛选参加索引的记录。用于筛选参加索引的记录。ASCENDING和和DESCENDING: 指定为升序或降序,指定为升序或降序,默认为升序。默认为升序。UNIQUE和和CANDIDATE用于指定索引类型为惟一索用于指定索引类型为惟一索引还是候选索引,默认时表示普通索引。引还是候选索引,默认时表示普通索引。例如:例如: USE spxxINDEX ON spbh TA

93、G SPBH DESCNDING CANDIDATE以字段以字段spbh为关键字创建索引名为为关键字创建索引名为SPBH,顺序为降序,索引类型为候选索引的结构复顺序为降序,索引类型为候选索引的结构复合索引。合索引。(4) 索引的修改和删除索引的修改和删除结构复合索引文件同数据表同步打开,在对数据表进结构复合索引文件同数据表同步打开,在对数据表进行插入、删除、更新操作时,由系统来维护这些索引,行插入、删除、更新操作时,由系统来维护这些索引,这样系统将在维护这些索引时花费时间,因此索引数这样系统将在维护这些索引时花费时间,因此索引数的多少将影响系统的运行效率,特别对一些不常用的的多少将影响系统的运

94、行效率,特别对一些不常用的索引,可以临时建立,不用时删除或修改。索引,可以临时建立,不用时删除或修改。对于结构复合索引,索引的修改和删除均可以使用对于结构复合索引,索引的修改和删除均可以使用“表设计器表设计器”和命令的方式修改。和命令的方式修改。在在“表设计器表设计器”的对话框中,可以直接修改索引的标的对话框中,可以直接修改索引的标识名、类型以及表达式等,可以将光条显示在要删除识名、类型以及表达式等,可以将光条显示在要删除的索引项上,单击的索引项上,单击“删除删除”命令按钮,即可实现索引命令按钮,即可实现索引的删除功能。的删除功能。用命令方式来修改索引,如果不修改索引标识,可以用命令方式来修改

95、索引,如果不修改索引标识,可以再用再用INDEX命令建立同标识名的索引,当系统提示命令建立同标识名的索引,当系统提示“标识已经存在,改写吗?标识已经存在,改写吗?”时,选择时,选择“是是”,则把,则把原索引覆盖,也就实现了对原索引的修改。原索引覆盖,也就实现了对原索引的修改。用命令方式删除索引,其格式如下:用命令方式删除索引,其格式如下: DELETE TAG TagName,TagName2或者或者DELETE TAG ALL其中,索引标识名其中,索引标识名TagName用于指定要从结构复合用于指定要从结构复合索引文件中删除的索引标识,即索引名,此格式中表索引文件中删除的索引标识,即索引名,

96、此格式中表明可以一次删除多个,索引名之间用逗号间隔;短语明可以一次删除多个,索引名之间用逗号间隔;短语ALL是从结构复合索引文件中删除所有标识,并从磁是从结构复合索引文件中删除所有标识,并从磁盘上删除该索引文件。盘上删除该索引文件。为了安全起见,如果删除一个主索引标识或者候选索为了安全起见,如果删除一个主索引标识或者候选索引标识,而且当前系统环境设置为引标识,而且当前系统环境设置为SET SAFETY ON,在你删除该索引时,系统会显示是否删除的确认对在你删除该索引时,系统会显示是否删除的确认对话框。话框。例如:例如: 删除商品信息表删除商品信息表spxx中的索引名为中的索引名为spbh的索的

97、索引。引。USE spxxDELETE TAG spbh(5) 索引的打开索引的打开使用索引的意义在于使得记录可以灵活地按照某一个使用索引的意义在于使得记录可以灵活地按照某一个关键字或表达式的升序或降序排列,以便提高记录的关键字或表达式的升序或降序排列,以便提高记录的查询速度。如前所述,记录的记录号顺序是在记录输查询速度。如前所述,记录的记录号顺序是在记录输入时建立的,也称为记录的物理顺序,记录的物理顺入时建立的,也称为记录的物理顺序,记录的物理顺序是单一的;而按某个关键字或表达式索引的顺序可序是单一的;而按某个关键字或表达式索引的顺序可以称为记录的逻辑顺序,一张数据可以建立多个索引,以称为记

98、录的逻辑顺序,一张数据可以建立多个索引,也就意味着一张数据表可以有多个逻辑顺序。当索引也就意味着一张数据表可以有多个逻辑顺序。当索引建立后,在打开索引之前,数据表呈现的记录顺序仍建立后,在打开索引之前,数据表呈现的记录顺序仍然按照记录号的物理顺序排列;当打开任何一个存在然按照记录号的物理顺序排列;当打开任何一个存在的索引并设置为主控索引,则这个索引的逻辑顺序优的索引并设置为主控索引,则这个索引的逻辑顺序优先于物理顺序,此时记录的顺序即为该索引的顺序,先于物理顺序,此时记录的顺序即为该索引的顺序,也就是记录指针移动的顺序。也就是记录指针移动的顺序。打开一张数据表的同时,可以打开多个索引,但是要打

99、开一张数据表的同时,可以打开多个索引,但是要决定或访问数据表中记录的顺序,还要将一个索引设决定或访问数据表中记录的顺序,还要将一个索引设置为主控索引,即此时该索引的顺序为该数据表的逻置为主控索引,即此时该索引的顺序为该数据表的逻辑顺序,也就是该索引对数据表的显示和访问顺序进辑顺序,也就是该索引对数据表的显示和访问顺序进行控制。行控制。值得注意的一点是,虽然结构复合索引是随数据表的值得注意的一点是,虽然结构复合索引是随数据表的打开而自动打开的,但是复合索引中的任何一个索引打开而自动打开的,但是复合索引中的任何一个索引都不会被自动设置为主控索引,此时,数据表中的记都不会被自动设置为主控索引,此时,

100、数据表中的记录仍然按照记录的物理顺序显示和访问。除非在打开录仍然按照记录的物理顺序显示和访问。除非在打开数据表时指定某一索引标识为主控索引,或者在数据数据表时指定某一索引标识为主控索引,或者在数据表打开后,再用其他命令设置主控索引。表打开后,再用其他命令设置主控索引。 打开数据表同时指定主控索引。在打开数据表同时指定主控索引。在USE命令中使命令中使用用ORDER子句,可以打开数据表的同时指定主控索子句,可以打开数据表的同时指定主控索引。引。例如:例如: USE spxx ORDER spbh&在打开商品信息在打开商品信息表的同时指定主控索引为表的同时指定主控索引为spbh。 打开数据表之后打

101、开数据表之后再设置主控索引。数据表打开后,可以通过操作界面再设置主控索引。数据表打开后,可以通过操作界面方式或者命令方式设置主控索引。方式或者命令方式设置主控索引。通过操作界面方式设置主控索引。分两种情况:通过操作界面方式设置主控索引。分两种情况: 如如果数据处于浏览状态,设置主控索引是通过菜单果数据处于浏览状态,设置主控索引是通过菜单“表表”|“属性属性”命令,打开命令,打开“工作区属性工作区属性”对话框,在对话框,在“索引顺序索引顺序”下拉列表框中选择一个索引作为主控索下拉列表框中选择一个索引作为主控索引;当数据表已经打开但不处于浏览状态时,设置主引;当数据表已经打开但不处于浏览状态时,设

102、置主控索引是在控索引是在“数据工作期数据工作期”窗口中选择需要设置主控窗口中选择需要设置主控索引的数据表别名,单击索引的数据表别名,单击“属性属性”按钮,然后在按钮,然后在“工作属性工作属性”对话框中进行设置。对话框中进行设置。通过命令方式设置主控索引。在数据表已经被打开后,通过命令方式设置主控索引。在数据表已经被打开后,用用SET ORDER 命令设置数据表主控索引。命令格式命令设置数据表主控索引。命令格式如下:如下: SET ORDER TO TagName IN nWorkArea |cTableAlias ASCENDING | DESCENDING其中索引名其中索引名TagName用

103、于指定主控索引,默认时取用于指定主控索引,默认时取消主控索引;消主控索引;ASCENDING与与DESCENDING用于指用于指定显示或存取数据表的顺序为升序还是降序,它们不定显示或存取数据表的顺序为升序还是降序,它们不改变索引与索引文件。改变索引与索引文件。例如:例如: USE spxxSET ORDER TO spbh DESCENDING& 设置索引设置索引名名spbh为主控索引,顺序为降序为主控索引,顺序为降序SET ORDER TO & 取消主控索引,此时数据表取消主控索引,此时数据表的顺序为物理顺序的顺序为物理顺序(6) 利用索引定位记录利用索引定位记录前面提到,建立索引的意义在于

104、提高记录的查询速度,前面提到,建立索引的意义在于提高记录的查询速度,利用索引文件来实施查询是一种快速的查询,查询的利用索引文件来实施查询是一种快速的查询,查询的结果是将记录指针定位。这种定位也可以认为是一种结果是将记录指针定位。这种定位也可以认为是一种条件定位,通过命令方式来实现其功能。命令格式如条件定位,通过命令方式来实现其功能。命令格式如下:下: SEEK eExpression ORDER TagNameASCENDING | DESCENDING IN nWorkArea | cTableAlias其中表达式其中表达式eExpression用于指定用于指定SEEK搜索的索引关搜索的索引

105、关键字,其他短语与前面所出现的内容含义相同。键字,其他短语与前面所出现的内容含义相同。SEEK命令的功能是在当前数据表中搜索指定表达式命令的功能是在当前数据表中搜索指定表达式的值在此出现的记录,这条记录的索引关键字必须与的值在此出现的记录,这条记录的索引关键字必须与指定的表达式匹配。指定的表达式匹配。SEEK命令能够查找字符型、数命令能够查找字符型、数值型、日期型、逻辑型表达式的值。值型、日期型、逻辑型表达式的值。例如:例如: USE spxx ORDER spbh & 打开商品信息表打开商品信息表并将索引名并将索引名spbh设置为主控索引设置为主控索引sp=110207 & 将字符串将字符串

106、110207赋值给内存变赋值给内存变量量spSEEK sp & 在当前数据表中搜索商品编号与在当前数据表中搜索商品编号与sp变量中匹配的记录变量中匹配的记录SEEK 210114 & 在当前数据表中搜索与商品编在当前数据表中搜索与商品编号号210114匹配的记录当通过匹配的记录当通过SEEK命令找到与搜索关命令找到与搜索关键字相匹配的记录,则记录指针将定位在找到的第一键字相匹配的记录,则记录指针将定位在找到的第一个记录的位置上,此时个记录的位置上,此时RECNO()()函数返回该记录函数返回该记录的记录号;的记录号;FOUND()()函数返回逻辑函数返回逻辑.T.,EOF()()函数返回逻辑函

107、数返回逻辑.F.;如果找不到相匹配的记录,则记如果找不到相匹配的记录,则记录指针指向最后一个记录的后面,此时函数录指针指向最后一个记录的后面,此时函数RECON()()返回值为记录个数加返回值为记录个数加1,FOUND()()函数返回逻函数返回逻辑辑.F.,EOF()()函数返回逻辑函数返回逻辑.T.。商品信息表通过创建数据表结构以及输入商品信息商品信息表通过创建数据表结构以及输入商品信息(即数据记录)以后,如果发现商品信息有错误或者(即数据记录)以后,如果发现商品信息有错误或者需要增加商品信息或者需要将多余的不要的商品信息需要增加商品信息或者需要将多余的不要的商品信息从表中去掉,则可以对商品

108、信息进行修改内容、插入从表中去掉,则可以对商品信息进行修改内容、插入记录和删除记录的操作。其中记录的插入可以通过输记录和删除记录的操作。其中记录的插入可以通过输入记录、追加记录或者插入记录的方法,既可以通过入记录、追加记录或者插入记录的方法,既可以通过界面的方式,也可以通过命令的方式实现操作,此处界面的方式,也可以通过命令的方式实现操作,此处不再赘述,可参见输入记录部分的内容。不再赘述,可参见输入记录部分的内容。2.4 更新商品信息表更新商品信息表修改商品信息的实质是对数据表的记录数据进行修改修改商品信息的实质是对数据表的记录数据进行修改的操作,既可以采用界面方式,也可以采用命令方式。的操作,

109、既可以采用界面方式,也可以采用命令方式。1. 利用界面方式修改商品信息利用界面方式修改商品信息如果商品信息表如果商品信息表spxx已经被打开,而且这张表所在的已经被打开,而且这张表所在的工作区为当前工作区,则打开商品信息表的浏览窗口工作区为当前工作区,则打开商品信息表的浏览窗口或者编辑窗口后,就可以在屏幕上直接通过记录定位或者编辑窗口后,就可以在屏幕上直接通过记录定位对商品信息进行修改。如图对商品信息进行修改。如图2-15所示。所示。2.4.1 修改商品信息修改商品信息图图2-15 在浏览窗口修改商品信息在浏览窗口修改商品信息系统还提供一个系统还提供一个“替换字段替换字段”的功能。对于那些需要

110、的功能。对于那些需要对所有记录或满足某种条件的记录的某个字段内容进对所有记录或满足某种条件的记录的某个字段内容进行有规律的修改,则可以通过行有规律的修改,则可以通过“替换字段替换字段”的功能实的功能实现现“批量修改批量修改”。例如将商品信息表中的所有记录的。例如将商品信息表中的所有记录的商品编号增加一位商品编号增加一位0,并且增加在末位,可以在浏览,并且增加在末位,可以在浏览状态下,打开菜单状态下,打开菜单“表表”|“替换字段替换字段”,打开如图,打开如图2-16所示的所示的“替换字段替换字段”对话框,在该对话框中选择对话框,在该对话框中选择和输入字段替换的有关要求:和输入字段替换的有关要求:

111、 如字段为如字段为spbh,替换替换为为spbh+0,作用范围为作用范围为All,最后按最后按“替换替换”命令命令按钮实现批量替换。按钮实现批量替换。图图2-16“替换字段替换字段”对话框对话框2. 使用命令方式修改商品信息使用命令方式修改商品信息一般有两种修改记录的命令:一般有两种修改记录的命令: UPDATE-SQL命令和命令和REPLACE命令。命令。UPDATE-SQL命令的格式如下:命令的格式如下: UPDATE TableName SET Column_Name1=eExpression1 ,Column_Name2=eExpression2, WHERE FilterCondit

112、ion该命令的功能是修改指定数据表中满足该命令的功能是修改指定数据表中满足WHERE条件条件子句的数据。其中子句的数据。其中SET子句用于指定列和修改的值,子句用于指定列和修改的值,WHERE用于指定更新的行,如果省略用于指定更新的行,如果省略WHERE子句,子句,则指数据表中所有行。则指数据表中所有行。命令格式中具体参数说明:命令格式中具体参数说明: TableName用于指定修改记录的数据表;用于指定修改记录的数据表;Column_Name=eExpression用于指定要修改的字段用于指定要修改的字段以及这些字段的新值;以及这些字段的新值;值得一提的是,用该命令修改数据表时,被修改的数值

113、得一提的是,用该命令修改数据表时,被修改的数据不必事前打开。据不必事前打开。例如:例如: 修改商品信息表中所有记录的修改商品信息表中所有记录的spbh字段。字段。UPDATE spxx SET spbh=spbh+0REPLACE命令命令格式如下:格式如下: REPLACE FieldName1 WITH eExpression1 ADDITIVE,FieldName2 WITH eExpression2ADDITIVEScope FOR lExpression该命令的功能是对当前工作区中的数据表进行字段值该命令的功能是对当前工作区中的数据表进行字段值的替换操作。的替换操作。其中,字段名其中,

114、字段名FieldName与表达式与表达式eExpression用于指用于指定需要修改的字段以及这些字段的新值;定需要修改的字段以及这些字段的新值;ADDITIVE短语仅对备注型字段有效,使用时表示替换的内容追短语仅对备注型字段有效,使用时表示替换的内容追加到原备注中,否则替换原内容;加到原备注中,否则替换原内容;FOR子句和范围子句和范围Scope用于指定需要修改的记录范围,当这两个子句用于指定需要修改的记录范围,当这两个子句默认时表示仅对当前记录进行替换。默认时表示仅对当前记录进行替换。需要注意的是,用该命令修改数据表时,被修改的数需要注意的是,用该命令修改数据表时,被修改的数据表必须已经打

115、开,并且在命令执行后,记录指针位据表必须已经打开,并且在命令执行后,记录指针位于指定范围的结尾。于指定范围的结尾。例如:例如: 修改商品信息表中所有记录的修改商品信息表中所有记录的spbh字段。字段。USE spxxREPLACE ALL spbh WITH spbh+0USE删除信息是一件非常慎重的事情,因此,删除一个记删除信息是一件非常慎重的事情,因此,删除一个记录需要分两步执行:录需要分两步执行: 第一步是逻辑删除,所谓逻辑第一步是逻辑删除,所谓逻辑删除,就是在记录最前边标上一个黑色的删除,就是在记录最前边标上一个黑色的“ ”标记,标记,这个标记被称为逻辑删除标记,凡是被标上逻辑删除这个

116、标记被称为逻辑删除标记,凡是被标上逻辑删除标记的记录,只能显示,不能参加各种运算、修改和标记的记录,只能显示,不能参加各种运算、修改和替换等操作;第二步是物理删除,所谓物理删除,就替换等操作;第二步是物理删除,所谓物理删除,就是将标有逻辑删除标志的那些记录彻底删除,也就是是将标有逻辑删除标志的那些记录彻底删除,也就是说,凡是被物理删除的记录是永远不能被恢复,而只说,凡是被物理删除的记录是永远不能被恢复,而只有逻辑删除的记录才可以进行恢复操作。有逻辑删除的记录才可以进行恢复操作。2.4.2 删除商品信息删除商品信息1. 设置逻辑删除标志设置逻辑删除标志(1) 在浏览窗口直接操作在浏览窗口直接操作

117、当商品信息表当商品信息表spxx已经显示在浏览窗口时,只要用鼠已经显示在浏览窗口时,只要用鼠标单击记录最左边的小框,使其称为黑色,该记录就标单击记录最左边的小框,使其称为黑色,该记录就已经被逻辑删除,黑色的小框即为删除标志,如图已经被逻辑删除,黑色的小框即为删除标志,如图2-17所示。所示。图图2-17在浏览窗口直接设置逻辑删除标记在浏览窗口直接设置逻辑删除标记(2) 菜单操作逻辑删除记录菜单操作逻辑删除记录在浏览窗口中使用菜单在浏览窗口中使用菜单“表表”|“删除记录删除记录”功能,功能,打开打开“删除删除”对话框,如图对话框,如图2-18所示,在对话框中的所示,在对话框中的选项如前所述,当选

118、择好所有的选项后,单击选项如前所述,当选择好所有的选项后,单击“删除删除”命令按钮,则浏览窗口的数据表的选定记录最左边命令按钮,则浏览窗口的数据表的选定记录最左边将出现逻辑删除标记。将出现逻辑删除标记。图图2-18“删除删除”对话框对话框(3) 使用命令方式使用命令方式DELETE命令格式如下:命令格式如下: DELETE Scope FOR lExpression IN nWorkArea | cTableAlias其中,其中,Scope为为4种范围之一,前面已述;工作区号以种范围之一,前面已述;工作区号以及数据表别名用于指定进行逻辑删除的数据表,默认及数据表别名用于指定进行逻辑删除的数据表

119、,默认时对当前工作区中的数据表进行操作;无范围、无条时对当前工作区中的数据表进行操作;无范围、无条件表达式时,表示仅对当前记录进行逻辑删除;有条件表达式时,表示仅对当前记录进行逻辑删除;有条件、无范围时,其默认范围为件、无范围时,其默认范围为ALL。例如:例如: 对商品信息表中的所有销售单价小于对商品信息表中的所有销售单价小于10元的元的记录进行逻辑删除,即加注删除标志。记录进行逻辑删除,即加注删除标志。USE spxxDELETE FOR xsdj10 DELETE-SQL命令格式如命令格式如下:下: DELETE FROM TableName WHERE FilterCondition该命

120、令可以在不预先打开数据表的情况下删除指定表该命令可以在不预先打开数据表的情况下删除指定表的记录。格式中的记录。格式中WHERE子句表示对所有满足条件的子句表示对所有满足条件的记录加注删除标记,默认时表示所有记录。记录加注删除标记,默认时表示所有记录。例如:例如: 对商品信息表中的所有销售单价小于对商品信息表中的所有销售单价小于10元的元的记录进行逻辑删除,即加注删除标记。记录进行逻辑删除,即加注删除标记。DELETE FROM spxx WHERE xsdj10 2. 恢复删除记录恢复删除记录经过逻辑删除的记录,若用户需要恢复,则可以进行经过逻辑删除的记录,若用户需要恢复,则可以进行恢复删除记

121、录的操作。恢复删除记录的操作。在数据表的浏览窗口中,只要单击黑色的小框,小框在数据表的浏览窗口中,只要单击黑色的小框,小框变为白色,即实现了恢复删除记录的功能;也可以使变为白色,即实现了恢复删除记录的功能;也可以使用菜单用菜单“表表”|“恢复记录恢复记录”功能,打开功能,打开“恢复记录恢复记录”对话框,如图对话框,如图2-19所示,用户可以在该对话框中选所示,用户可以在该对话框中选择作用范围、记录筛选条件等,然后单击择作用范围、记录筛选条件等,然后单击“恢复记录恢复记录”按钮,系统则自动将满足条件的那些记录恢复。按钮,系统则自动将满足条件的那些记录恢复。图图2-19“恢复记录恢复记录”对话框对

122、话框恢复记录的命令形式是:恢复记录的命令形式是: RECALL Scope lExpression其中,无范围、无条件表达式时,表示仅恢复当前记其中,无范围、无条件表达式时,表示仅恢复当前记录;有条件表达式、无范围时,范围默认为录;有条件表达式、无范围时,范围默认为All。例如:例如: 将上述商品信息表中作过删除标记的记录恢将上述商品信息表中作过删除标记的记录恢复。复。USE spxxRECALL FOR xsdj103. 彻底删除彻底删除彻底删除也称为物理删除,凡是被物理删除后的记录彻底删除也称为物理删除,凡是被物理删除后的记录不能再恢复。具体操作可以通过浏览窗口菜单操作,不能再恢复。具体操

123、作可以通过浏览窗口菜单操作,也可以通过命令彻底删除。数据表处于浏览状态,使也可以通过命令彻底删除。数据表处于浏览状态,使用菜单用菜单“表表”|“彻底删除彻底删除”进行物理删除。对在当进行物理删除。对在当前工作区内的数据进行物理删除,也可以使用命令前工作区内的数据进行物理删除,也可以使用命令PACK。例如:例如: 彻底删除商品销售表中的商品名称为钢笔的彻底删除商品销售表中的商品名称为钢笔的记录。记录。USE spxxDELETE FOR spmc=钢笔钢笔PACK如果需要彻底删除在当前工作区中打开的数据如果需要彻底删除在当前工作区中打开的数据表的所有记录,可以用表的所有记录,可以用ZAP命令,该

124、命令将删除所有命令,该命令将删除所有记录,不管记录是否有删除标记。因为这也是一种物记录,不管记录是否有删除标记。因为这也是一种物理删除,所以在使用时应该谨慎。理删除,所以在使用时应该谨慎。需要注意的是,需要注意的是,PACK命令与命令与ZAP命令都需要当前工命令都需要当前工作区的数据表以独占方式打开。作区的数据表以独占方式打开。4. 有删除标志的记录的访问有删除标志的记录的访问可以使用可以使用SET DELETED 来指定来指定Visual FoxPro是否是否处理标有删除标记的记录。格式如下:处理标有删除标记的记录。格式如下: SET DELETED ON | OFF其中。其中。ON表示忽略

125、标有删除标记的记录;表示忽略标有删除标记的记录;OFF(为为系统默认)表示允许访问标有删除标记的记录。系统默认)表示允许访问标有删除标记的记录。2.5.1有关数据表操作的常用函数有关数据表操作的常用函数在数据表的使用过程中,数据表操作函数的使用能解在数据表的使用过程中,数据表操作函数的使用能解决很多菜单不能解决的问题,如测试文件结束、测试决很多菜单不能解决的问题,如测试文件结束、测试关键字是否找到等等,函数的使用极大地丰富了数据关键字是否找到等等,函数的使用极大地丰富了数据表的操作和功能。在上面数据表的操作过程中,已经表的操作和功能。在上面数据表的操作过程中,已经介绍了测试文件结束函数介绍了测

126、试文件结束函数EOF()、()、测试文件开始函测试文件开始函数数BOF()、()、记录号测试函数记录号测试函数RECNO()()以及记录以及记录查找函数查找函数FOUND()。()。用在数据表中的常用函数还用在数据表中的常用函数还有如下几种。有如下几种。2.5 数据表相关知识数据表相关知识1. SELECT()()测试工作区号函数,格式如下:测试工作区号函数,格式如下: SELECT(0 | 1 | cTableAlias)其中,参数其中,参数0用于返回当前工作区号;用于返回当前工作区号;1表示返回当前表示返回当前未使用的最大工作区号;别名未使用的最大工作区号;别名cTableAlias指返回

127、该数指返回该数据表所在的工作区号,使用时别名必须加引号(下同)据表所在的工作区号,使用时别名必须加引号(下同)。2. USED()()该函数用于测试一张数据表的别名是否已经被使用,该函数用于测试一张数据表的别名是否已经被使用,或者在指定的工作区中是否有数据表打开。格式如下:或者在指定的工作区中是否有数据表打开。格式如下: USED(nWorkArea | cTableAlias)其中,工作区号与别名默认时,表示当前工作区。其中,工作区号与别名默认时,表示当前工作区。3. ALIAS()()该函数用于返回当前或指定工作区数据表的别名。格该函数用于返回当前或指定工作区数据表的别名。格式如下:式如下

128、: ALIAS(nWorkArea)其中工作区号默认表示当前工作区。其中工作区号默认表示当前工作区。4. FIELD()()该函数用于返回已经打开的数据表指定序号的字段名。该函数用于返回已经打开的数据表指定序号的字段名。格式如下:格式如下: FIELD(nFieldNumber,nWorkArea | cTableAlias)其中,字段序号其中,字段序号nFieldNumber是指数据表结构建立是指数据表结构建立时的字段顺序号,第一个字段的序号为时的字段顺序号,第一个字段的序号为1;工作区号;工作区号与别名默认时,表示当前工作区。与别名默认时,表示当前工作区。5. FCOUNT()()该函数用

129、于返回已经打开数据表的字段个数。格式如该函数用于返回已经打开数据表的字段个数。格式如下:下: FCOUNT(nWorkArea | cTableAlias)其中,工作区号与别名默认时,表示当前工作区中的其中,工作区号与别名默认时,表示当前工作区中的表。表。6. DELETE()()该函数用于测试数据表的当前记录是否带有删除标记。该函数用于测试数据表的当前记录是否带有删除标记。如果函数返回如果函数返回.T.,说明记录带有删除标记,否则不说明记录带有删除标记,否则不带删除标记。该函数无参数。带删除标记。该函数无参数。利用利用COPY TO 命令可以将当前工作区中已经打开的命令可以将当前工作区中已经

130、打开的数据表中的数据复制到其他数据表文件或其他类型的数据表中的数据复制到其他数据表文件或其他类型的文件中。文件中。COPY TO命令的格式:命令的格式: COPY TO FileName FIELDS FieldList FOR lExpression TYPE SDF | XLS | DELIMITED WITH Delimiter | WITH BALANK |WITH TAB | WITH CHARACTER Delimiter2.5.2 数据的复制数据的复制说明如下:说明如下: FileName: 指定指定COPY TO要创建的新文件名。若文要创建的新文件名。若文件名中不包含扩展名,则

131、指定扩展名为文件类型的默件名中不包含扩展名,则指定扩展名为文件类型的默认扩展名。若不指定文件类型,则认扩展名。若不指定文件类型,则COPY TO创建一创建一张新表,并且用默认扩展名张新表,并且用默认扩展名.dbf。FIELDS FieldList: 指定需要复制到新文件的字段。指定需要复制到新文件的字段。若省略若省略FIELDS FieldList,则将所有字段复制到新文则将所有字段复制到新文件。若要创建的文件不是数据表,则即使备注字段名件。若要创建的文件不是数据表,则即使备注字段名包含在字段列表中,也不把备注字段复制到新文件。包含在字段列表中,也不把备注字段复制到新文件。SCOPE: 指定要

132、复制到新文件的记录范围。只有在指定要复制到新文件的记录范围。只有在范围内的记录才能被复制。范围内的记录才能被复制。FOR lExpression: 指定只复制逻辑条件指定只复制逻辑条件lExpression为为.T.的记录到文件中。的记录到文件中。SDF: 表示创建表示创建SDF(系统数据格式)文件。系统数据格式)文件。SDF文文件是件是ASCII文本文件,其中记录都有固定长度,并以文本文件,其中记录都有固定长度,并以回车和换行符结尾,字段不分隔,若不包含扩展名,回车和换行符结尾,字段不分隔,若不包含扩展名,则指定则指定SDF文件的扩展名为文件的扩展名为.txt。XLS: 表示创建表示创建Ex

133、cel电子表格文件。当前数据表中电子表格文件。当前数据表中的每个字段变为电子表格中的一列,每条记录变为一的每个字段变为电子表格中的一列,每条记录变为一行。若不包含文件扩展名,则新建电子表格的文件扩行。若不包含文件扩展名,则新建电子表格的文件扩展名为展名为.xls。DELIMITED: 创建分隔文件,分隔文件是创建分隔文件,分隔文件是ASCII文文本文件,其中每条记录以一个回车和换行符结尾,一本文件,其中每条记录以一个回车和换行符结尾,一般的字段分隔符是逗号。因为字符型数据可能般的字段分隔符是逗号。因为字符型数据可能包含逗号,所以另外用双引号分隔字符型字段。除非包含逗号,所以另外用双引号分隔字符

134、型字段。除非另外指定,否则多数新建另外指定,否则多数新建DELIMITED文件的扩展名文件的扩展名都指定为都指定为.txt。DELIMITED WITH Delimiter: 创建用字符代替引创建用字符代替引号分隔字符型字段的分隔文件。分隔字符型字段的字号分隔字符型字段的分隔文件。分隔字符型字段的字符用符用Delimiter指定。指定。DELIMITED WITH BLANK: 创建用空格代替逗号创建用空格代替逗号分隔字符型字段的分隔文件。分隔字符型字段的分隔文件。DELIMITED WITH TAB: 创建用制表符代替逗号创建用制表符代替逗号分隔字符型字段的分隔文件。分隔字符型字段的分隔文件

135、。WITH CHARACTER Delimiter: 创建用指定的字创建用指定的字符来代替逗号分隔字符型字段的分隔文件。符来代替逗号分隔字符型字段的分隔文件。利用利用COUNT、SUM和和AVERAGE命令可以对数据表命令可以对数据表数据进行统计。数据进行统计。COUNT命令用于统计记录数,其格式如下:命令用于统计记录数,其格式如下: COUNT Scope FOR lExpression TO VarName其命令功能是统计指定范围内、满足指定条件的记录其命令功能是统计指定范围内、满足指定条件的记录个数,赋值给指定内存变量。个数,赋值给指定内存变量。SUM命令用于统计某数值字段值的总和,其格

136、式如命令用于统计某数值字段值的总和,其格式如下:下: SUM nExpression Scope FOR lExpression TO VarName2.5.3 数据的统计数据的统计其命令功能是将指定范围内、满足条件的字段值总和其命令功能是将指定范围内、满足条件的字段值总和赋给指定内存变量。赋给指定内存变量。AVERAGE命令用于统计某数值型字段值的平均值,命令用于统计某数值型字段值的平均值,其命令格式如下:其命令格式如下: AVERAGE nExpression Scope FOR lExpression TO VarName其命令功能是将指定范围内、满足条件的字段值的平其命令功能是将指定范围内、满足条件的字段值的平均值赋给指定内存变量。均值赋给指定内存变量。略略习题习题上机实验(略)上机实验(略)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号