好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

32页
  • 卖家[上传人]:壹****1
  • 文档编号:570324374
  • 上传时间:2024-08-03
  • 文档格式:PPT
  • 文档大小:265.66KB
  • / 32 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 8.1 索引概述v1.索引的概念索引的概念v 所谓索引就是按照索引表达式(数据表的某个字段或字段的组合)的值使表中的记录有序排列的一种技术v 一般情况下,标中记录的顺序是由数据输入的前后次序决定的,并用记录号予以标识除非有记录插入或记录删除,否则表中的记录顺序总是不变的 v 索引实际就是一种排序,但是他不改变表中数据的物理顺序,而是另外建立一个数据号列表索引文件不能单独使用,必须同源数据表文不能单独使用,必须同源数据表文件一起使用件一起使用v索引一旦建立后,就产生了一个相应的索引文件索引文件中只包含两项信息:一是每条记录索引关键字表达式的值,另一项是与其对应的记录号既在索引文件中只保留索引关键字和记录号信息,并不存在记录的字段数据,因此它不能单独使用,必须同时打开原数据文件,才能使不能单独使用,必须同时打开原数据文件,才能使索引文件有效索引文件有效v 在VF中,同一个数据库中的多个表以相同属性字段建立索引后,可根据索引表达式的值建立数据库中多个表间的关联关系 第8章 索引及记录操作 2、索引的种类、索引的种类 根据关键字段值是否重复可将索引分为四种类型:主索引、候选索引、惟一索引、普通索引。

      主索引:索引表达式的值唯一能够标识每个记录的索引,即索引表达式的值不允许重复主索引只能在数据库表中建立,一个表只能创建一个主索引候选索引:索引表达式的值不允许重复、有资格被选做主索引的索引数据库表和自由表都可以建立侯选索引,一个表可以有多个候选索引普通索引:是除了上面几种索引之外的一种索引,它允许索引关键字有重复的值,对有相同索引表达式值的记录按原有的先后顺序集中排列在一起惟一索引:允许索引关键字有重复的值的索引,当有重复值出现时,索引文件只保存重复的第一次值 3 3、创建索引、创建索引1 1)利用表设计器创建索引)利用表设计器创建索引2 2)利用命令创建索引)利用命令创建索引A 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|DESCENDING][Unique][Candidate]说明:说明:①TAG<索引标识名>:结构化索引文件每个索引都必须有一 个索引标识②记录的顺序默认为升序,也可用“Ascending”表示,降序用“Descending”;][Unique]建立唯一索引,[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 排序就是根据数据表的某些字段(称为关键字段)的“值”(称为关键字值)的大小重排记录,(可为升序、可为降序)排序后将产生一个新新的可单独使用的数据表文件单独使用的数据表文件(*.DBF)。

      原数据表文件不变原数据表文件不变 命令方式: (1)命令格式: SORT TO <新文件名> ON <字段名1> [/A|/D][/C] [,<字段名2> [/A|/D][/C] [<范围>] [For<条件表达式1>] [Fields<字段名表>](2)命令功能: 根据”关键字段”的值(称为关键字值)的大小重排记 录,产生一个新的可单独使用的数据库文件(*.DBF) 选项/A和/D分别表示升序或降序,不选择则默认为按升序排列选项/C表示不区分字母的大小写 2、按索引字段排序 a、先在“表设计器”窗口中,为表建立多个索引; b、选择“显示”下拉菜单“浏览”,进入“浏览”窗口; c、在“浏览”窗口下,打开“表”,选择“属性”,进入“工作区属性”窗口,查看所有操作3、按索引表达式排序 8.4 记录定位v7.1 绝对定位绝对定位v1、菜单方式、菜单方式v2、命令方式、命令方式v无条件记录定位:goto(go);goto top;goto bottom; v有条件记录定位:直接(顺序)定位和索引(快速)定位;v 定位命令仅仅是对记录指针进行定位的一种操作,它并不能显示定位的记录内容。

      如要显示,则需要使用并且只能使用Display命令 v3、相对定位vskip; v7.3 条件(顺序)定位条件(顺序)定位v 所谓顺序定位是指在表中从第一条记录开始,按照顺序搜索表,把记录指针定位在满足条件的第一条记录上v 顺序定位适合于复杂条件或小型表的定位v命令格式: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.3 7.3 索引定位索引定位 索引定位是一种快速定位记录的方法,利用索引定位将明显提高查询效率,适用于大型表的查询。

      它要求数据表文件的记录是有序的,所以,事先必须对数据表文件进行索引,而且要求查询内容所在的字段或表达式必须是索引文件的索引关键字段或表达式 (查什么按什么索引) 索引定位有两种命令格式:索引定位有两种命令格式:格式一: Find <表达式>格式二: Seek <表达式>1.FIND1.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.SEEK2.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 小结小结:(1)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 记录删除与恢复v随着表文件的不断更新,必然会出现一些无用的记录,需要删除表文件记录的删除有二种:逻辑删除和物理删除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 ◆用Delete作逻辑删除v ◆用Pack命令才能真正删除已加删除标记的记录v 1)命令方式v Delete [<范围>] [For<条件表达式>]v 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/10/31} vBrowse vRecall For Year(出生日期)=1977 vBrowse &&观察运行结果,1977年出生的记录其删除标记被除掉vGo 3 vDelete &&对第三号记录作删除标记vBrowse &&观察运行结果vZap &&物理删除全部记录vBrowse &&表文件中无任何记录,全部物理删除vClose All 8.6 记录修改v记录的修改v   表记录的修改有手工修改方法和替换修改方法两类。

      v  ◆手工输入修改法适用于少量数据的修改,需要用户从v   键盘上输入修改数据v  ◆替换法适用于成批的有规律的数据修改.v1)手工输入修改法v ① 命令方式v  Edit  [For<条件>] [Fields<字段名表>] v  Change [For<条件>] [Fields<字段名表>] v  Browse [For<条件>] [Fields<字段名表>] v◆ 三条命令均具有修改记录的功能修改结束后,按v Ctrl+W存盘退出修改窗口v◆ Edit和Change如果没有作For<条件>选择,通过Go定位v 或在Edit、Change后指明记录号,则可对包括当前记录v 后的所有记录进行修改v◆ 修改有“浏览”和“编辑”两种窗口界面,可通过“显示”菜单v 下的“浏览”和“编辑”来转换v◆ 修改备注型字段和通用型字段的方法与添加记录相同,v 即双击“Mem”和“Gen”,在弹出的编辑窗口中进行修改v② 菜单方式v◆ 打开表文件v◆ 单击“显示”及其下拉菜单中的“浏览”选项,表被显v 示用滚动条将光标定位在需要修改的记录的有关字段v 处,并修改数据v◆ 修改结束后,按CTRL+W存盘并退出修改状态。

      v例:在学生档案表.Dbf中,将学号为“9921203”的记录的“班级”修改为“99211”,将“个人简历” 添加“获2003年学院三好学生的光荣称号”内容v Use 学生档案表v Edit Fields 学号,班级,个人简历 For 学号=”9921203”v例:理解修改记录命令示例v Use 学生档案表v Go 3v Change &&可对3号以后的记录进行修改 v(3)记录的替换v 表文件的记录有时会遇到大批量的有规则的数据要修改的问题,用手工修改法很麻烦、费时这时,可以在程序设计中使用替换法用Replace命令中指定的表达式的值来替换字段原有的值vReplace <字段名1> With <表达式1> [Additive]v [,<字段名2> With<表达式2> [Additive]……] v [<范围>] [For <条件>] [While <条件>] v参数说明:v◆ 用With后指定的<表达式>的值来替换当前表中指定范围内满足条件的字段的原有值v◆ 表达式的数据类型必须与替换的字段数据类型一致。

      v◆ 若命令中<范围>和<条件>等可选项都缺省时,则只对当前记录进行替换v◆ 只有在对备注字段的数据进行替换时,可能需要使用[Additive]可选项选择[Additive],则表达式的值会添加到备注字段中已有数据的尾部否则,替换字段原有的数据v◆ 通用型字段不能使用替换法v◆ 对多个字段的值进行替换,字段之间用“,”分隔 v例:现以某单位的工资管理为例,说明Replace的多种用法v◆ 对选定记录字段进行替换修改v Use 基本工资表v Replace 基本工资 With 基本工资*1.2,岗位津贴 With 岗位津贴+40 For 职称=”教授”v Go 5v Replace 岗位津贴 With 岗位津贴+60 v Replace All 奖金 With 奖金+20 。

      点击阅读更多内容
      相关文档
      【全国硕士研究生入学统一考试政治】2020年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2015年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2010年考研政治真题.docx 【全国硕士研究生入学统一考试政治】1996年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2001年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2016年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2000年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2007年考研政治真题.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2004年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2003年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2019年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2009年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2001年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2021年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2014年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2018年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2008年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2011年考研政治真题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.