VFP全套教程2

更新时间:2023-08-26 23:11:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

表的排序、 第三节 表的排序、索引与统计通常情况下, 通常情况下, 表中的记录是按输入记录的先后顺 序存放的,但实际应用中, 序存放的,但实际应用中,有时需要按别的顺序重新 组织记录。因此, FoxPro提供了两种方法重 组织记录 。 因此 , Visual FoxPro 提供了两种方法重 新组织数据,即排序和索引。 新组织数据,即排序和索引。 排序是从物理上对表进行重新整理, 排序是从物理上对表进行重新整理 , 按照指定的 关键字段来重新排列表中数据记录的顺序, 关键字段来重新排列表中数据记录的顺序,并产生一 个新的表文件。由于新表的产生即费时间也浪费空间, 个新的表文件。由于新表的产生即费时间也浪费空间, 实际中很少用。 索引是从逻辑上对表进行重新整理, 实际中很少用 。 索引是从逻辑上对表进行重新整理 , 按照指定的关键字段的建立索引文件。 按照指定的关键字段的建立索引文件。一个表文件可 以建立多个索引文件,但对于打开的表文件, 以建立多个索引文件,但对于打开的表文件,任何时 侯只有一个索引文件起作用, 侯只有一个索引文件起作用,此索引文件称为主控索 引。

一、表的排序排序是根据表中的某个字段或关键字对表的记 录重新排列,生成一个新的表。 录重新排列,生成一个新的表。 新文件名> 字段1 SORT TO <新文件名> ON <字段1> [/A|/D][/C] [,<字段2 [/A|/D][/C]...][<范围 ...][<范围>][FOR 条件>] [,<字段2> [/A|/D][/C]...][<范围>][FOR <条件>] 字段 字段名表>] [FIELDS <字段名表>] 说明】对当前打开的表,按指定的字段进行排序, 【说明】对当前打开的表,按指定的字段进行排序, 生成新的表文件。 生成新的表文件 。 /A 表示升序 /D 表示降序 表示不区分大小写; 当有多个关键字段时, /C 表示不区分大小写 ; 当有多个关键字段时 , 先 按字段1的值排列,值相同的,再按字段2的值排列。 按字段1的值排列,值相同的,再按字段2的值排列。

例如: 例如: 1、对图书表,显示价格最高的五种图书。 对图书表,显示价格最高的五种图书。

2、对学生成绩表的女生,按外语成绩排序, 对学生成绩表的女生,按外语成绩排序, 外语成绩相同的则按数学成绩排序。 外语成绩相同的则按数学成绩排序。

二、索引的基本概念 当记录很多时, 排序既费时间由占磁盘空间, 当记录很多时 , 排序既费时间由占磁盘空间 , 因此一般按索引方法来重新组织记录。 VFP的索引 因此一般按索引方法来重新组织记录 。 VFP 的索引 是由指针构成的文件, 是由指针构成的文件,这些指针在逻辑上按索引关 键字进行排序。 键字进

行排序。 索引文件可以看成索引关键字的值与记录号之 间的对照表。在建立索引文件时, 间的对照表。在建立索引文件时,把表所有记录的 索引关键字按指定顺序排序, 索引关键字按指定顺序排序,并把每个索引关键字 值与在表中所对应的记录对应起来, 值与在表中所对应的记录对应起来,保存在索引文 件中。 件中。

索引文件必须与原表一起使用,查询时根据索 索引文件必须与原表一起使用, 引关键字表达式的值先在索引文件中找到某字段 所在的记录号,然后再到表里直接定位。 所在的记录号,然后再到表里直接定位。打开索 引文件时,将改变表中记录的逻辑顺序, 引文件时,将改变表中记录的逻辑顺序,但并不 改变表中记录的物理顺序。 改变表中记录的物理顺序。 一个表文件可建立多个索引文件, 一个表文件可建立多个索引文件,也可同时打 开多个索引文件, 开多个索引文件 , 但在同一时间内只有一个索引 起作用, 主控索引。 起作用,这个索引称为 主控索引。

VFP中索引可分为下列四种类型: VFP中索引可分为下列四种类型: 中索引可分为下列四种类型 (1)主索引 主索引是一个永远不允许在指定字段和表达式 中出现重复值的索引。 中出现重复值的索引。它也是在数据库表的永久关 联中创建参照完整性时主表和被引用表使用的索引。 联中创建参照完整性时主表和被引用表使用的索引。 每一个表只能建立一个主索引, 每一个表只能建立一个主索引,只有数据库表才能 建立主索引。 建立主索引。 (2)侯选索引 侯选索引也是一个不允许在指定字段和表达式 中出现重复值的索引。数据库表和自由表都可以建 中出现重复值的索引。 立侯选索引,一个表可以建立多个侯选索引。 立侯选索引,一个表可以建立多个侯选索引。

(3)唯一索引 系统只在索引文件中保留第一次出现的索引关 键字值。 键字值。数据库表和自由表都可以建立唯一索引 (4)普通索引 是一个最简单的索引,允许关键字值的重复出 是一个最简单的索引, 适合用来进行表中记录的排序和查询, 现,适合用来进行表中记录的排序和查询,也适合 于一对多永久关联中“ 的一边(子表)的索引。 于一对多永久关联中“多”的一边(子表)的索引。 数据库表和自由表都可以建立普通索引。 数据库表和自由表都可以建立普通索引。

三、索引的建立 (1)菜单方式 打开表文件。 ① 打开表文件。 选择【显示】 表设计器】命令, ② 选择【显示】|【表设计器】命令,打开表设计器 对话框,选择“索引” 对话框,选择“索引”标签 在索引名中输入

索引标识名, ③ 在索引名中输入索引标识名 , 在类型的下拉列表 框中确定一种索引类型, 框中确定一种索引类型,在筛选中输入确定参加索 引的记录范围,在排序序列下默认的是升序按钮, 引的记录范围,在排序序列下默认的是升序按钮, 单击可改变为降序按钮。完成后, 确定” 单击可改变为降序按钮。完成后,选“确定” 。 同样的方法也可以将以前建立的索引调出, ⑤ 同样的方法也可以将以前建立的索引调出 , 利用 表设计器上的“插入” 删除” 表设计器上的“插入”或“删除”按钮进行插入或 删除。 删除。

(2)命令方式 索引表达式> 单索引文件> INDEX ON <索引表达式> TO <单索引文件> 标识名> 复合索引文件名] |TAG <标识名> [OF 复合索引文件名] [FOR<条件>][ASCENDING|DESCENDING] [FOR<条件>][ASCENDING|DESCENDING] [ADDITIVE] 条件 【功能】对当前表文件按指定的关键字建立索引文件。 功能】对当前表文件按指定的关键字建立索引文件。 说明】 索引表达式> 【说明】<索引表达式>:指定建立索引文件的关键字表 达式,可以是单一字段名, 达式,可以是单一字段名,也可以是多个字段组成的 表达式,表达式中各字段的类型只能是数值型、 表达式,表达式中各字段的类型只能是数值型、字符 型和日期型和逻辑型, 型和日期型和逻辑型,表达式中操作数据的数据类型 必须一致。 必须一致。

标识名> TAG <标识名>:此选项只对建立复合索引文件时有 指定建立或追加索引标识的标识名。 效,指定建立或追加索引标识的标识名。 条件> FOR <条件>:表示只对满足条件的记录建立 索引。 索引。 ASCENDING|DESCENDING: ASCENDING表示按升序建 ASCENDING|DESCENDING: ASCENDING表示按升序建 立索引,DESCENDING表示按降序建立索引 表示按降序建立索引。 立索引,DESCENDING表示按降序建立索引。缺省 按按升序建立索引。 时,按按升序建立索引。单索引文件不能选用 DESCENDING选项 选项。 DESCENDING选项。 ADDITIVE:表示建立本索引时, ADDITIVE:表示建立本索引时,保留以前打开的索 引文件。 引文件。

PS:新建的索引文件自动打开,并开始起作用。 PS:新建的索引文件自动打开,并开始起作用。

从以上索引的组织方式可把索引分为三类: 从以上索引的组织方式可把索引分为三类: 单索引:扩展名为.IDX .IDX, (1)单索引:扩展名为.IDX,即一个文件中只 包括一个索引,属于非结构索引。 包括一个索引,属于非结构索引。 非结构化的复合索引:扩展名为.CDX (2)非结构化的复合索引:扩展名为.CDX 结构化复合索引:文件名与表名相同, (3)结构化复合索引:文件名与表名相

同,扩 展名为.CDX .CDX。 展名为.CDX。前面使用表设计器建立的索引 都是属于这一类,它有以下特性 特性: 都是属于这一类,它有以下特性: 打开表的同时自动打开 在同一个索引文件中包含多个索引标识 在修改、增加、删除记录时自动维护。 在修改、增加、删除记录时自动维护。

STUDENT.DBF表文件建立出生日期单 【例1】对STUDENT.DBF表文件建立出生日期单 索引文件STUDCSRQ STUDCSRQ。 索引文件STUDCSRQ。 USE STUDENT INDEX ON 出生日期 TO STUDCSRQ 对表文件STUDENT DBF, STUDENT. 【例2】对表文件STUDENT.DBF,建立一个基于 出生日期字段的结构复合索引文件。 出生日期字段的结构复合索引文件。 USE STUDENT INDEX ON 出 生 日 期 TAG 出 生 日 期 DESCENDING

【例3】显示图书表中价格最高的五种图书。 显示图书表中价格最高的五种图书。 USE 图书 INDEX ON 价格 TAG JG DESCENDING NEXT5 LIST NEXT5

对图书表中记录按出版社排序, 【例4】对图书表中记录按出版社排序,出版 社相同的按书名排序。 社相同的按书名排序。 USE 图书 出版社+ INDEX ON 出版社+书名 TAG CSSX

四、索引的使用

1.索引文件的打开与表同名的结构索引在打开表时自动打开, 与表同名的结构索引在打开表时自动打开 , 其 他索引在使用前必须先打开, 他索引在使用前必须先打开 , 打开索引文件的方式 有两种: 有两种: 与表文件同时打开 USE 表文件名 INDEX 索引文件名表 打开表文件后单独打开索引 SET INDEX TO 索引文件名

2.索引文件的关闭SET INDEX TO

3、确定主控索引 一个表可能有多个索引文件被打开, 一个表可能有多个索引文件被打开,复 合索引文件又有多个索引标识, 合索引文件又有多个索引标识,但在一个 时刻只能有一个索引标识起作用, 时刻只能有一个索引标识起作用,这个索 引标识称为主控索引。 引标识称为主控索引。 在应用中,起作用的为当前的主控索引, 在应用中,起作用的为当前的主控索引, 所以我们经常要更换或设置主控索引标识。 所以我们经常要更换或设置主控索引标识。

索引文件名>] SET ORDER TO <索引文件名>] 标识名> [TAG] <标识名> [ASCENDING | DESCENDIN] 功能】确定表的主控索引文件或标识。 【功能】确定表的主控索引文件或标识。 说明】[TAG]标识名用来指定结构复合索引文 【说明】[TAG]标识名用来指定结构复合索引文 件中某个索引标识为主控标识。 件中某个索引标识为主控标识。 不管索引原来是按升序还是降序建立的, 不管索引原来是按升序还是降序建立的 , 使 DESCENDING]重 用时都可以用 [ASCENDING | DESCENDING] 重 新升序或降序。 新升序或降序。 省略短语的SET ORDER TO表示取消主控

索引 。 省略短语的 SET TO 表示取消主控索引。 表示取消主控索引

对读者表按读者编号、姓名、 【 例 】 对读者表按读者编号 、 姓名、 出生日期建立 索引,并使用这些索引对表进行浏览。 索引,并使用这些索引对表进行浏览。 USE 读者 INDEX ON 读者编号 TAG 读者编号 INDEX ON 姓名 TAG 姓名 BROWSE INDEX ON 出生日期 TO CSRQ BROWSE SET ORDER TO 读者编号 BROWSE

注意: 注意: 使用索引后, 使用索引后,表中记录的物理顺序并没有改 变,可观察其记录号。只是操作时记录指针 可观察其记录号。 按主控索引的逻辑顺序移动。 按主控索引的逻辑顺序移动。 使用索引后,GO N 仍指向具体的物理记录号, 仍指向具体的物理记录号, 使用索引后, 但是GO TOP, BOTTOM都指向逻辑顺序 但是GO TOP,GO BOTTOM都指向逻辑顺序 使用索引后,SKIP命令也按逻辑顺序移动。 使用索引后,SKIP命令也按逻辑顺序移动。 命令也按逻辑顺序移动

3、使用索引快速定位 前面我们介绍了LOCATE命令用于按条件 前面我们介绍了LOCATE命令用于按条件 LOCATE 进行顺序定位, 进行顺序定位 , 无论索引文件是否打开都 可使用。 可使用。 在打开索引文件后, 还可以用FIND FIND、 在打开索引文件后 , 还可以用 FIND 、 SEEK命令进行快速检索。 SEEK命令进行快速检索。 命令进行快速检索

本文来源:https://www.bwwdw.com/article/gymi.html

Top