VF数据库第8章索引及记录操作

上传人:资****亨 文档编号:488570188 上传时间:2024-05-13 格式:PPT 页数:32 大小:115.50KB
返回 下载 相关 举报
VF数据库第8章索引及记录操作_第1页
第1页 / 共32页
VF数据库第8章索引及记录操作_第2页
第2页 / 共32页
VF数据库第8章索引及记录操作_第3页
第3页 / 共32页
VF数据库第8章索引及记录操作_第4页
第4页 / 共32页
VF数据库第8章索引及记录操作_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《VF数据库第8章索引及记录操作》由会员分享,可在线阅读,更多相关《VF数据库第8章索引及记录操作(32页珍藏版)》请在金锄头文库上搜索。

1、8.1 索引概述v1.索引的概念索引的概念v 所谓索引就是按照索引表达式(数据表的某个字段或字段的组合)的值使表中的记录有序排列的一种技术。v 一般情况下,标中记录的顺序是由数据输入的前后次序决定的,并用记录号予以标识。除非有记录插入或记录删除,否则表中的记录顺序总是不变的。v 索引实际就是一种排序,但是他不改变表中数据的物理顺序,而是另外建立一个数据号列表。索引文件不能单独使用,必须同源数据表文不能单独使用,必须同源数据表文件一起使用件一起使用。v索引一旦建立后,就产生了一个相应的索引文件。索引文件中只包含两项信息:一是每条记录索引关键字表达式的值,另一项是与其对应的记录号。既在索引文件中只

2、保留索引关键字和记录号信息,并不存在记录的字段数据,因此它不能单独使用,必须同时打开原数据文件,才能使不能单独使用,必须同时打开原数据文件,才能使索引文件有效索引文件有效。v 在VF中,同一个数据库中的多个表以相同属性字段建立索引后,可根据索引表达式的值建立数据库中多个表间的关联关系。.第8章 索引及记录操作.2、索引的种类、索引的种类 根据关键字段值是否重复可将索引分为四种类型:主索引、候选索引、惟一索引、普通索引。主索引:索引表达式的值唯一能够标识每个记录的索引,即索引表达式的值不允许重复。主索引只能在数据库表中建立,一个表只能创建一个主索引。候选索引:索引表达式的值不允许重复、有资格被选

3、做主索引的索引。数据库表和自由表都可以建立侯选索引,一个表可以有多个候选索引。普通索引:是除了上面几种索引之外的一种索引,它允许索引关键字有重复的值,对有相同索引表达式值的记录按原有的先后顺序集中排列在一起。惟一索引:允许索引关键字有重复的值的索引,当有重复值出现时,索引文件只保存重复的第一次值。.3 3、创建索引、创建索引1 1)利用表设计器创建索引)利用表设计器创建索引2 2)利用命令创建索引)利用命令创建索引A A、创建非结构索引、创建非结构索引INDEX ON To FOR ASCENDING Descending命令功能:为当前表按 的值建立一个非结构索引文件,索引文件扩展名.IDX

4、。例1:将学生档案表.DBF数据表信工系(学号第3位为2)的学生按学号升序建立非结构索引文件xh.idx。USE 学生档案表 INDEX ON 学号 TO xh FOR SUBS(学号,3,1)=”2”ascending 当索引建立后,新建立的索引文件将自动打开且处于 主索引的位置,记录随即按该索引顺序来排列。.B、创建结构索引INDEX ON TAG FOR ASCENDING|DESCENDINGUniqueCandidate说明:说明:TAG:结构化索引文件每个索引都必须有一 个索引标识。记录的顺序默认为升序,也可用“Ascending”表示,降序用“Descending”;Unique

5、建立唯一索引,Candidate建立候选索引,否则建普通索引。例:将学生档案表.dbf按籍贯和高考成绩降序索引,索引标识为jgcj,按学号升序索引,索引标识为xh,建立结构化复合索引文件。USE 学生档案表 index on 籍贯+str(高考成绩,5)desc tag jgcj index on 学号 tag xh.8.2建立表间的关联关系v1、建立表间“一对一”关系(p150)v2、建立表间“一对多”关系3、设置参照完整性.8.3 记录排序v1、物理排序v 排序就是根据数据表的某些字段(称为关键字段)的“值”(称为关键字值)的大小重排记录,(可为升序、可为降序)排序后将产生一个新新的可单独

6、使用的数据表文件单独使用的数据表文件(*.DBF)。原数据表文件不变原数据表文件不变。.命令方式:(1)命令格式:SORT TO ON /A|/D/C ,/A|/D/C For Fields(2)命令功能:根据”关键字段”的值(称为关键字值)的大小重排记 录,产生一个新的可单独使用的数据库文件(*.DBF)。选项/A和/D分别表示升序或降序,不选择则默认为按升序排列。选项/C表示不区分字母的大小写。.2、按索引字段排序 a、先在“表设计器”窗口中,为表建立多个索引;b、选择“显示”下拉菜单“浏览”,进入“浏览”窗口;c、在“浏览”窗口下,打开“表”,选择“属性”,进入“工作区属性”窗口,查看所

7、有操作。3、按索引表达式排序.8.4 记录定位v7.1 绝对定位绝对定位v1、菜单方式、菜单方式v2、命令方式、命令方式v无条件记录定位:goto(go);goto top;goto bottom;v有条件记录定位:直接(顺序)定位和索引(快速)定位;v 定位命令仅仅是对记录指针进行定位的一种操作,它并不能显示定位的记录内容。如要显示,则需要使用并且只能使用Display命令。v3、相对定位vskip;.v7.3 条件(顺序)定位条件(顺序)定位v 所谓顺序定位是指在表中从第一条记录开始,按照顺序搜索表,把记录指针定位在满足条件的第一条记录上。v 顺序定位适合于复杂条件或小型表的定位。v命令格

8、式:v1)找首条:v Locate For 范围v2)找后续(继续查询):v Continue v&按照Locate指定的条件继续定位下一条记录.例:在学生挡案表.Dbf表中,查找姓“王”的学生。Use 学生挡案表 Locate For Subs(姓名,1,2)=”王”&如果用 Locate For“王”$姓名 可能会产生什么问题?Display&显示查询结果 Continue&继续定位查询下一个记录?Found()&Found()函数为.T.Display&显示第二条”王”姓记录 Continue&“End Of Locate Scope”显示定位结束?Eof()&Eof()函数为.T.7.

9、3 7.3 索引定位索引定位 索引定位是一种快速定位记录的方法,利用索引定位将明显提高查询效率,适用于大型表的查询。它要求数据表文件的记录是有序的,所以,事先必须对数据表文件进行索引,而且要求查询内容所在的字段或表达式必须是索引文件的索引关键字段或表达式。(查什么按什么索引).索引定位有两种命令格式:索引定位有两种命令格式:格式一:Find 格式二:Seek 1.FIND1.FIND命令命令(1)命令方式 命令格式:FIND/功能:在打开的以查询内容所在字段为索引关键字的索引文件中,快速查找关键字段等于等于或的第一个记录。.说明:执行命令前,必须首先建立以查询内容所在字段或表建立以查询内容所在

10、字段或表达式为索引关键字的索引文件达式为索引关键字的索引文件,若已存在则打开该索引文件,且将其设置为主索引。FIND命令通常适用于字符数据类型及数值型字符数据类型及数值型,字符串中的字符可以不用定界符。如果查找成功,则把记录指针指向逻辑顺序中第一条符合条件的记录,且FOUND()函数的值为.T.,否则,记录指针指向文件未尾,FOUND()函数的值为.F.。.例题:例题1:在学生档案表中,用FIND命令查找学号为“9832101”的学生。USE 学生档案表 index on 学号 to xh FIND 9832101 DISPLAY例题2:在学生成绩表中,用FIND命令查找成绩为78的学生.us

11、e 学生成绩表 index on 成绩 to cj find 78 disp例题3.在学生档案表.DBF数据表文件中,以变量的形式,用FIND命令查找姓名为“刘丽红”的学生(以姓名为索引关键字的索引文件XM.IDX已建立)。.2.SEEK2.SEEK命令命令 FIND命令只能对字符型和数值型的数据进行查找,在某些情况下使用起来不方便,为此,系统中又提供了功能更强的SEEK命令。格式:SEEK 功能:在打开的以查询内容所在字段为索引关键字的索引文件中,快速查找关键字段等于值的第一个记录。.其中:(1)SEEK命令适用于一切数据类型(C、N、D、L),表达式可以是常量、变量和函数所组成,但必须与索

12、引表达式一致。表达式为C、D、L(.T.,.F.)常量时,必须使用相应的定界符,如:“”、。(2)表达式为变量时,要直接使用,不不需要用宏代换函数。(3)如果查找成功,则把记录指针指向逻辑顺序中第一条符合条件的记录,且FOUND()函数的值为.T.,否则,记录指针指向文件未尾,FOUND()函数的值为.F.。.例题3:例题:在学生档案表.DBF数据表文件中,用SEEK命令查找学号为“9921205”的学生(以学号为索引关键字的索引文件XH.IDX已建立)。USE 学生档案表 INDEX xh&打开以学号为索引关键字的索引文件XH.IDX SEEK“9921205”&必须使用定界符 DISPLA

13、Y.小结小结:(1)LOCATE和SEEK、FIND都是用于在数据表文件中查询(2)定位记录指针,即把记录指针定位在满足条件的记录(3)上。特别强调:仅仅是定位记录指针。如要显示定位的(4)记录内容,则需要用DISPLAY命令。(2)LOCATE和SEEK、FIND的不同之处:LOCATE是顺序查询定位,可以直接利用原数据表进行 定位操作,而SEEK、FIND命令是索引查询定位,必须 首先对原数据表按定位数据所在字段或表达式进行索 引,建立相应的索引文件或打开相应的索引文件、索引 标识的前提下才能进行定位操作。LOCATE和CONTINUE相配合可以连续查询定位多条记 录,而SEEK、FIND

14、只能查询定位单条记录。LOCATE是用条件表达式的形式来定位,而SEEK、FIND是用常量、变量或变量组成的表达式的形式来定 位。.(3)FIND和SEEK的不同之处:FIND命令适用于字符型和数值型数据,不可用于日期型和逻辑型数据类型。表达式为字符常量时,不须使用相应的定界符。表达式为变量时,不可直接使用,必须使用宏代换函数。SEEK命令适用于数据类型(C、N、D、L),但若为C、D、L常量时,必须使用相应的定界符,如:“”、.。表达式为变量时,要直接使用,不需要用宏代换函数。.8.5 记录删除与恢复v随着表文件的不断更新,必然会出现一些无用的记录,需要删除。表文件记录的删除有二种:逻辑删除

15、和物理删除。v(1)逻辑删除v 逻辑删除仅对记录作逻辑删除标记,作了逻辑删除的记录可以用Recall恢复为正常记录。v 1)命令方式v Delete For v Recall For.v例:逻辑删除学生档案表中第6条记录。v Use 学生档案表v Delete Record 6v recall&能实现被逻辑删除记录的恢复吗?v2)菜单方式v 打开表选择需要作逻辑删除的记录,单击“表”,在弹出的快捷菜单中选择“删除记录”。v 打开表,单击“表”,在弹出的快捷菜单中选择“恢复记录”。.v(2)物理删除v 作了物理删除的记录,则从磁盘中永久删除。要物理删除表文件记录。v 应分两步进行:v 用Dele

16、te作逻辑删除。v 用Pack命令才能真正删除已加删除标记的记录。v 1)命令方式v Delete Forv Packv 参数说明:v 物理删除是对表中作了逻辑删除的记录从磁盘中彻底删除,这种删除是不可恢复的。v Pack命令执行后,将调整磁盘空间及记录号。但这部分磁盘空间只有在关闭表文件后,才能释放。.v例:物理删除学生档案表中99级的学生记录。v Use 学生档案表v Delete For Subs(学号,1,2)=”99”v Packv2)菜单方式v 打开表,单击“表”,在弹出的快捷菜单中选择“彻底删除”。v(3)一次性物理删除表中的所有记录v Zapv参数说明:v 该命令不需要先进行逻辑删除,直接使用ZAP可一次性物理删除表的全部记录,但要慎重使用。.v例:在命令窗口中依次输出下列命令观察、分析各条命令执行的结果。v Use 学生档案表v Copy To Xsda&建立一备份文件v Use Xsdav Delete For 专业代码=“021”.Or.专业代码=“031”v ListvPack&物理删除已作删除标记的记录vBrowsevDelete For 出生日期=1977/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号