您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > vf基础课件第四章 索引与查询
4.1表的索引4.1.1索引的基本概念1、建立索引的目的(1)进行数据进行排序,加速检索数据的速度、查询和打印记录。(2)选择记录、控制重复字段值的输入(3)建立表间的关系2、索引与索引文件VisualFoxPro6.0中的一个表可以建立多个不同的索引,并保存在索引文件中。(1)索引与索引文件最简单的索引文件可以简单地视为这样一个文件:它仅由两个字段组成,一个字段是建立索引的关键字段(表中用来作为索引依据的字段),另一个字段是关键字段在原表中对应的记录号。索引文件可以理解成是由源表产生的一个新文件,存储了一组组记录指针和排过顺序的索引关键字段值,索引并不改变源表中所存储数据的顺序,它只改变了读取每条记录的顺序。(2)索引文件的分类VisualFoxPro6.0支持传统的单入口索引文件(扩展名为.IDX)和复合索引文件(扩展名.CDX)。.IDX索引文件中只包含一个索引,是为了与FOXBASE+开发的应用程序相兼容而保留下来的。.CDX复合索引文件:结构化复合索引和非结构化复合索引。结构化复合索引的主文件名与表的主文件名相同,并随着表的打开而自动打开,在添加、更改或删除记录时会自动进行调整;而非结构化复合索引文件的主文件名与表的文件不同,必须用命令打开。(3)索引关键字与索引标记名索引关键字索引标记名每一个复合索引可以建立或包含多个索引,每一索引代表一种处理记录的顺序。为了区分不同的索引,每个索引需要有一个索引标记名(索引名)。3、索引的种类(P86)(1)主索引:每个数据表只能有一个主关键字段,并要求该字段输入值是唯一的,不允许重复。(2)候选索引:在数据表中可以建立多个候选索引,但数据必须唯一。(3)普通索引:字段中的数据不需要是唯一的,允许字段中的值重复。(4)惟一索引:索引文件对每一个特定的关键字只存储一次,而忽略以后记录。4.1.2建立索引1、建立结构化复合索引文件在VisualFoxPro6.0中,结构化复合索引是一种最常用的索引文件类型。VisualFoxPro6.0中建立的方式有表设计器中建立和命令方式两种。(1)表设计器中创建索引文件索引文件不能孤立地存在,必须依附于相应的数据表。表设计器中创建结构化复合索引的过程如下:①“表设计器”中,单击“索引”选项卡,然后在“索引名”框中,键入索引名。例如:②从“类型”列表中,选定索引类型。注意,自由表不允许指定主索引,其它索引类型均可指定;只有数据库表才能指定主索引。③在“表达式”框中,键入作为记录排序依据的字段名或表达式(索引关键字),或者通过单击表达式框后面的对话按钮,显示“表达式生成器”来建立表达式。④若想有选择地输出记录,可在“筛选”框中输入筛选表达式,或者选择该框后面的按钮来建立表达式。⑤索引名左侧的箭头按钮表示升序还是降序,箭头方向向上时按升序排序,向下时则按降序排序。用鼠标单击进行选择。⑥设置完后,单击“确定”按钮,即可建立结构化复合索引文件。建立后的索引如需要修改,其方法与建立时基本相同。(2)命令方式创建索引【格式】INDEXON表达式TAG索引标识名[FOR条件表达式][ASCENDING|DESCENDING][UNIQUE|CANDIDATE]【功能】建立结构化复合索引文件①命令中的表达式、索引标识名、FOR条件短语分别对应表设计器建立索引中的表达式、索引名和筛选。②ASCENDING|DESCENDING用来指定某一索引表达式的升/降序,缺省为ASCENDING,即升序。③UNIQUE用于指定惟一索引,即若有多个记录具有相同的索引关键字段值,索引时只取其中第一个记录。④CANDIDATE选项指定创建候选索引。不指明索引类型时将建立普通索引。【例】USE员工INDEXON编号TAGnbhCANDINDEXON性别+CTOD(工作时间)TAGxbgzsj2.*建立非结构化复合索引文件非结构化复合索引文件不能在表设计器中同表一起建立,只能用命令建立。【格式】INDEXON表达式TAG索引标识名OF独立复合索引文件名[FOR条件表达式][ASCENDING|DESCENDING][UNIQUE|CANDIDATE]【例】USE员工INDEXON编号TAGbhOFRS.CDX4.1.3索引文件的使用1、指定主控索引主控索引:一个表可以建立多个索引文件,每个索引文件中又可能包含多个索引,一种索引就是一种排序方式,所以在使用索引时,必须指明哪一个索引是对表记录排序起作用的,即主控索引。需要特别注意的是,主控索引与主索引是完全不同的概念。主索引是用来控制数据的完整性的,而主控索引是用来指定目前记录排列顺序的。没有指定哪一个索引为主控索引之前,表的访问顺序仍然是原来的物理顺序,即按记录号的顺序访问。和表一样,在使用索引时需要将相应的索引文件打开,并可以根据需要关闭索引文件。(1)指定结构化复合索引文件中的索引为主控索引若要指定结构化复合索引文件中的某一索引为主控索引有两种方法:一是利用菜单进行操作,二是利用USE和SETORDERTO命令。①菜单操作浏览窗口中打开表,执行系统“表”菜单下的“属性”命令,即弹出“工作区属性”对话框。注意:指定主控索引后,浏览窗口中记录的排列顺序会根据选择的主控索引发生变化。同样,设定主控索引后,利用LIST、DISPLAY命令输出的记录顺序也是排序后的顺序。主控索引只是改变了记录输出的顺序,记录在数据表中的物理顺序并没有发生变化。指定了主控索引后,TOP和BOTTOM均是指索引排序后的逻辑上的第一条和最后一条记录,即排序后记录的第一条记录和最后一条记录,而不是表物理顺序的第一条和最后一条记录。同样,用SKIP命令移动记录指针时也是排序后的逻辑记录顺序而言。②命令操作【格式一】USE表名ORDER[TAG]索引标识名【格式二】SETORDERTO[[TAG]索引标识名]【功能】指定结构化复合索引的主控索引。【说明】格式一是在打开表的同时指定主控索引标识名,其中TAG任选。•格式二是在打开了表之后,再单独指定主控索引标识名。不带任何参数的SETORDERTO命令取消已设置的主控索引,按原物理顺序访问表的记录。【例】USE员工ORDERbianhao或USE员工SETORDERTOTAGbianhao(2)*指定非结构化复合索引中的索引为主控索引对于非结构化复合索引文件,需要用命令将其打开和关闭,只有打开要使用的非结构化复合索引文件后,才能指定其中的索引为主控索引。【格式一】USE表名ORDER[TAG]索引标识OF独立复合索引文件名【格式二】SETORDERTO[[TAG]索引标识名]OF独立复合索引文件名2.关闭索引文件只要关闭了表,就可以关闭相应的索引文件,若想在不关闭表的情况下关闭非结构化复合索引文件,可使用CLOSEINDEX命令或SETINDEXTO命令。结构化复合索引文件只有关闭表文件后,才能自动关闭。【格式一】SETINDEXTO【格式二】CLOSEINDEX3.使用索引快速查找记录建立了索引并指定主控索引以后,就可以采用快速方法进行表中记录的查找,而且由于索引关键字段数据相同的记录连续排列在一起,所以可以连续访问,从而提高了查找速度。例如,若已经按姓名建立了索引,若查找姓张的所有记录,只要找到第一个姓张的记录,其他张姓职工的记录都在其后。在VisualFoxPro6.0中,FIND命令和SEEK命令都可在指定主控索引的情况下进行记录的操作。由于FIND命令主要为了与旧版本兼容且使用不方便,所以只介绍SEEK命令。【格式】SEEK表达式【功能】将记录指针定位于表中索引关键字与指定表达式值匹配的第一个记录上。①用SEEK命令之前,一定要打开相应的表,并指定主控索引,主控索引的类型、含义与该命令中表达式的类型、含义相匹配。②若找到了相应的记录,则FOUND()值为.T.,EOF()值为.F.,并将记录指针定位于表中索引关键字与指定表达式的值匹配的第一个记录上;若未找到相应的记录,则FOUND()的值为.F.,EOF()值为.T.。【例如】USE员工SETORDERTOTAGbianhaoSEEK“090102”?FOUND()DISP
本文标题:vf基础课件第四章 索引与查询
链接地址:https://www.777doc.com/doc-3361669 .html