VFP索引与排序.ppt

上传人:牧羊曲112 文档编号:5452160 上传时间:2023-07-08 格式:PPT 页数:45 大小:479.50KB
返回 下载 相关 举报
VFP索引与排序.ppt_第1页
第1页 / 共45页
VFP索引与排序.ppt_第2页
第2页 / 共45页
VFP索引与排序.ppt_第3页
第3页 / 共45页
VFP索引与排序.ppt_第4页
第4页 / 共45页
VFP索引与排序.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《VFP索引与排序.ppt》由会员分享,可在线阅读,更多相关《VFP索引与排序.ppt(45页珍藏版)》请在三一办公上搜索。

1、索引与排序,什么是索引和排序索引的构成和类型创建索引索引的编辑和应用 排序的创建和应用,记录的顺序物理顺序:表中记录的存储顺序。按记录输入的前后顺序存放。逻辑顺序:记录的处理顺序。对记录按某个(些)字段的值进行排序。,了解索引与排序,排序,索引,重新组织数据表数据,了解索引与排序,索引实际上是一种排序,但是它不改变数据表中数据的物理顺序,而是另外建立一个逻辑顺序号与记录号(物理顺序)的对照表。表的逻辑顺序号是由某一字段的值的大小决定。,排序从物理上对表进行重新整理,按照指定的关键字段来重新排列表中数据记录的顺序,并将重新排序的结果形成一个新的数据表。,索引的概念,索引:不改变物理顺序,所有关键

2、字按升(降)排列,每个值对应原文件的一个记录号,确定记录的逻辑顺序,索引,逻辑顺序,物理顺序,只有索引关键字段值或索引表达式值(逻辑顺序号)与记录号(物理顺序)。一个索引表达式或索引关键字段值与记录号对应的内容又称之为一张“对照表”,用一个索引标识来标记。说明:一个表可同时建立多个索引,但只能有一个索引为主控索引。,索引文件的内容,控制表当前显示的顺序,索引的概念,索引,逻辑顺序,关键字段值或索引表达式值,记录号,对照表,bh,索引标识,索引的构成,索引名又叫索引标识(TAG)。是标记一个索引的名称。索引表达式或索引关键字段索引表达式或索引关键字段的值是确定索引顺序的依据。,索引的构成与类型,

3、索引的类型,主索引(Primary Indexes)每张表只能有一个。一般为表的关键字或索引表达式的值没有重复值的才能作为主索引。只存在数据库表中的结构复合索引中。候选索引(Candidate Indexes)可有多个。一般为表的关键字或索引表达式的值没有重复值的才能作为候选索引。自由表中也可建立。,索引的类型,普通索引(Regular Indexes)一张表可有多个。数据库表和自由表均可有。唯一索引(Unique Indexes)索引表达式中重复的值在索引表中只出现第一个,忽略重复值。,建立时,用户单独为其命名,建立时,用户未单独为其命名,与表文件同名,需使用单独命令打开、关闭,与表同时打开

4、、关闭,为与FOXBASE兼容,含多个索引,建立时,用户单独为其命名,需使用单独命令打开、关闭,索引文件的种类,索引,复合索引(扩展名CDX),独立(单一)索引(扩展名IDX),非结构复合索引,结构复合索引,索引文件的种类,复合索引文件(扩展名为.CDX)定义:由多个关键字段值和其对应的多个记录的物理位置构成。(一个索引文件中有多张“对照表”)结构化复合索引文件索引文件名与表文件同名(由系统自动生成)其打开和关闭与表文件同步,是表的一部分。表文件修改时,系统自动更新该索引文件。,一个索引文件有多个索引,非结构化复合索引索引文件名由用户给出,要用专门的命令打开。可随表文件关闭也可用命令关闭。,独

5、立索引文件(扩展名为.IDX)(又称之单一索引文件)只存储一个索引的文件,文件名由用户给出,要用专门命令打开。,不常用的索引或临时性的索引,为了控制字段的重复值或者对记录进行排序,对数据表使用主索引或候选索引(对自由表 使用候选索引)。,决定索引类型时一般应遵循的原则,为了提高显示、查询、打印的速度,应使用 普通索引、候选索引或主索引。,菜单法:在“表设计器”中创建(只能创建结构复合索引文件),创建索引,注意:不能对备注型或通用型字段建立索引;不要建立多余的无用的索引,会降低系统性能;索引表达式是由多个字段组成时要注意书写格式和数据类型的一致。即多个索引关键字段名间应用“号连接,且要用函数转换

6、为一样的数据类型。,创建索引实例1,用菜单法对zgb.dbf表建立复合索引以工作部门的升序排列,普通索引,索引标识为gzbm,并浏览显示。按jbgz1标识,建立以基本工资升序排列的普通索引。对男职工以其基本工资降序显示记录。(jbgz2)以工作部门升序排列,若部门相同,则按工作时间的升序排列。(bmsj)以工作部门升序排列,若部门相同时,则按基本工资降序排列。(bmgz),C,D,C,N,创建索引实例1,关键字表达式为C型和N型时,一般将数值型数据转为字符型数据,再用字符型连接符号“+”连接;或也可转为数值型数据:转为字符型函数:STR(数值型数据,长度,小数位)例:工作部门+str(106-

7、基本工资*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 条件 Ascend

8、ing|Descending Unique|Candidate,创建索引,升 序|降 序,唯一索引 候选索引,命令法:,可以与字段同名,在数据库中讲解,结构化索引,主索引的建立,Alter table add primary key Tag,Index On Tag For 条件 Ascending|Descending Unique|Candidate,创建索引,升 序|降 序,唯一索引 候选索引,命令法:,可以不打开但建立索引后自动被打开,单索引,Index On To CompactUnique Additive,建立新的索引文件时不关闭已打开的索引文件,创建索引,快速存取索引,命令法:

9、,创建索引实例2,用命令法对学生.dbf表建立复合索引以籍贯的升序排列,普通索引,索引标识为jg,并浏览显示。按cj1标识,建立以外语成绩降序排列的普通索引。对男学生以其出生日期降序显示记录。(narq)以性别升序排列,若性别相同,则按数学成绩降序排列。(xbcj)以姓名降序排列,若姓名相同时,则按出生日期降序排列。(xmrq),创建索引实例2,用命令法对学生.dbf表建立复合索引Use 学生Inde on 籍贯 tag jgBrowInde on 外语 tag cj1 descListInde on 出生日期 tag narq for 性别=“男”Disp allInde on 性别+str

10、(100-数学)tag xbcjDisp allInde on 姓名+dtos(出生日期)tag xmrq desc,创建索引实例3,用命令法对学生.dbf表建立单索引1.按数学成绩降序建立索引Use 学生Inde on 数学 to su2.按姓名升序建立索引Inde on 姓名 to name,3.按性别建立唯一索引,Inde on 性别 to xb2 uniq,索引的编辑和应用,索引文件的打开和关闭,结构复合索引文件随着表文件的打开和关闭而同时进行;非结构复合索引文件和独立索引文件是用命令打开的。,命令法打开索引文件,打开表文件的同时打开索引文件,Use 表文件名 Index 索引文件名表

11、,表文件已打开后打开索引文件,Set Index To Additive,说明:,选择主控索引,菜单法建立的结构复合索引文件虽是打开的,但不是主控索引,需指定才成为主控索引.,用命令法建立的任一种索引,均为打开,并且直接为主控索引.,主控索引的概念,对当前表记录顺序起控制作用的索引称为主控索引。,任何时侯只有一个主控索引,设置主控索引,Set Order To,索引编号IDX文件名TAG 标识名OF CDX文件名,仅有此部分时为出取消主控索引,推荐,表文件打开且相应的索引文件已打开,菜单法选择主控索引,操作要点,进入“工作区属性”窗口“工作数据期“工具按钮,选择“属性”按钮,进入。或若为浏览表

12、状态下选择菜单“表属性”,进入。在“工作区属性”窗口的“索引顺序”框中选择索引标识,按“确定”按钮。,关闭索引文件单索引、非结构复合索引被关,结构复合索引是取消当前索引Set Index ToClose Index,命令法关闭索引文件,有关索引的命令,Index On Tag OF For 条件Ascending|Descending Unique|Candidate,Index On Tag For 条件 Ascending|Descending Unique|Candidate,Alter table add primary key Tag,结构,非结构,对库表建主索引,建立索引,Inde

13、x On To CompactUnique Additive,单索引,Use 表文件名 Index 索引文件名表,Set Index To Additive,索引打开,表、索同时,表已开、再开索,单或非结构,索引编号|IDX文件名|TAG 标识名OF CDX文件名,Set Order To,设置主控索引,取消主控索引,Set Order To,Set Index ToClose Index,关闭索引文件,对单或非结构而言,对结构索引是取消主控,索引的修改和删除,修改,删除,表设计器中直接修改和删除,Delete Tag All/,Delete File 索引文件名,删除复合索引文件中的索引标记

14、,是对关闭的独立或非结构复合索引文件删除,更新,表中数据修改时已打开的索引自动更新,而未打开的索引文件则要打开后用命令:Reindex 更新,索引查询,索引的应用,Seek 表达式,说明:对表达式的内容进行查找,找到时记录指针指在该记录上,未找到时记录指针则在文件尾。用“Skip”辅助命令查找下一条件满足条件的记录,Find 表达式,SEEK(索引关键字表达式),用FOUND()函数测试查找是否成功,找到为T,否则为F。也可用EOF()函数,找到时该函数值为F,没找到为T。,解释见教材P41,当没找到记录时,记录指针指到文件尾。,Seek中的表达式说明:表达式的数据类型有C、N、L、D,但需按

15、各类型的格式书写。字符型变量前无需加“&”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”,则找到了DispSkipdisp,查找实例,在学

16、生.DBF中查找查找所有“王”姓同学的记录;,直到无显示为止,Use 学生 inde name,将数值型数据转换为字符型函数,Inde on alltrim(str(外语,5,1)+性别 tag gzxbSeek“89.0女”&find 89.0女?found()&结果为.T.时操作下一步DispSkip?eof()&结果为.F.时操作下一步Disp Skip?eof()&结果为.T.时停止操作,去空格函数,外语成绩为89.0的女同学记录,“5”为转换的总长度“1”为转换的小数位数,Inde on 出生日期 tag rqSeek 1987-02-04DispSkipdisp,1987年2月4日

17、出生的同学,&若已建立则打开并指定为主控索引,当根据多个关键字段进行排序,且排序的方向又是一致时使用,建立排序,Sort To On/A/D/C,/A/D/CAscending|Descending范围For|WhileFields,按指定的关键字段进行排序,并将结果置于指定的新表中。,命令格式,4.4 表统计,1求记录个数,2求和,3求平均值,4综合统计,5分类汇总,缺省时对当前表中所有的数值型字段求和。,变量的个数要与表达式项数一致。,可将统计的结果赋值给内存变量。,求和的结果若超出字段所定义的宽度时,系统用该字段宽度的“*“表示。,1求记录个数,格式:Count 范围 For/While

18、 To,功能:统计当前表中符合范围、条件的记录个数。,2求和,格式:Sum 数值型字段名表或表达式 范围 For/While To,功能:对当前数据表中的数值型字段求和,或由数 值型字段表达式进行累加后求和。,3求平均值格式:Average 数值型字段名表或表达式 范围 For/While To 功能:对当前数据表中的数值型字段或由数值型字段 表达式累加后求平均。,书中例题的结果可写成如下:,?“全校学生平均年龄为:”,y?“全校学生数学和外语成绩总分分别是:”,a,b,4综合统计格式:Calculate 表达式表 范围 For|While To 功能:对当前数据表按表达式表进行统计计算。说明:表达式表由下列函数组成cnt()max(字段表达式)min(字段表达式)avg(n字段表达式)sum(n字段表达式),数据类型:C、N、D,5分类汇总 格式:Total On To 范围 For|While Fields 功能:以On后面的关键字为分类标准,对当前数据表中的指定的数值型字段进行分类汇总,并将结果置于新的表文件中。重要说明:该命令执行前,必须按关键字进行索引或排序,并使该索引为主控索引。,新表文件的结构与原表一致,但无备注型字段。,缺省时对所有的数值型字段统计,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号