VF数据库第8章_索引及记录操作.ppt_第1页
VF数据库第8章_索引及记录操作.ppt_第2页
VF数据库第8章_索引及记录操作.ppt_第3页
VF数据库第8章_索引及记录操作.ppt_第4页
VF数据库第8章_索引及记录操作.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8.1 索引概述,1.索引的概念 所谓索引就是按照索引表达式(数据表的某个字段或字段的组合)的值使表中的记录有序排列的一种技术。 一般情况下,标中记录的顺序是由数据输入的前后次序决定的,并用记录号予以标识。除非有记录插入或记录删除,否则表中的记录顺序总是不变的。 索引实际就是一种排序,但是他不改变表中数据的物理顺序,而是另外建立一个数据号列表。索引文件不能单独使用,必须同源数据表文件一起使用。 索引一旦建立后,就产生了一个相应的索引文件。索引文件中只包含两项信息:一是每条记录索引关键字表达式的值,另一项是与其对应的记录号。既在索引文件中只保留索引关键字和记录号信息,并不存在记录的字段数据,因此它不能单独使用,必须同时打开原数据文件,才能使索引文件有效。 在VF中,同一个数据库中的多个表以相同属性字段建立索引后,可根据索引表达式的值建立数据库中多个表间的关联关系。,第8章 索引及记录操作,2、索引的种类 根据关键字段值是否重复可将索引分为四种类型:主索引、候选索引、惟一索引、普通索引。 主索引:索引表达式的值唯一能够标识每个记录的索引,即索引表达式的值不允许重复。主索引只能在数据库表中建立,一个表只能创建一个主索引。 候选索引:索引表达式的值不允许重复、有资格被选做主索引的索引。数据库表和自由表都可以建立侯选索引,一个表可以有多个候选索引。 普通索引:是除了上面几种索引之外的一种索引,它允许索引关键字有重复的值,对有相同索引表达式值的记录按原有的先后顺序集中排列在一起。 惟一索引:允许索引关键字有重复的值的索引,当有重复值出现时,索引文件只保存重复的第一次值。,3、创建索引 1)利用表设计器创建索引 2)利用命令创建索引 A、创建非结构索引 INDEX ON To FOR ASCENDING Descending 命令功能:为当前表按 的值建立一个非结构索引文件,索引文件扩展名.IDX。 例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建立唯一索引,Candidate建立候选索引,否则建普通索引 。 例: 将学生档案表.dbf按籍贯和高考成绩降序索引,索引标识为jgcj,按学号升序索引,索引标识为xh,建立结构化复合索引文件。 USE 学生档案表 index on 籍贯+str(高考成绩,5) desc tag jgcj index on 学号 tag xh,8.2建立表间的关联关系,1、建立表间“一对一”关系(p150) 2、建立表间“一对多”关系,3、设置参照完整性,8.3 记录排序,1、物理排序 排序就是根据数据表的某些字段(称为关键字段)的“值”(称为关键字值)的大小重排记录,(可为升序、可为降序)排序后将产生一个新的可单独使用的数据表文件(*.DBF)。原数据表文件不变。,命令方式: (1)命令格式: SORT TO ON /A|/D/C , /A|/D/C For Fields (2)命令功能: 根据”关键字段”的值(称为关键字值)的大小重排记 录,产生一个新的可单独使用的数据库文件(*.DBF)。 选项/A和/D分别表示升序或降序,不选择则默认为按升序排列。选项/C表示不区分字母的大小写。,2、按索引字段排序 a、先在“表设计器”窗口中,为表建立多个索引; b、选择“显示”下拉菜单“浏览”,进入“浏览”窗口; c、在“浏览”窗口下,打开“表”,选择“属性”,进入“工作区属性”窗口,查看所有操作。 3、按索引表达式排序,8.4 记录定位,7.1 绝对定位 1、菜单方式 2、命令方式 无条件记录定位:goto(go);goto top;goto bottom; 有条件记录定位:直接(顺序)定位和索引(快速)定位; 定位命令仅仅是对记录指针进行定位的一种操作,它并不能显示定位的记录内容。如要显示,则需要使用并且只能使用Display命令。 3、相对定位 skip;,7.3 条件(顺序)定位 所谓顺序定位是指在表中从第一条记录开始,按照顺序搜索表,把记录指针定位在满足条件的第一条记录上。 顺序定位适合于复杂条件或小型表的定位。 命令格式: 1)找首条: Locate For 范围 2)找后续(继续查询): Continue &按照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.3 索引定位 索引定位是一种快速定位记录的方法,利用索引定位将明显提高查询效率,适用于大型表的查询。 它要求数据表文件的记录是有序的,所以,事先必须对数据表文件进行索引,而且要求查询内容所在的字段或表达式必须是索引文件的索引关键字段或表达式。 (查什么按什么索引),索引定位有两种命令格式: 格式一: Find 格式二: Seek 1.FIND命令 (1) 命令方式 命令格式: FIND / 功能: 在打开的以查询内容所在字段为索引关键字的索引文件中,快速查找关键字段等于或的第一个记录。,说明: 执行命令前,必须首先建立以查询内容所在字段或表达式为索引关键字的索引文件,若已存在则打开该索引文件,且将其设置为主索引。 FIND命令通常适用于字符数据类型及数值型,字符串中的字符可以不用定界符。 如果查找成功,则把记录指针指向逻辑顺序中第一条符合条件的记录,且FOUND()函数的值为.T.,否则,记录指针指向文件未尾,FOUND()函数的值为.F.。,例题: 例题1:在学生档案表中,用FIND命令查找学号为“9832101”的学生。 USE 学生档案表 index on 学号 to xh FIND 9832101 DISPLAY 例题2:在学生成绩表中,用FIND命令查找成绩为78的学生. use 学生成绩表 index on 成绩 to cj find 78 disp 例题3.在学生档案表.DBF数据表文件中,以变量的形式,用FIND命令查找姓名为 “刘丽红”的学生(以姓名为索引关键字的索引文件XM.IDX已建立)。,2.SEEK命令 FIND命令只能对字符型和数值型的数据进行查找,在某些情况下使用起来不方便,为此,系统中又提供了功能更强的SEEK命令。 格式:SEEK 功能:在打开的以查询内容所在字段为索引关键字的索引文件中,快速查找关键字段等于值的第一个记录。,其中: (1)SEEK命令适用于一切数据类型(C、N、D、L),表达式可以是常量、变量和函数所组成,但必须与索引表达式一致。表达式为C、D、L(.T.,.F.)常量时,必须使用相应的定界符,如:“ ”、 。 (2)表达式为变量时,要直接使用,不需要用宏代换函数。 (3)如果查找成功,则把记录指针指向逻辑顺序中第一条符合条件的记录,且FOUND()函数的值为.T.,否则,记录指针指向文件未尾,FOUND()函数的值为.F.。,例题3: 例题:在学生档案表.DBF数据表文件中,用SEEK命令查找学号为“9921205”的学生(以学号为索引关键字的索引文件XH.IDX已建立)。 USE 学生档案表 INDEX xh &打开以学号为索引关键字的索引文件XH.IDX SEEK “9921205” &必须使用定界符 DISPLAY,小结: LOCATE和SEEK、FIND都是用于在数据表文件中查询 定位记录指针,即把记录指针定位在满足条件的记录 上。特别强调:仅仅是定位记录指针。如要显示定位的 记录内容,则需要用DISPLAY命令。 (2) LOCATE和SEEK、FIND的不同之处: LOCATE是顺序查询定位,可以直接利用原数据表进行 定位操作,而SEEK、FIND命令是索引查询定位,必须 首先对原数据表按定位数据所在字段或表达式进行索 引,建立相应的索引文件或打开相应的索引文件、索引 标识的前提下才能进行定位操作。 LOCATE和CONTINUE相配合可以连续查询定位多条记 录,而SEEK、FIND只能查询定位单条记录。 LOCATE是用条件表达式的形式来定位,而SEEK、 FIND是用常量、变量或变量组成的表达式的形式来定 位。,(3) FIND和SEEK的不同之处: FIND命令适用于字符型和数值型数据,不可用于日期型和逻辑型数据类型。表达式为字符常量时,不须使用相应的定界符。表达式为变量时,不可直接使用,必须使用宏代换函数。 SEEK命令适用于数据类型(C、N、D、L),但若为C、D、L常量时,必须使用相应的定界符,如:“ ”、 、.。表达式为变量时,要直接使用,不需要用宏代换函数。,8.5 记录删除与恢复,随着表文件的不断更新,必然会出现一些无用的记录,需要删除。表文件记录的删除有二种:逻辑删除和物理删除。 (1)逻辑删除 逻辑删除仅对记录作逻辑删除标记,作了逻辑删除的记录可以用Recall恢复为正常记录。 1)命令方式 Delete For Recall For,例:逻辑删除学生档案表中第6条记录。 Use 学生档案表 Delete Record 6 recall &能实现被逻辑删除记录的恢复吗? 2)菜单方式 打开表选择需要作逻辑删除的记录,单击“表”,在弹出的快捷菜单中选择“删除记录”。 打开表,单击“表”,在弹出的快捷菜单中选择“恢复记录”。,(2)物理删除 作了物理删除的记录,则从磁盘中永久删除。要物理删除表文件记录。 应分两步进行: 用Delete作逻辑删除。 用Pack命令才能真正删除已加删除标记的记录。 1)命令方式 Delete For Pack 参数说明: 物理删除是对表中作了逻辑删除的记录从磁盘中彻底删除,这种删除是不可恢复的。 Pack命令执行后,将调整磁盘空间及记录号。但这部分磁盘空间只有在关闭表文件后,才能释放。,例: 物理删除学生档案表中99级的学生记录。 Use 学生档案表 Delete For Subs(学号,1,2)=”99” Pack 2)菜单方式 打开表,单击“表”,在弹出的快捷菜单中选择“彻底删除”。 (3)一次性物理删除表中的所有记录 Zap 参数说明: 该命令不需要先进行逻辑删除,直接使用ZAP可一次性物理删除表的全部记录,但要慎重使用。,例:在命令窗口中依次输出下列命令观察、分析各条命令执行的结果。 Use 学生档案表 Copy To Xsda &建立一备份文件 Use Xsda Delete For 专业代码=“021” .Or.专业代码=“031” List Pack &物理删除已作删除标记的记录 Browse Delete For 出生日期=1977/10/31 Browse Recall For Year(出生日期)=1977 Browse &观察运行结果,1977年出生的记录其删除标记被除掉 Go 3 Delete &对第三号记录作删除标记 Browse &观察运行结果 Zap &物理删除全部记录 Browse &表文件中无任何记录,全部物理删除 Close All,8.6 记录修改,记录的修改 表记录的修改有手工修改方法和替换修改方法两类。 手工输入修改法适用于少量数据的修改,需要用户从 键盘上输入修改数据。 替换法适用于成批的有规律的数据修改 1)手工输入修改法 命令方式 Edit For Fields Change For Fields Browse For Fields, 三条命令均具有修改记录的功能。修改结束后,按 Ctrl+W存盘退出修改窗口。 Edit和Change如果没有作For选择,通过Go定位 或在Edit、Change后指明记录号,则可对包括当前记录 后的所有记录进行修改。 修改有“浏览”和“编辑”两种窗口界面,可通过“显示”菜单 下的“浏览”和“编辑”来转换。 修改备注型字段和通用型字段的方法与添加记录相同, 即双击“Mem”和“Gen”,在弹出的编辑窗口中进行修改。 菜单方式 打开表文件。 单击“显示”及其下拉菜单中的“浏览”选项,表被显 示。用滚动条将光标定位在需要修改的记录的有关字段 处,并修改数据。 修改结束后,按CTRL+W存盘并退出修改状态。,例:在学生档案表.Dbf中,将学号为“9921203”的记录的“班级”修改为“99211”,将“个人简历” 添加“获2003年学院三好学生的光荣称号”内容。 Use 学生档案表 Edit F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论