当前位置:首页 >> 从业资格考试 >>

二级VFP课件 表的建立与基本操作(精简版)


第三章
表的建立与基本操作

第三章 表的建立与基本操作

3.1 3.2 3.3 3.4 3.5 3.6

创建数据表 表结构的编辑 表的基本操作 排序与索引 索引查找 记录的统计与计算

第三章 表的建立与基本操作
?

3.1 创建数据表
?

数据库实际上是由多个表构成的集合,数据库的操作实质上是 表的操作。Visual FoxPro中表一般包含在数据库中,称为数据 库表。表也可以脱离数据库独立存在,称为自由表。从数据库 内部创建的表,总是数据库表;直接创建的表是自由表。自由 表可以随时添加到数据库中,成为数据库表;数据库表也可以 随时移出数据库,成为自由表。

第三章 表的建立与基本操作
?

3.1.1 设计表结构
?

?

在利用Visual FoxPro建立一个新表之前,应当先分析和设计表, 了解表中记录要表示怎样的信息以及表的目的,据此设计表中 的字段,从而确定表的结构。 对学生档案数据库,建立“学生”表来存储学生的个人信息, 包括学号、姓名、性别、出生日期、简历等,这些内容是相对 独立的,应由不同的字段来表示。而关于学生的成绩与每人选 修的课程相关,VF中建立的表是二维关系表,“学生”表如果 太复杂不利于操作,所以成绩和课程需要另外建表来处理。如 果想知道学生的总体信息,只要将几个相关表中的数据组合, 即可得到。据此,建立表3.1、表3.2、表3.3三个表分别表示学 生个人信息、课程信息和成绩信息。

第三章 表的建立与基本操作
?

3.1.1 设计表结构
?

?
?

? ?

Visual FoxPro系统规定其表文件最多可由255个字段组成。在 设计表结构时,应遵循Visual FoxPro系统对字段名、类型、宽 度和小数位的规定。 (1)字段名 字段名又称字段变量,它的命名规则与内存变量相同,最长为 10个字符,允许由字母、汉字、数字和下划线组成,但必须以 字母或汉字开头,中间不能有空格。 (2)字段类型 表中的每一个字段由于其数据代表的意义不同,因而都有特定 的数据类型,例如姓名、成绩、出生日期这3个字段的类型是各 有相同的,在Visual FoxPro中,分别用字符型、数值型或整型、 日期型来表示的。熟悉各种数据类型可以帮助我们更方便地对 表进行操作。

第三章 表的建立与基本操作
?

3.1.1 设计表结构
? ?

?

(3)字段宽度 对每个字段都需要确定其宽度,字段宽度表示字段中可以存放 数据的最大字符数。 各种数据类型的字段宽度如表3.4所示,除字符型、二进制字符 型、数值型和浮动型外,其它9种字段宽度是固定不变的。

第三章 表的建立与基本操作
?

字段宽度
数据类型 字符型 货币型 数值型 浮动型 整型 双精度型 日期型 日期时间型 逻辑型 备注型 通用型 二进制字符型 二进制备注型 符 号 C Y N F/n I/n B/n D T L M G C M 默认宽 4 度 8 8 8 4 8 8 8 1 4 4 4 4 说 明 可表示 1~254 个字符 货币数量 包括数字和小数点,正 同数值型 (+)负号包括在字段宽 整型数据 度内 用于精确计算的数值 日期 日期和时间 逻 辑 真 (.T.) 和 逻 辑 假 任何长度的正文 (.F.) OLE 对象 最多达 254 个字符的正 任何长度的正文或二进 文或二进制数据 制数据

第三章 表的建立与基本操作
(4)小数位数 数值型字段、双精度型字段、浮点型字段、货币型字段有小数 位。只有在需要设计时才规定小数位,否则这个规定可以省略。 小数位的最大宽度必须小于字段宽度减2,即要留出小数点前的 0和小数点。 另外,Visual FoxPro的表文件是真正含义的数据库表文件,所 以在设计自由表结构时,还需要考虑字段是否支持空值(NULL)、 如何建立索引等。

? ?

?

第三章 表的建立与基本操作
?

3.1.2 建立表结构
?

建立表结构有两种方式,一种是通过表设计器来建立,一种是通 过表向导在已有的表的基础上建立一个新表。本节主要说明表设计器 的建表步骤。 1、表设计器第一步:指定表名及保存位置 在图3.1的新建对话框中,选择表,单击“新建文件”,打开创建新文 件的对话框,图3.2所示,选定保存位置,输入表文件名(如本例中 “学生”),可以不输扩展名,系统会自动加上扩展名.dbf,单击 “保存”按钮。 2、表设计器第二步:在表设计器中输入各字段名,设置各字段的数据 类型、宽度、小数位数。 在图3.3(a)刚刚打开的表设计器中,输入表3.5中给定的内容,逐次输 入字段名、类型、宽度及小数位数,输入完毕的表结构如图3.3(b)所 示。

?

一、用表设计器建表
? ?

?

?

第三章 表的建立与基本操作

学生表的表结构

新建对话框

第三章 表的建立与基本操作
3、表设计器第三步:录入数据
完成图3.3(b)中各个字段值的设置之后,按“确定”按钮, 系统显示如图3.4的对话框,单击“是”,打开图3.5输入记录 窗口,表示立即输入记录值;如果单击“否”,结束表结构的 设计,以后再录入数据。 在图3.5中,各条记录之间用横线隔开,左边显示字段的名 称,用颜色块标识当前字段的输入区的大小。用户输完一条记 录后,系统自动定位到下一条记录。全部记录输入完毕后,关 闭编辑窗口,完成记录的录入操作,表创建完成。

?

第三章 表的建立与基本操作
?

二、用命令建表
? ? ? ? ? ?

在命令窗口中输入以下命令同样可以打开表设计器创建表。 命令格式: CREAT <表文件名[.DBF]> 如果要建立课程表,则在命令窗口键入命令: CREAT 课程.DBF 回车之后,系统同样打开图3.3的表设计器窗口,再按照前面同 样的步骤就可以建立课程表。 另外,还可以用表向导建立表,利用Visual FoxPro提供的样本 表,选择样本表中的结构和字段,构成所需的表结构。用向导 创建的表也可以在保存之后再使用表设计器修改。

?

第三章 表的建立与基本操作
? ?

3.2 表结构的编辑 3.2.1 表结构的修改
?

表建立之后,随着对表的操作和情况的变化,有时需要修改表 结构。例如,增加字段、删除字段,修改字段名、字段类型宽 度、小数位、是否允许空值等,学习索引之后还要添加、修改 或删除索引标识等。通常打开表设计器来修改表结构,也可以 命令方式来修改表结构。例如,在“学生”表增加“年龄”字 段,将奖学金改为数值型。

第三章 表的建立与基本操作
?

1、菜单方式
?

?

?

?

在“文件”菜单中选择“打开”命令,在“打开”对话框中选 择要打开的表,如双击打开“学生”表。 在“显示”菜单中选择“浏览学生”命令,打开“学生”表浏 览窗口。 再次选择“显示”菜单,选择“表设计器”命令,打开表设计 器,如图3.6选中“简历”字段,单击“插入”按钮,则在“简 历”字段前插入“新字段”,修改字段名称为“年龄”,字段 类型为“整型”,然后单击“确定”弹出图3.7示“是否永久修 改”,单击“是”。 注意:修改表结构同设计表结构类似,但在修改时要注意防止 数据的丢失。

第三章 表的建立与基本操作
?

2、命令方式
? ? ?

? ?

?

?

格式:MODIFY STRUCTURE 功能:打开表设计器修改表结构。 说明:在打开表以后,执行MODIFY STRUCTURE命令,将打开表设计器 对表结构进行修改。 注意: 修改字段类型时,并不完全转换字段的内容,或者根本不转换。例如, 如果将日期类型的字段转换成数值类型,字段内容是不转换的。 在更改表结构之前,Visual FoxPro自动备份当前表。在修改完以后, 将备份表中包含的数据追加到新修改的表结构中。如果表中有一个备 注字段,也将创建一个备注备份文件。表备份文件的扩展名为.BAK, 备注备份文件的扩展名是.TBK。 当修改一个具有备注字段的表结构时,备注文件的块大小设置为当前 的块大小。可以用SET BLOCKSIZE命令指定备注文件的块大小。

第三章 表的建立与基本操作
?

3.2.2 表结构的显示
? ? ?

? ?

?

? ?

格式1:DISPLAY STRUCTURE [IN <工作区号>/<别名>] 格式2:LIST STRUCTURE [IN <工作区号>/<别名>] 功能:两条命令的功能相同,都是显示当前打开的表文件的结构,只 是DISPLAY STRUCTURE分页显示,而LIST STRUCTURE连续滚动显示。 命令说明: 显示当前打开的表的字段结构,包括每个字段的名称、类型和宽度。 如果字段是数值型、双精度型、浮点型或货币型的,还将显示小数点 在字段中放置的位数,也支持显示空值。 显示表中当前的记录数和最近更新的日期。如果表中有一个相关备注 字段,则显示备注字段块的大小。 显示所有字段的总宽度和表的代码页。 如果建立了结构复合索引文件,则在字段名同行显示该索引的排列顺 序。

第三章 表的建立与基本操作
? ? ? ?

例如,显示“学生.DBF”表结构,可以使用下列命令: USE 学生 DISPLAY STRUCTURE 在图3.8中,总计的字节数为38,比各字段宽度之和多1个字节, 用来存放删除标记“*”。

第三章 表的建立与基本操作
? ?

3.3 表的基本操作 3.3.1 表的打开和关闭 只有刚刚创建的表是自动打开的,否则任何对表的操作, 首先应当打开表。在结束对表的操作后,应及时关闭表 文件,将内存中的数据存回磁盘。如果没有及时关闭文 件,由于人为的误操作或突然停电等因素,有可能造成 数据的破坏或损失。

第三章 表的建立与基本操作
? ?

一、表的打开
?

表文件的打开有两种方式:菜单方式和命令方式。

1、菜单方式。
? ? ?

选择“文件”菜单,单击“打开”命令。 单击“打开”按钮。 选择“窗口”菜单,选择“数据工作期”命令,在“数据工作 期”对话框中,单击“打开”按钮。采用上述几种菜单方式后, 均会出现“打开”对话框,双击要打开的表名后,即可打开表 文件。
格式:USE <表文件名> 功能:打开表文件名。

?

2、命令方式。
? ?

第三章 表的建立与基本操作
? ?

二、表的关闭
?

关闭表文件的方法有以下几种:

1、菜单方式
?

选择“窗口”菜单,选择“数据工作期”命令,在“数据工作 期”对话框中,选择表的别名后,单击“关闭”按钮。
使用不加表名的USE 命令,在当前工作区中关闭一个已打开的 表文件。 在一个工作区中打开另一个表时,原来在该工作区中打开的表 自动关闭。 CLOSE TABELS命令关闭在所有工作区打开的自由表。 CLEAR ALL、CLOSE ALL等命令也将关闭表文件。 正常退出Visual FoxPro将关闭一切文件。

?

2、命令方式。
?

?

? ?

?

第三章 表的建立与基本操作
例3.1 关闭表文件。 USE 学生 &&打开学生.DBF表文件 USE
&&不带任何选项的USE命令关闭当前工作区打开的学生.DBF文件
? ?

? ? ?

USE课程 &&打开课程.DBF表文件 USE成绩 &&在打开成绩.DBF时自动关闭原先打开的课程.DBF表文件

第三章 表的建立与基本操作
?

3.3.2 表的编辑与修改
?

? ? ? ?

打开表文件之后,Visual FoxPro主窗口没有任何显示信息,此 时应当打开浏览窗口才能查看表内容。打开浏览窗口有以下几 种方式: 在“项目管理器”中选定表后,单击“浏览”按钮。 在“数据工作期窗口”中选定表后,单击“浏览”按钮。 打开表后,在命令窗口中输入命令:BROWSE 或BROWSE LAST 打开表后,选择“显示”菜单命令,在下拉菜单中选择浏览命 令。

第三章 表的建立与基本操作
(1)添加记录 打开浏览窗口后,在图3.10的“表”菜单中 选择“追加新记录”或在“显示”菜单中选择 “追加方式”,浏览窗口尾部会增加一条空 白记录,光标此时定位在空白记录的第一 个字段,在此空白记录处输入新的记录值 (图3.9(b))。
?

表菜单

第三章 表的建立与基本操作
对 于 备 注 型 字 段 , 双 击 备 注 字 段 , 或 用 Ctrl+PageDown 、 Ctrl+PageUp命令,就会打开备注字段的编辑窗口,图3.11所示。 编辑完后,关闭该窗口,此时memo的第一个字母变成大写,即 Memo。 (2)修改记录 在浏览窗口中,单击要修改的字段就可以了。 (3)删除记录、 Visual FoxPro中的删除记录分为逻辑删除和物理删除两种,逻辑 删除只是将记录加上删除标记,并未真正删除,还可以恢复; 物理删除是从表中真正删除记录,无法恢复。

第三章 表的建立与基本操作
?

3.3.3 输入记录
?

?
? ? ? ? ? ? ? ?

在创建表时可以根据系统提示立即输入记录,也可以不输 入记录。没有记录的表叫空表,可以随时向空表追加记录,也 可以向已有记录的表追加记录。 一、创建时输入记录 见表设计器第三步,图3.5输入记录窗口。 二、添加记录 1、追加记录 APPEND命令可以在表的末尾增加一条或多条记录。 命令格式: APPEND [BLANK] [IN <工作区号>|<别名>][NOMENU] 参数说明: BLANK:在当前表的末尾增加一条空白记录。

第三章 表的建立与基本操作
IN <工作区>:指定表的工作区 IN <别名>:指定表的别名 忽略该选项,新记录添加到当前工作区的表中 NOMENU:禁止在系统菜单条上显示“表”菜单,防止用户对表 的格式进行编辑 2、添加备注字段 APPEND命令可以把文本文件的内容复制到备注字段中。 命令格式:APPEND MEMO <备注字段名> FROM <文本文件名> [OVERWRITE] … 参数说明: OVERWRITE:如无,文件内容将追加到指定备注字段中; 如有,用文件的内容替换备注字段当前的内容。

? ? ? ?

? ? ?

? ?

第三章 表的建立与基本操作
例 3.3 把stud.txt文本文件内容复制到“简历”字段中。 USE 学生 APPEND MEMO 简历 FROM stud.txt MODIFY MEMO 简历 USE

? ? ? ? ?

第三章 表的建立与基本操作
?

三、插入记录
? ? ? ? ?

INSERT命令可以在表的指定位置添加新记录。 命令格式: INSERT [BEFORE][BLANK] 参数说明: BLANK:同APPEND命令,用来插入一个空记录 BEFORE:打开浏览窗口,在当前表的当前记录后插入一个新记 录,无该选项,在当前表的当前记录前插入一条空记录。

第三章 表的建立与基本操作
?

3.3.4 显示表记录
?

除了用菜单命令显示表记录外,还可以通过命令设置条件,有 选择地显示表中的记录。 格式:LIST [OFF] [<范围>][FOR <条件>][WHILE<条件 >][FIELDS <表达式表>]

?

命令1:连续滚动显示LIST命令
?

?

命令2:分屏显示DISPLAY 命令
?

格式:DISPLAY [OFF] [<范围>][FOR <条件>][WHILE<条件 >][FIELDS <表达式表>]

第三章 表的建立与基本操作
? ?

参数说明: 1、<范围>子句:
? ? ?

?

?

?

表示命令对表文件进行操作的记录范围,一般有4种选择: ALL:对表文件所有的记录进行操作。 NEXT n:只对从当前记录开始的连续若干个指定数目的记录进 行操作。 RECORD n:只对第n个记录进行操作。 REST:只对从当前记录开始到表文件尾为止的所有记录进行操 作。 其中,n为数值表达式的值。

第三章 表的建立与基本操作
?

2、FOR <条件> 和WHILE <条件>子句:
?

?

FOR<条件>:在指定的范围内,按条件逐个检查所有记录,直到 该范围内的最后一条记录为止。 WHILE <条件>:在指定的范围内,按条件逐个检查所有记录, 一旦遇到第一个不满足条件的记录(即逻辑表达式<条件>计算结 果为.F.)时,就停止查找并结束该命令的执行。

?

3、FIELDS子句。
? ?

该子句用于规定当前处理的字段和表达式。它有三种格式: 该子句实现对表的字段筛选,完成关系的投影运算。
不显示记录号。如果省略了OFF,就在每个记录前显示记录号。

?

4、OFF子句。
?

第三章 表的建立与基本操作
?

3.3.5 修改记录
?

? ? ? ? ? ?

除了前面提到的在浏览窗口中修改表记录外,还可以用EDIT或 CHANGE命令全屏幕编辑修改表记录。此外,经常使用REPLACE命 令在程序中动态更新表记录。 命令格式: REPLACE <字段名1> WITH <表达式1>[ADDITIVE] [, <字段名2> WITH <表达式2> [ADDITIVE]]… [<范围>][FOR <条件>][WHILE<条件>] 参数说明: <字段名1> WITH <表达式1>[ADDITIVE][, <字段名2> WITH <表 达式2>:指定用<表达式1>的值来代替<字段名1>中的数据,用< 表达式2>的值来代替<字段名2>中的数据,依此类推。

第三章 表的建立与基本操作
当表达式的值比数值字段的宽度长时,REPLACE采用以下方法来 处理数据: REPLACE截短表达式的小数位,然后取整剩余部分。 如果此时数值字段仍然放不下表达式的值,用科学计数法在字 段中保存表达式的值。 若仍放不下表达式的值,用星号代替字段内容(数据溢出)。 ADDITIVE:把对备注字段的替代内容追加到备注字段的后面。 ADDITIVE只对替换备注字段有用,如果省略ADDITIVE,则用表 达式的值改写备注字段原有内容。 REPLACE命令的默认范围是当前记录(NEXT 1)。 NOOPTIMIZE:使该命令的Rushmore优化无效。

?

? ?

? ?

? ?

第三章 表的建立与基本操作
? ?

3.3.6 删除记录 1、DELETE命令
?

?

? ?

?
?

?

?
?

DELETE命令是逻辑删除,只是给记录加上删除标记,这些作了删除标 记的记录仍保留在表文件中。用LIST命令显示时,仍然可以看到这些 记录,逻辑删除的记录在记录号后用“*”表示。 命令格式:DELETE [<范围>][FOR <条件>][WHILE<条件>] [IN <工作 区号>/<别名>][NOOPTIMIZE] 命令说明: 根据SET DELETED ON/OFF设置的不同,操作时将产生不同结果。 SET DELETED ON:删除标记有效,处理记录时忽略有删除标记的记录。 SET DELETED OFF(默认值):删除标记失效,处理记录时可以访问标有 删除标记的记录。 [FOR <条件>][WHILE<条件>]子句用于指定一个条件,仅给满足逻辑条 件的记录做删除标记。 标有删除标记的记录可以用RECALL恢复(清除标记)。 不带选项的DELETE命令,其默认范围是当前记录(NEXT 1)。

第三章 表的建立与基本操作
?

2、RECALL命令
? ?

? ? ?

该命令恢复所选表中带删除标记的记录。 命令格式:RECALL [<范围>][FOR <条件>][WHILE<条件>] [NOOPTIMIZE] 命令说明: 缺省范围为当前记录(NEXT 1) 一旦对表文件使用了PACK命令或ZAP命令,带删除标记的记录将 永远消失,无法恢复。

第三章 表的建立与基本操作
3、PACK命令 该命令将有删除标记的记录从当前表中永久删除,减少与 该表相关的备注文件所占用的空间。 命令格式:PACK [MEMO] [DBF] 参数说明: MEMO:从备注文件中删除未使用的空间,但不从表中删除标有 删除标记的记录。备注字段的信息保存在一个相关的备注文件 内。 DBF:从表中删除标有删除标记的记录,但不影响备注文件。 如果不带MEMO和DBF子句发出PACK命令,PACK命令将同时作用于 表和备注文件。

? ?

? ? ?

? ?

第三章 表的建立与基本操作
4、ZAP命令 该命令从表中删除所有记录,只留下表的结构。 命令说明: ZAP命令等价于DELETE ALL和PACK联用,但ZAP速度更快。如果 SET SAFETY为ON,Visual FoxPro会提示是否要从当前表中删除 记录。 ZAP命令只用来删除表的记录,表结构仍然存在。而删除文件的 命令是删除整个文件,将记录与结构全部删除。

? ? ? ?

?

第三章 表的建立与基本操作
3.3.7
?

?

记录定位

对表记录的操作是靠记录指针定位的,它是一种内部标志,用 来指出表文件的当前记录。对表文件的许多操作都是对当前记 录进行的。在打开表文件时,记录指针指向第一个记录。随着 命令的执行,记录指针会发生移动。有时也需要人为移动记录 指针,称为记录指针的定位。在表的索引文件未打开的情况下, 记录指针是按表的物理顺序移动的。而在表的索引文件打开的 情况下,记录指针一般是按表的逻辑顺序移动的。

第三章 表的建立与基本操作
?

1、绝对移动
? ? ? ?

? ?

格式1:GO/GOTO [RECORD] <记录号> [IN <工作区号>/<别名>] 格式2:GO/GOTO TOP/BOTTOM [IN <工作区号>/<别名>] 命令说明: RECORD <记录号>指定一个物理记录号,记录指针将移至该记录。 你可以省略GO或GOTO命令而只指定记录号,但如果仅指定记录 号,则只能在当前工作区中移动记录指针。该命令所指的物理 记录号是记录在表中的物理顺序,执行格式1这条绝对移动命令, 无论索引文件是否打开,均移到物理记录号所指的记录,与表 的逻辑顺序无关。 TOP:记录指针指向表的第一个记录上。 BOTTOM:记录指针指向最后一个记录上。

第三章 表的建立与基本操作
?

2、相对移动。
? ? ? ?

格式:SKIP <? 记录数> [IN <工作区号>/<别名>] 功能:使记录指针在表中向前或向后相对移动。 命令说明: <? 记录数>:用于指定记录指针需要移动的记录数;缺省,记录 指针移到下一条记录,相当于命令SKIP 1。如果<记录数>为正 数,记录指针向文件尾移动<记录数>个记录;如果<记录数>为 负数,记录指针将向文件头移动<记录数>个记录。 如果记录指针指向表的最后一个记录,并且执行不带参数的 SKIP 命 令 时 , RECNO( ) 函 数 返 回 值 比 表 中 记 录 总 数 大 1 , EOF( )函数返回“真”(.T.);如果记录指针指向表的第一个记 录,并执行SKIP -1命令,则RECNO( )函数返回值与第一个记录 的记录号相同,BOF( )函数返回“真”(.T.)。

?

第三章 表的建立与基本操作
? ?

3.4 排序与索引 3.4.1 排序
?

? ?

?

?

排序命令可以对当前选定的表进行排序,并将排好序的记 录输出到新表中。 命令格式: SORT TO <表文件名> ON <字段名1 > [/A//D] [/C] [,<字段名 2 > [/A//D] [/C]…] [ASCENDING / DESCENDING] [<范围>][FOR <条件>][WHILE<条 件>] [NOOPTIMIZE] [FIELDS <字段名表>/LIKE<通配符>/ EXCEPT< 通配符>]

第三章 表的建立与基本操作
? ?

? ?

? ? ? ?

?

命令说明: < 表 文 件 名 > : 存 放 排 序 后 记 录 的 新 表 名 , Visual FoxPro 为 表 存 取.DBF文件扩展名。 ON <字段名1 >:指定当前选定的、要排序的表中的字段名, [/A//D] [/C]:对于排序中包含的每个字段,可以指定排序顺序(升 序或降序)。/A为字段指定了升序。/D指定了降序。默认情况下,字符 型字段的排序顺序区分大小写。如果在字符型字段名后包含/C,则忽 略大小写。 ASCENDING:将所有不带/D的字段指定为升序排列。 DESCENDING:将所有不带/A的字段指定为降序排列。 默认范围:ALL,即所有记录。 FIELDS LIKE <通配符>:在新表中包含那些与字段<通配符>相匹配的 原表字段,新表用SORT命令创建。 FIELDS EXCEPT <通配符>:在新表中包含那些不与字段<通配符>相匹 配的原表字段。

第三章 表的建立与基本操作
? ?

3.3.2 索引的概念 1、索引的概念
?

Visual FoxPro中的索引是由指针构成的文件,这些指针逻辑上 按照索引关键字值的顺序排列,这种顺序称为记录的逻辑顺序。 索引文件和表文件分别存储,不改变表中记录的物理顺序。 (1) 单项索引文件 扩展名为.IDX,只能容纳一项索引,只能用命令方式操作。 (2) 复合索引文件 扩展名为.CDX,可以容纳多项索引,索引之间用唯一的索引标 识区别,每个索引标识名的作用等同于一个索引文件名。

?

2、索引文件的类型
?

?
? ?

第三章 表的建立与基本操作
?

复合索引文件分为两种:
? ?

? ?

结构复合索引文件 结构复合索引文件的主名与表文件的主名相同。表文件打开时, 它随表的打开而打开,关闭表时随表的关闭而关闭。 非结构复合索引文件 与结构复合索引文件不同,该文件的主名与表文件的主名不同, 定义时要求用户为其取名。因此当表文件打开或关闭时,该文 件不能自动打开或关闭,必须用户自己操作。

第三章 表的建立与基本操作
?

3、索引关键字的类型
?

?

?

?

?

索引关键字是由一个或若干个字段构成的索引表达式。索引表 达式的类型决定了不同的索引方式。在Visual FoxPro中,有四 种类型的索引:主索引、候选索引、普通索引和惟一索引 (1) 主索引:绝对不允许在指定的字段或表达式中有重复值。 一个表只能建一个主索引。 (2) 候选索引:同样不允许在指定的字段或表达式中有重复值。 与主索引不同,一个表可以创建多个候选索引。 (3) 普通索引:允许在指定的字段或表达式中有重复值,在数 据库库表和自由表中都可以创建普通索引。 (4) 惟一索引:也允许在指定的字段或表达式中有重复值,但 是只存储索引文件中重复值的第一次出现。

第三章 表的建立与基本操作
? ?

3.4.3 建立索引 1、使用INDEX命令创建索引
? ?

? ? ? ?

?

?

命令格式: INDEX ON < 索引表达式> TO <单项索引文件名> | TAG <索 引标识名> [OF <复合索引文件名>] [FOR<条件>] [COMPACT] [ASCENDING/DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE] 参数说明: TO <单项索引文件名>:创建一个单项索引文件名,默认的索 引文件扩展名为.IDX。 TAG <索引标识名> [OF <复合索引文件名>]:创建一个复合索 引文件。 [FOR<条件>]:指定条件,索引文件只为那些满足条件的记录 创建索引关键字,实现筛选数据

第三章 表的建立与基本操作
[COMPACT]:创建一个压缩的.IDX文件 [ASCENDING/DESCENDING]:指定文件是升序或降序,默认为升 序,本选项只对复合索引文件有效。 [UNIQUE]:当有多个记录的<索引表达式>值相同时,只有其中 第一个记录被载入索引。 [ CANDIDATE]:创建候选结构索引标识,只对结构复合索引标 识有效 [ADDITIVE]:指定先前打开的索引文件保持打开状态。缺省, 则用INDEX命令建立索引文件时,所有先前打开的索引将关闭。

? ?

?

?

?

第三章 表的建立与基本操作
命令说明: 该命令默认创建普通索引型索引。 索引表达式由当前表中的字段名或由字段名、函数、常数等组 成的表达式构成。索引表达式可以是单一字段,也可以是多个 字段的组合表达式。 索引表达式类型有4种:字符型、数值型、日期型、逻辑型 注意:组合表达式中数据类型必须一致。 INDEX ON <索引表达式> TO <文件名> INDEX ON < 索引表达式> TAG <索引标识>

? ? ?

? ?

? ?

(1) 创建单项索引文件,命令的基本格式如下:
?

(2) 创建结构复合索引文件,命令的基本格式如下:
?

第三章 表的建立与基本操作
?

(3) 创建非结构复合索引文件,命令的基本格式如下:
? ? ? ? ?

?

INDEX ON < 索引表达式> TAG <索引标识> OF <文件名> 例3.15 降序排序 USE 学生 INDEX ON - 奖学金 TO IJXJ &&单项索引文件的降序排序 INDEX ON 年龄 DESC TAG AGE &&结构复合索引文件的降序排 序 INDEX ON 奖学金 DESC TAG JXJ OF JXJ &&非结构复合索引文 件的降序排序

第三章 表的建立与基本操作
?

2、在“表设计器”中建立索引
?

?

打开表设计器,其中有三个选项卡,字段选项卡和索引选项卡, 这两个选项卡都可以建立或修改索引,但二者有区别。 在字段选项卡中只能建立普通索引,索引关键字为单一字段。

第三章 表的建立与基本操作
利用索引选项卡,可以选择三种不同的索引类型,普通索引、 候选索引和唯一索引。 索引关键字可以是组合字段,也可以是单一字段,索引名可以 直接输入。另外,除了在表达式框中输入表达式外,还可以通 过表达式生成器构造复杂的表达式。方法是,单击表达式旁边 的小按钮,在弹出的“表达式生成器”中构造。

?

?

第三章 表的建立与基本操作
?

3.4.4 使用索引
? ?

?

1、打开索引文件 使用索引文件,必须先打开表文件,索引文件不能脱离表文件 而单独使用。 打开索引文件有两种方式,一种是在打开表文件时的同时打开 索引文件;一种是在表文件打开后,用SET IDENX等命令打开索 引文件。

第三章 表的建立与基本操作
(1) 用USE命令打开索引文件 命令格式: USE <表文件名> [INDEX <索引文件名表>/ ? [ORDER [<索引序号>/<单项索引文件名>/[TAG] <索引标识> [OF <复合索引文件名>] [ASCENDING / DESCENDING] ]]] 参数说明: INDEX <索引文件名表>/ ?:指定要打开的一个或多个索引文件。 若是多个索引文件,中间用逗号分隔。若未指定索引文件或使 用了“?”,Visual FoxPro显示“打开”对话框,提示用户选 择索引文件。 ORDER <索引序号>/<单项索引文件名>/ [TAG] <索引标识> [OF <复合索引文件名>]:指定一个主控索引文件或标识

? ? ? ?

? ?

?

第三章 表的建立与基本操作
注意:(1)在多个单项索引文件中,按其打开文件时在索引文 件名列表中的次序决定序号,与建立索引的顺序无关。(2)在同 一复合索引文件中,索引标识按建立的先后次序决定序号。(3) ORDER 0,以物理记录次序显示和访问表中的记录。 ASCENDING / DESCENDING:指定显示或访问表中的记录,是升 序还是降序,它并不改变索引文件或标识,仅改变记录被显示 或访问的次序。

?

?

第三章 表的建立与基本操作
?

(2)用SET INDEX 命令打开索引文件
? ? ?

? ?

命令格式: SET INDEX TO [<索引文件名表>/?] [ORDER <索引序号>/<单项索引文件名> / [TAG] < 索引标识> [OF <复合索引文件名>] [ASCENDING/DESCENDING]] [ADDITIVE] 命令说明:该命令是在表文件打开后再打开索引文件,其他命 令参数与USE命令相同。

第三章 表的建立与基本操作
?

2、关闭索引文件
? ? ? ? ?

? ?

格式1:CLOSE INDEXES 格式2:SET INDEX TO 命令说明:关闭当前工作区的所有索引文件。 注意: CLOSE INDEXES命令关闭所有工作区中的全部.IDX和非结构复合 索引文件,表文件和结构复合索引文件仍然打开。 格式3:USE 命令说明:用不带选项的USE命令关闭表文件时,当前工作区的 索引文件自动关闭。

第三章 表的建立与基本操作
?

3、确定主控索引
?

? ? ? ? ?

?

?

在不打开或关闭任何索引的情况下转换主控索引,使用SET ORDER TO 命令 命令格式:SET ORDER TO [<索引序号>/<单项索引文件名> / [TAG]<索引标识>[OF<复合索引文件名>] [IN <工作区号>/<别名>] [ASCENDING/DESCENDING ]] 命令说明: IN <工作区号>/<别名>:为非当前工作区中已打开的表确定主 控索引文件或主控索引标识。 若要恢复原始物理顺序显示或处理数据,则可用SET ORDER TO 或SET ORDER TO 0命令。 其它选项的说明见用USE命令打开索引文件

第三章 表的建立与基本操作
? ? ? ?

?
? ? ?

?
? ? ?

?

例3.17 确定主控索引 USE 学生 SET INDEX TO INAME,IBIRTHDAY,AGE,NL SET ORDER TO 2 && 指定主控索引文件IBIRTHDAY.IDX LIST && 按出生日期索引显示 SET ORDER TO 4 && 指定结构复合索引文件为主控索引文件,主控索引标识SNO LIST && 按学号降序显示 SET ORDER TO TAG SNO LIST &&与上条命令效果显示相同 SET ORDER TO TAG NL OF NL && 指定非结构复合索引文件NL.CDX,主控索引标识为NL LIST &&按年龄显示

第三章 表的建立与基本操作
?

4、重建索引
?

? ? ?

?

?

当对表文件做更新操作时,一切打开的索引文件会自动进行重 索引,但未打开的索引文件却不会自动修改索引,以至在以后 打开那些索引文件后,数据没有更新,造成索引混乱,此时需 要用REINDEX命令重新索引。 命令格式:REINDEX [COMPACT] 命令说明: Visual FoxPro识别每种索引文件的类别(独立复合索引文件、 结构复合索引文件及单项索引文件)并分别重建索引。 对使用包含UNIQUE关键字的INDEX命令或SET UNIQUE ON命令创 建的索引文件,在重建索引时,仍保持UNIQUE状态。 COMPACT:将普通的单项索引(.IDX)文件转换为压缩的.IDX文件。

第三章 表的建立与基本操作
?

3.5 索引查找
? ?

? ? ? ? ?

?
?

?

3.5.1 顺序查找 顺序查找包括LOCATE和CONTINUE两条命令,可以查找没有建立排 序和索引的表。 格式:LOCATE FOR <条件> [WHILE <条件>] [<范围>][NOOPTIMIZE] 功能:按顺序搜索表,找到满足条件的第一个记录。 格式:CONTINUE 功能:按照LOCATE命令的条件,继续查找下一个满足条件的记录, 命令说明: 缺省范围是ALL。 找到满足条件的记录,记录指针指向第一条记录,可使用RECNO( )返 回该记录号。并且FOUND( )返回“真”(.T.),EOF( )返回 “假”(.F.)。如果找不到满足条件的记录,则FOUND( )返回 “假”(.F.),EOF( )返回“真”(.T.) CONTINUE命令不能单独使用,必须与LOCATE命令配合使用。可重复执 行CONTINUE,直到到达范围边界或表尾。

第三章 表的建立与基本操作
?

3.5.2 索引查找
?

?
? ? ? ?

?

索引查找的前提是表文件已经排序或建立并打开了索引。 索引查找有两条命令,FIND和SEEK。FIND是为了和以前的版本 兼容而保留的,SEEK的功能更强。 一、FIND命令。 格式:FIND <字符表达式>/<n> 功能:按当前主控索引,查找满足条件的第一个记录。 命令说明: FIND命令只能查找字符型或数值型数据。若是字符型数据,可 以加定界符,亦可以不加定界符。<字符表达式>不能为空值。 如果查找成功,RECNO( )函数返回第一条匹配记录的记录号, FOUND( )函数返回“真”(.T.),而EOF( )函数返回 “假”(.F.)。如果查找失败,则RECNO( )函数的返回值等于表 的记录数加1,FOUND( )函数返回“假”(.F.),而EOF( )函数 返回“真”(.T.)。

第三章 表的建立与基本操作
?

二、SEEK命令。
? ? ? ?

? ?

?

?

格式:SEEK <表达式> [ORDER <索引序号>/ <单项索引文件名> / [TAG] <索引标识> [OF <复合索引文件名>] [ASCENDING /DESCENDING]][IN <工作区号>/<别名>] 功能:按当前主控索引,搜索满足条件表达式的第一个记录,这个记 录的索引关键字必须与指定的表达式匹配。 命令说明: <表达式>:由常量、变量和表达式组成。若是字符型常量,则必须加 定界符,可以是空字符串,也可以是数值型、逻辑型、日期型等各种 类型的常量、变量和表达式。 如果查找成功,RECNO( )函数返回第一条匹配记录的记录号,FOUND( ) 函数返回“真”(.T.),而EOF( )函数返回“假”(.F.)。如果查找失 败,则RECNO( )函数的返回值等于表的记录数加1,FOUND( )函数返回 “假”(.F.),而EOF( )函数返回“真”(.T.)。 其他参数含义同SET ORDER TO 。

第三章 表的建立与基本操作
?

3.6 记录的统计与计算
? ?

? ? ? ? ?

?

3.6.1 计数命令 格式:COUNT [<范围>][FOR <条件>][WHILE<条件>] [TO <内存 变量>] 功能:在指定范围内,统计满足条件的记录数。 参数说明: 范围:缺省值为ALL。 条件:指定统计条件,缺省为指定范围内的全部记录。 TO <内存变量>:指定用于存储统计结果的内存变量或数组。缺 省,记录数仅显示在主窗口的状态条中,无法保存。 如果 SET DELETE是OFF,则带有删除标记的记录也包括在计数 中。

第三章 表的建立与基本操作
?

3.6.2 求和命令
? ? ?

? ? ? ?

?

格式:SUM [<数值表达式表>][<范围>][FOR <条件>][WHILE<条件>] [TO <内存变量名表>/ TO ARRAY <数组名>] 功能:在指定范围内,对满足条件的指定数值字段或全部数值字段进 行求和。 说明: 缺省范围:ALL,所有记录。 缺省条件,统计指定范围内的全部记录。 <数值表达式表>:指定要求和的一个或多个字段或者字段表达式。如 果省略字段表达式列表,则对所有数值型字段求和,其实质是实现表 文件数值型字段的纵向求和。 [TO <内存变量名表>/ TO ARRAY <数组名>]:将数值表达式的各个求 和结果依次存入<内存变量表>或数组,列表中的内存变量名用逗号分 隔。

第三章 表的建立与基本操作
?

3.6.3 求平均数命令
?

? ? ?

格式:AVERAGE [<数值表达式表>][<范围>][FOR <条件 >][WHILE<条件>] [TO <内存变量名表>/ TO ARRAY <数组名>] 功能:在指定范围内,计算数值表达式或字段的算术平均值。 说明:AVERAGE命令各参数的含义同SUM命令。

第三章 表的建立与基本操作
?

3.6.4 计算命令
? ?

?
? ? ? ? ?

?

格式:CALCULATE <表达式表> [<范围>][FOR <条件>][WHILE<条件>] [TO <内存变量名表>/ TO ARRAY <数组名 >][NOOPTIMIZE] 功能:在指定范围内,对表文件的字段或字段表达式做统计计算。 说明:<表达式表>可由下列函数任意组合而成: AVG(<数值表达式>):求<数值表达式>的算术平均值。 SUM(<数值表达式>):求<数值表达式>的和。 CNT():统计记录个数。 MIN(<表达式>):求<表达式>的最小值或最早值,该<表达式>可以是各 种数据类型。 MAX(<表达式>):求<表达式>的最大值或最新值,该<表达式>可以是各 种数据类型。

第三章 表的建立与基本操作
?

3.6.5 分类汇总命令
? ? ?

? ?

?

?

?

格式:TOTAL ON <关键字段> [FIELDS <数值型字段名表> ] [<范围>][FOR <条件>][WHILE<条件>] TO <文件名> 功能:按关键字段对记录进行分类汇总,并将汇总结果存入汇 总文件。 说明: 使用TOTAL命令前,必须先按关键字段进行排序或索引,否则, 该命令无效。 ON <关键字段>:分组依据,即一组关键字段值相同的记录在汇 总表中产生一个记录 FIELDS <数值型字段名表>:指出汇总字段,缺省,对表中所有 数值型字段进行汇总。 缺省范围为ALL,指表中所有记录。


相关文章:
VFP复习(yo由老师课件改版,不转载别后悔哟!!!)_免费下载
高中政治说课比赛课件 在实... 28页 免费 vfp编程实例 31页 1财富值如要投诉...自由表和数据库表,表文件*.dbf 表的操作包括: 1,创建新表 2,表结构的定制...
更多相关标签: