VFP第三章表的创建和使用3.4-3.5 索引与常用函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 索引(Index)

索引是根据索引关键字(即索引表达式)的值进行逻辑排序的一组指针。索引提供对数据的快速访问,可以对表的各行强制实现唯一性。索引文件由索引序号和对应于索引序号的表的记录号(亦称为指针)组成。

2. 索引关键字(Index Key)

索引关键字是用来作为建立索引的依据。它通常是一个字段或字段表达式。例如,学生表(XS.DBF)中有8个记录,输入时的物理顺序如下:

记录号XH XM XB ZYDH XIMING

1 950101 李林男102001 信息管理系

2 950106 高山男102001 信息管理系

3 950105 陆海涛男102001 信息管理系

4 950104 柳宝女102001 信息管理系

5 950102 李枫女102001 信息管理系

6 950103 蓝军男102001 信息管理系

7 960201 林一风男109003 计算机科学系

8 960203 高平男109003 计算机科学系

现以XH字段作为索引关键字,按升序建立索引,索引文件的情况如下:P83

Index # Table Record # XH

1 1 950101

2 5 950102

3 6 950103

4 4 950104

5 3 950105

6 2 950106

7 7 960201

8 8 960203

第一列是索引号,第二列是对应于表中的记录号。

当该索引起作用时,浏览学生表时,记录按学号的顺序排列。

索引表达式的构成2-1

索引表达式的构成与一般表达式的构成一样,只是索引表达式一般与表的字段有关。索引表达式可以由单个字段构成,也可以是多个字段的

组合。需要注意的是,不能基于备注型字段和通用型字段建立索引。索引表达式的构成2-2

对于基于多个字段的索引表达式,可以按多个字段的值进行排序。用多个字段建立索引表达式时,要注意以下几点。

⒈字符型表达式

⒉算术表达式

⒊不同类型字段构成一个表达式

⒈字符型表达式

⒈表达式中字段的前后顺序将影响索引的结果。如“xs.ximing+xs.xb”和“xs.xb+xs.ximing”两个表达式的的索引顺序是不一样的,前者是先按“系名”排序,在系名的值相同的情况下,才按“性别”字段的值排序;而后者是先按“性别”字段的值排序。

INDEX ON XIMING + XB TAG XXB

INDEX ON XB + XIMING TAG XBX

⒉算术表达式

索引将按照表达式的运算结果进行排序。

例如:按先按工龄排序,再按基本工资排序

JS.GL + JS.JBGZ(错)

STR(JS.GL)+STR(JS.JBGZ)

STR(KSS)+STR(XF) P83

⒊不同类型字段构成一个表达式

不同类型字段构成一个表达式时,必须转换为同一类型。

例如:按照性别与工龄排序

Xb+str(gl)

若先按gzrq排序,相同时再按JBGZ排序,则索引表达式应为:DTOC(gzrq,1)+STR(jbgz)

3.索引标识(Tag)

一张表可以创建多个索引。为了区分一张表的不同索引,每一个索引必须有一个索引名,即索引标识。索引标识的命名必须满足命名规则。在实际应用中,索引标识一般要与其对应的索引关键字相同或相近,以便于记忆。例如:xh(xh字段的索引)、xdhxb(基于xdh和xb字段的索引)。索引标识名但必须以下划线、字母或汉字开头,并且不能超过10个字节。

4. 索引的类型

可以创建的索引有4种类型:主索引、候选索引、唯一索引和普通索引。其中,主索引只能在数据库中创建。

(1).候选索引(Candidate Indexes)

(2). 主索引(Primary Indexes)

(3). 普通索引(Regular Indexes)

(4). 唯一索引(Unique Indexes)

(1).候选索引(Candidate Indexes)

候选索引是以表的候选关键字为索引表达式而创建的索引。候选索引要求:对于表的所有记录来说,指定的索引表达式的值不允许有重复的。如果对有重复数据的字段进行候选索引,VFP将出错;如果对建立了候选索引的表,追加或修改记录,一旦出现重复的值,系统将拒绝输入或修改。

候选索引可用于数据库表和自由表。一张表中可以建立多个候选索引。例如,在课程表中用课程代号创建索引,再用课程名创建一个候选索引。

(2).主索引(Primary Indexes)

在数据库表中,可以从候选索引中选取一个作为主索引。每张数据库表只能创建一个主索引。组成主索引关键字的字段或表达式,在表的所有记录中不能有重复的值。例如,学生表中的学号可以创建主索引,因为在每一张表中每一个学生记录的学号值是唯一的。而学生姓名则不能建立主索引,可能有同名的学生,若建立了主索引,一旦出现同名的学生数据输入,则系统拒绝接收其数据输入。

自由表不能建立主索引。主索引只适用于数据库表的结构复合索引中。

(3).普通索引(Regular Indexes)

可以决定记录的处理顺序,但是允许关键字段或表达式的值可以出现重复。对一个表可以创建多个普通索引。在普通索引上查找的记录不具有唯一性。例如,对教师表按XM字段创建普通索引,也可以按工龄创建普通索引,在工龄索引中同一个工龄值可能出现若干次(因为不能排除工龄相同的可能性)。

(4).唯一索引(Unique Indexes)

对于唯一索引来说,索引表达式的值可以有重复,但在索引文件中重复的值(记录号)仅存储一次。例如,对教师表建立以系名作为关键字段的唯一索引,在此索引上浏览教师表时,仅显示每个系的第一个教师。

相关文档
最新文档