考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
全国  |             |          |          |          |          |         
  当前位置:计算机等级 > 二级考试 > Visual FoxPro > VF辅导 > 文章内容
  

计算机等级考试二级VFP辅导讲义:VisualFoxPro数据库及其操作

中华IT学院   【 】  [ 2017年7月5日 ]

  13. 表的索引

  (1).索引及索引文件的概述

  索引是以索引文件的形式存在的,它根据指定的索引关键字表达式建立的。索引文件可以看成索引关键字的值与记录号之间的对照表,关键字可以是一个字段,也可以是几个字段的组合。在建立索引文件时,把表所有记录的索引关键字表达式的值按指定顺序排序,并把每个索引关键字表达式值与该值在表中所对应的记录对应起来,保存在索引文件中。

  索引文件必须与原表一起使用,查询时根据索引关键字表达式的值先在索引文件中找到某字段所在的记录号,然后再到表里直接定位。这样的查找方式使顺序查找和随机查找都有较高的效率。打开索引文件时,将改变表中记录的逻辑顺序,但并不改变表中记录的物理顺序。

  一个表文件可建立多个索引文件,也可同时打开多个索引文件,但在同一时间内只有一个索引起作用,这个索引称为主控索引。

  Visual FoxPro系统中支持两种不同的索引文件类型,即单索引文件和复合索引文件。

  单索引文件是根据一个索引关键字建立的索引文件,文件扩展名为.IDX,它可用INDEX命令的各种形式建立。单索引文件分为标准和压缩两种类型。

  复合索引文件是指索引文件中可以包含多个索引标识的扩展名为.CDX。每个索引标识与单索引文件类似,也可以根据一个索引关键字表达式(或关健字)建立。每一个索引标识均有一个特殊的标识名(TAG)。标识名由字母或下划线开头,由字母、数字或下划线组成,长度不超过10个字符。用户可以利用标识名来使用标识,向复合索引文件中追加标识。复合文件中标识的数目,仅受内存和磁盘空间的限制。

  复合索引文件又有两种:一种是独立复合索引文件;另一种是结构复合索引文件。结构复合索引文件是由Visual FoxPro自动命名的,与相应的表文件同名,扩展名为.CDX。当Visual FoxPro打开一个表时,便自动查找一个结构复合索引文件,如果找到便自动打开,该索引文件随表文件同时打开和同时关闭。

  独立复合索引文件不与表文件同名,扩展名为.CDX。在打开表时不会自动打开此索引文件,由命令指定打开。

  索引可分为下列四种类型:

  1)主索引

  主索引是一个永远不允许在指定字段和表达式中出现重复值的索引。它也是在数据库表的永久关联中创建参照完整性时主表和被引用表使用的索引。每一个表只能建立一个主索引,只有数据库表才能建立主索引。

  2)侯选索引

  侯选索引也是一个不允许在指定字段和表达式中出现重复值的索引。数据库表和自由表都可以建立侯选索引,一个表可以建立多个侯选索引。

  主索引和侯选索引都存储在.CDX结构复合索引文件中,不能存储在于独立复合索引文件和单索引文件中,因为主索引和侯选索引都必须与表文件同时打开和同时关闭。

  3)唯一索引

  系统只在索引文件中保留第一次出现的索引关键字值。数据库表和自由表都可以建立唯一索引

  4)普通索引

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

  (2).索引文件的建立

  1)命令方式

  【格式】INDEX ON <索引关键字表达式> TO <单索引文件> | TAG <标识名> [OF <独立复合索引文件名>]

  [FOR <逻辑表达式>] [COMPACT]

  [ASCENDING | DESCENDING][UNIQUE] [ADDITIVE]

  (p99)

  【功能】对当前表文件按指定的关键字建立索引文件。

  【说明】<索引关键字表达式>:指定建立索引文件的关键字表达式,可以是单一字段名,也可以是多个字段组成的字符型表达式,表达式中各字段的类型只能是数值型、字符型和日期型和逻辑型。当表达式是单个字段名时,字段类型不用转换;应转换成同一类型的表达式。

  TAG <标识名>:此选项只对建立复合索引文件时有效,指定建立或追加索引标识的标识名。

  OF <独立复合索引文件>:指定独立复合索引文件名。若有此选项,表示在指定的独立复合索引文件中追加一个索引标识,若指定的独立复合索引文件不存在,系统将自动建立指定的文件。若没有此选项,表示在结构复合文件中追加一个索引标识,若结构复合索引文件不存在,系统将自动建立结构复合索引文件。

  FOR <逻辑表达式>:表示只对满足条件的记录建立索引。

  COMPACT:此选项只对单索引文件有效,表示建立压缩索引文件。

  ASCENDING|DESCENDING: ASCENDING 表示按升序建立索引,DESCENDING 表示按降序建立索引。缺省时,按按升序建立索引。单索引文件不能选用DESCENDING 选项。UNIQUE:表示建立的是唯一索引。

  ADDITIVE:表示保留以前打开的索引文件。否则,除结构复合索引文件外,以前打开的其他索引文件都将被关闭。

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

  【例1】对STUD.DBF 表文件建立出生日期单索引文件STUD.IDX。

  USE STUD

  INDEX ON 出生日期 TO STUD

  【例2】对表文件STUD.DBF,建立一个基于出生日期字段的结构复合索引文件。

  USE STUD

  INDEX ON 出生日期 TAG 出生日期 DESCENDING

  【例3】在表文件STUD.DBF的结构复合索引文件中,按学号 追加一个标识。

  USE STUD

  INDEX ON 学号 TAG 学号

  【例4】在表文件STUD.DBF的结构复合索引文件中,先按性别再按学号追加一个标识XBXH。

  USE STUD

  INDEX ON 性别+学号 TAG XBXH

  【例5】在表文件STUD.DBF中,先按性别再按是否团员建立一个独立复合索引文

  件SXBTY.CDX。

  USE STUD

  INDEX ON 性别+IIF(是否团员,’团员’,’非团员’) TAG 性别团员 OF SXBTY

  2)菜单方式

  ① 打开表文件。

  ② 选择【显示】|【表设计器】命令,打开表设计器对话框,选择“索引”标签。

  ③ 在索引名中输入索引标识名,在类型的下拉列表框中确定一种索引类型,在表达式中输入索引关键字表达式,在筛选中输入确定参加索引的记录条件,在排序序列下默认的是升序按钮,单击可改变为降序按钮。

  ④ 确定好各项后,选择“确定”,关闭表设计器,同时索引建立完成。

  ⑤ 同样的方法也可以将以前建立的索引调出,利用表设计器上的“插入”或“删除”按钮进行插入或删除。

  注意:用表设计器建立的索引都是结构复合索引文件。

  (3).索引文件的打开

  【格式1】USE <文件名> [INDEX <索引文件名表|?>][ORDER <数值表达式2> | <单索引文件> | [TAG] <标识名> [OF <复合索引文件名>][ASCENDING | DESCENDING]]

  【功能】打开指定的表文件及相关的索引文件

  【说明】:

  INDEX <索引文件名表> | ?:表示打开的索引文件;如果选择“?”,则系统将出现“打开”对话框,供用户选择索引文件名;如果<索引文件名表>中的第一个索引文件是单索引文件,则它是主索引文件,若第一个索引文件是复合索引文件,则表文件的记录将以物理顺序被访问。

  <索引文件名表>:指定要打开的索引文件,索引文件中的文件扩展名可以省略,但如果存在同名的单索引文件和复合索引文件,必须带扩展名。

  <索引文件名表>中的单索引文件和复合索引文件的标识有一个唯一的编号,编号最小值为1,编号规则为:先将单索引文件按它们在<索引文件名表>中的顺序编号,再将结构复合索引文件按标识产生的顺序连续编号,最后将独立复合索引文件中的标识先按它在<索引文件名表>中的顺序,再按标识产生的顺序连续编号。

  [ORDER]子句:指定主索引。选择此选项时,主索引文件将不是<索引文件名表>中的第一个单索引文件,而是此选项指定的单索引文件或标识。[ORDER]子句中各选项的含义如下:

  ..<数值表达式2>指定主索引的编号,若<数值表达式2>的值为0,表示不设主索引。

  ..<单索引文件>指定的单索引文件设置为主索引。

  .. [TAG] <标识名> [OF <复合索引文件名>]:表示将<复合索引文件名>中的指定标识作为主索引。[OF <复合索引文件名>]缺省表示为结构复合索引文件。

  ASCENDING | DESCENDING:表示主索引被强制以升序或降序索引;缺省此选项,主索引按原有顺序打开。

  【格式2】SET INDEX TO [<索引文件名表> ] [ORDER <数值表达式> | <单索引文件名> | [TAG] <标识名> [OF <复合索引文件名>] [ASCENDING | DESCENDING]][ADDITIVE]

  【功能】在已打开表文件的前提下, 打开相关索引文件。

  【说明】ADDITIVE:表示保留以前打开的索引文件。否则,除结构复合索引文件外,以前打开的其他索引文件都将被关闭。

  (4).索引文件的关闭

  【格式1】USE

  【功能】关闭当前工作区中打开的表文件及所有索引文件。

  【格式2】SET INDEX TO

  【功能】关闭当前工作区中打开的所有单索引文件和独立复合索引文件。

  【格式3】CLOSE INDEXS

  【功能】关闭当前工作区中打开的所有单索引文件和独立复合索引文件。

  注意:结构复合索引文件不能用以上命令关闭,它随表文件的打开而打开,随表文件的关闭而关闭。

  (5).索引的删除

  1)标识的删除

  【格式】DELETE TAG <标识名1> [OF <复合索引文件名1>][, <标识名2>

  [OF <复合索引文件名2>]] ...

  或:DELETE TAG ALL [OF <复合索引文件名>]

  【功能】从指定的复合文件中删除标识

  【说明】OF <复合索引文件名>:指定复合索引文件名,若缺省,则为结构复合索引文件。

  2)单索引文件的删除

  【格式】DELETE FILE <单索引文件名>

  【功能】删除指定的单索引文件

  【说明】关闭的索引文件才能被删除,文件名必须带扩展名。

  【例】删除表文件STUD.DBF 的单索引文件STUD.IDX 及结构复合

  索引文件中的所有标识。 DELETE FILE STUD.IDX

  USE STUD

  DELETE TAG ALL

分享到:
本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2007-2013 中华考试网(Examw.com) All Rights Reserved