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

《VFP索引与排序》.ppt

44页
  • 卖家[上传人]:资****亨
  • 文档编号:157839715
  • 上传时间:2020-12-27
  • 文档格式:PPT
  • 文档大小:502.50KB
  • / 44 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 索引与排序,什么是索引和排序 索引的构成和类型 创建索引 索引的编辑和应用 排序的创建和应用,.,记录的顺序 物理顺序:表中记录的存储顺序按记录输入的前后顺序存放 逻辑顺序:记录的处理顺序对记录按某个(些)字段的值进行排序了解索引与排序,,,排序,索引,重新组织 数据表数据,,,.,了解索引与排序,索引实际上是一种排序,但是它不改变数据表中数据的物理顺序,而是另外建立一个逻辑顺序号与记录号(物理顺序)的对照表表的逻辑顺序号是由某一字段的值的大小决定排序从物理上对表进行重新整理,按照指定的关键字段来重新排列表中数据记录的顺序,并将重新排序的结果形成一个新的数据表索引的概念,,,,,,,,索引:不改变物理顺序,所有关键字按升(降)排列,每个值对应原文件的一个记录号,确定记录的逻辑顺序,索引,逻辑顺序,,物理顺序,,.,只有索引关键字段值或索引表达式值(逻辑顺序号)与记录号(物理顺序) 一个索引表达式或索引关键字段值与记录号对应的内容又称之为一张“对照表”,用一个索引标识来标记 说明:一个表可同时建立多个索引,但只能有一个索引为主控索引索引文件的内容,控制表当前显示的顺序,.,,索引的概念,,索引,逻辑顺序,,关键字段值或索引表达式值,记录号,对照表,bh,索引标识,.,索引的构成,索引名 又叫索引标识(TAG)。

      是标记一个索引的名称 索引表达式或索引关键字段 索引表达式或索引关键字段的值是确定索引顺序的依据索引的构成与类型,.,索引的类型,主索引(Primary Indexes) 每张表只能有一个一般为表的关键字或索引表达式的值没有重复值的才能作为主索引 只存在数据库表中的结构复合索引中 候选索引(Candidate Indexes) 可有多个一般为表的关键字或索引表达式的值没有重复值的才能作为候选索引 自由表中也可建立索引的类型,普通索引(Regular Indexes) 一张表可有多个 数据库表和自由表均可有 唯一索引(Unique Indexes) 索引表达式中重复的值在索引表中只出现第一个,忽略重复值建立时,用户单独为其命名,建立时,用户未单独为其命名,与表文件同名,需使用单独命令打开、关闭,与表同时打开、关闭,为与FOXBASE兼容,含多个索引,,建立时,用户单独为其命名,需使用单独命令打开、关闭,索引文件的种类,索引,复合索引 (扩展名CDX),独立(单一)索引 (扩展名IDX),非结构复合索引,结构复合索引,.,索引文件的种类,复合索引文件(扩展名为.CDX) 定义: 由多个关键字段值和其对应的多个记录的物理位置构成。

      一个索引文件中有多张“对照表”) 结构化复合索引文件 索引文件名与表文件同名(由系统自动生成) 其打开和关闭与表文件同步,是表的一部分 表文件修改时,系统自动更新该索引文件一个索引文件有多个索引,.,,非结构化复合索引 索引文件名由用户给出,要用专门的命令打开 可随表文件关闭也可用命令关闭独立索引文件(扩展名为.IDX)(又称之单一索引文件) 只存储一个索引的文件,文件名由用户给出,要用专门命令打开不常用的索引或临时性的索引,.,为了控制字段的重复值或者对记录进行排序, 对数据表使用主索引或候选索引(对自由表 使用候选索引)决定索引类型时一般应遵循的原则,为了提高显示、查询、打印的速度,应使用 普通索引、候选索引或主索引菜单法: 在“表设计器”中创建 (只能创建结构复合索引文件),创建索引,,注意: 不能对备注型或通用型字段建立索引; 不要建立多余的无用的索引,会降低系统性能; 索引表达式是由多个字段组成时要注意书写格式和数据类型的一致即多个索引关键字段名间应用““号连接,且要用函数转换为一样的数据类型创建索引实例1,用菜单法对zgb.dbf表建立复合索引 以工作部门的升序排列,普通索引,索引标识为gzbm,并浏览显示。

      按jbgz1标识,建立以基本工资升序排列的普通索引 对男职工以其基本工资降序显示记录jbgz2) 以工作部门升序排列,若部门相同,则按工作时间的升序排列bmsj) 以工作部门升序排列,若部门相同时,则按基本工资降序排列bmgz),C,D,C,N,.,创建索引实例1,关键字表达式为C型和N型时,一般将数值型数据转为字符型数据,再用字符型连接符号“+”连接;或也可转为数值型数据: 转为字符型函数:STR(数值型数据,长度,小数位) 例:工作部门+str(106-基本工资*100) 转为数值型函数:VAL(数字字符型数据,长度) 例:val(工作部门)+基本工资 则原题意写为 val(工作部门)*106-基本工资*100,菜单操作中默认是升序排列,.,创建索引实例1,关键字表达式为C型和D型时,要将日期型数据转为字符型数据,再用字符型连接符号“+”连接 函数:DTOC(日期型数据) DTOS(日期型数据) “工作部门 工作时间” 工作部门+dtos(工作时间),.,操作示范,.,,结构化索引,非结构化索引,Index On Tag OF For 条件Ascending|Descending Unique|Candidate,Index On Tag For 条件 Ascending|Descending Unique|Candidate,创建索引,升 序 | 降 序,唯一索引 候选索引,命令法:,可以与字段同名,.,,在数据库中讲解,结构化索引,主索引的建立,Alter table add primary key Tag ,Index On Tag For 条件 Ascending|Descending Unique|Candidate,创建索引,升 序 | 降 序,唯一索引 候选索引,命令法:,可以不打开但建立索引后自动被打开,.,,单索引,,Index On To CompactUnique Additive,,建立新的索引文件时不关闭已打开的索引文件,创建索引,快速存 取索引,命令法:,.,创建索引实例2,用命令法对学生.dbf表建立复合索引 以籍贯的升序排列,普通索引,索引标识为jg,并浏览显示。

      按cj1标识,建立以外语成绩降序排列的普通索引 对男学生以其出生日期降序显示记录narq) 以性别升序排列,若性别相同,则按数学成绩降序排列xbcj) 以姓名降序排列,若姓名相同时,则按出生日期降序排列xmrq),.,创建索引实例2,用命令法对学生.dbf表建立复合索引 Use 学生 Inde on 籍贯 tag jg Brow Inde on 外语 tag cj1 desc List Inde on 出生日期 tag narq for 性别=“男” Disp all Inde on 性别+str(100-数学) tag xbcj Disp all Inde on 姓名+dtos(出生日期) tag xmrq desc,.,创建索引实例3,用命令法对学生.dbf表建立单索引 1.按数学成绩降序建立索引 Use 学生 Inde on 数学 to su 2.按姓名升序建立索引 Inde on 姓名 to name,3.按性别建立唯一索引,Inde on 性别 to xb2 uniq,.,索引的编辑和应用,索引文件的打开和关闭,结构复合索引文件随着表文件的打开和关闭而同时进行; 非结构复合索引文件和独立索引文件是用命令打开的。

      命令法打开索引文件,打开表文件的同时打开索引文件,Use 表文件名 Index 索引文件名表,表文件已打开后打开索引文件,Set Index To Additive,.,说明:,选择主控索引,菜单法建立的结构复合索引文件虽是打开的,但不是主控索引,需指定才成为主控索引.,用命令法建立的任一种索引,均为打开,并且直接为主控索引.,主控索引的概念,对当前表记录顺序起控制作用的索引称为主控索引任何时侯只有一个主控索引,设置主控索引,Set Order To,索引编号 IDX文件名 TAG 标识名OF CDX文件名,,,仅有此部分时为出取消主控索引,推荐,.,表文件打开且相应的索引文件已打开,菜单法选择主控索引,操作要点, 进入“工作区属性”窗口 “工作数据期“工具按钮,选择“属性”按钮,进入 或若为浏览表状态下选择菜单“表属性”,进入 在“工作区属性”窗口的“索引顺序”框中选择索引标识,按“确定”按钮关闭索引文件 单索引、非结构复合索引被关, 结构复合索引是取消当前索引 Set Index To Close Index,命令法关闭索引文件,.,有关索引的命令,Index On Tag OF For 条件Ascending|Descending Unique|Candidate,Index On Tag For 条件 Ascending|Descending Unique|Candidate,Alter table add primary key Tag ,结构,非结构,对库表建主索引,建立索引,Index On To CompactUnique Additive,单索引,.,Use 表文件名 Index 索引文件名表,Set Index To Additive,索引打开,表、索同时,表已开、再开索,单或非结构,.,索引编号|IDX文件名|TAG 标识名OF CDX文件名,Set Order To,设置主控索引,取消主控索引,Set Order To,Set Index To Close Index,关闭索引文件,对单或非结构而言,对结构索引是取消主控,.,索引的修改和删除,修改,删除,表设计器中直接修改和删除,Delete Tag All/, ,Delete File 索引文件名,,,,删除复合索引文件中的索引标记,,是对关闭的独立或非结构复合索引文件删除,更新,,表中数据修改时已打开的索引自动更新,而未打开的索引文件则要打开后用命令:Reindex 更新,.,索引查询,索引的应用,Seek 表达式,说明:对表达式的内容进行查找,找到时记录指针指在该记录上,未找到时记录指针则在文件尾。

      用“Skip” 辅助命令查找下一条件满足条件的记录,Find 表达式,SEEK(索引关键字表达式),用FOUND( )函数测试查找是否成功,找到为T,否则为F 也可用EOF( )函数,找到时该函数值为F,没找到为T 解释见教材P41,当没找到记录时,记录指针指到文件尾Seek中的表达式说明: 表达式的数据类型有C、N、L、D,但需按各类型的格式书写 字符型变量前无需加“&” Find中的表达式说明: 表达式的数据类型只有C、N,字符型数据无需加定界符 字符型变量前需加“&” 宏代换函数 将紧随其后的字符型内存变量的值的定界符去掉 例: a1=“ABCD” a2=“a1” ?&a2 与 ?a1等功能 结果 ABCD ?”&a1” 与 ?“ABCD“等功能 结果 ABCD ?&a1 结果 没找到变量ABCD b1=67 b2=“b1” ?&b1,.,,Use 学生 Inde on 姓名 tag xm &&若已建立则打开并指定为主控索引 Seek “王” &&find 王 ?Found() &&判断是否找到,若为“T”,则找到了 Disp Skip disp ,查找实例,在学生.DBF中查找 查找所有“王”姓同学的记录;,直到无显示为止,,Use 学生 inde name,.,将数值型数据转换为字符型函数,Inde on alltrim(str(外语,5,1))+性别 tag gzxb Seek “89.0女” &&find 89.0女 ?found() &&结果为.T.时操作下一步 Disp Skip ?eof() &&结果为.F.时操作下一步 Disp Skip ?eof() &&结果为.T.时。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.