单元12 排序和索引及表间关系.ppt_第1页
单元12 排序和索引及表间关系.ppt_第2页
单元12 排序和索引及表间关系.ppt_第3页
单元12 排序和索引及表间关系.ppt_第4页
单元12 排序和索引及表间关系.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、单元12 排序和索引,新课导入:观察表中记录显示顺序的变化,按数量的升序重新排列,结论:表中记录排序顺序可以按指定要求重新排列,单元12 排序和索引,【主要内容】 1.记录的排序 2.记录的索引,【目的要求】 熟练掌握排序和索引的基本操作,【课时安排】 共2课时,一、排序,1、概念 数据表的排序:把数据表文件中的记录按照某个字段值的大小顺序重新排列。 关键字:作为排序依据的字段。 升序:按照关键字值从小到大的顺序进行排序。 降序:按照关键字值由大到小的顺序进行排序。,说明:数据大小的比较规则:,数值型、日期型:由其本身的大小决定; 字符型:由其ASCII码值确定,汉字由机内码确定大小。,命令:

2、SORT ON /A/D/C ,/AD/C TO 范围条件字段名清单 功能:对当前表中规定范围内符合条件的记录,按给定的字段值按由小到大的升序或由大到小的降序排列,生成指定名称的新表文件,新表文件中含有由FIELDS指定的字段。,参数说明:/ASC表示按升序排列,为系统的默认值; /DESC表求降序排列; /C表示不区分大小写字母。,当ON后面带多个字段时,称为多重排序,首先按第一个字段值(称为主关键字)进行排序,遇到第一个关键字段等值的情况下,再按第二个关键字段排序,依此类推。,多重排序:,例: 1.对BOOKS.DBF,按数量从高到低排序 2.对BOOKS.DBF,按作者降序排序,作者相同

3、的,按借出数量升序排序,2.命令方式排序,二、 索引,2、什么是索引? 索引是关键表达式按大小顺序排列与记录号对应的对照表. 每一个对照表有一个名称,称为索引名。,1、为什么要使用索引? 排序要产生一个新表,数据量大时占用一倍的存储空间;排序不能随原表数据的变化而自动更新,这对工作带来不便。,3、 VFP中使用查询索引以前必须完成以下工作: 创建索引 打开索引 若表记录有变化,则重新索引 选择所需要的索引,4、索引的概念,物理顺序:文件中的记录按其磁盘存储顺序输入输出。 例如:排序后新文件中形成了新的物理顺序。 逻辑顺序:在不改变记录的物理顺序基础之上,按某个索引关 键字(或其表达式) 的升序

4、或降序记录在一个新文件 中的位置。 该新文件只包括关键字和记录号两个字段。 例如:索引文件中,所有关键字按升序或降序 排列,每个值对应原文件的一个记录 号,这样便确定了记录的逻辑顺序。, 记录的物理顺序与逻辑顺序,5、索引文件的类型 存储索引的文件称为索引文件,从索引的组织方式来分,索引文件分类如下:,说明:,a、复合索引:扩展名为 CDX 允许包含多个索引,每个索引都有一个索引标识,代表一种记录逻辑顺序。 b、单索引: 扩展名为 IDX 单索引文件只包含一个索引。 为了与FoxBASE+开发的应用程序兼容而保留的。,6、索引类型,索引按其关键表达式的性质和对照表特点,可分为四种类型。,7、索

5、引的建立,1)用表设计器建立或修改索引(两种办法) 其一:在字段选项卡索引列的组合框中选定。向上箭头为升序索引,向下箭头为降序索引 其二:使用索引选项卡。该选项卡中可键入关键字表达式。还可选择索引类型,2)命令方式,INDEX ON TO | TAG OF FOR COMPACT UNIQUE ADDITIVE,b、功能:对当前表建立一个索引文件或增加索引标志。,a、格式:,(1)是包含当前表中的字段名的表达式,表达式中的操作数应具有相同的数据类型。,(2)若给出TO子句,则建立一个单索引文件。若给出TAGOF,则建立一个复合索引文件,或为已建立并打开的复合索引文件增加索引标志。OF选项用于指

6、定非结构复合索引文件的名字,省略此选项时,表示建立结构复合索引文件。,c、命令中各子句的含义是:,(3)若选择FOR选项,则只有哪些满足条件的记录才出现在索引文件中。 (4)选用COMPACT,则建立一个压缩的单索引文件。复合索引文件自动采用压缩方式。 (5)复合索引时,系统默认或选用ASCENDING,按索引表达式的升序建立索引。选用DESCENDING按降序建立索引。单索引文件只能按升序索引。 (6)选用UNIQUE,对于索引表达式值相同的记录,只有第一个记录列入索引文件。 (7)选用ADDITIVE,建立本索引文件时,以前打开的索引文件仍保持打开状态。,8、索引的使用、更新与删除,要利用

7、索引查询,必须同时打开表与索引文件。 任何时候只有一个索引文件或复合索引文件的一个索引标识能起作用。,主控索引文件:当前起作用的索引文件。 主控索引:当前起作用的索引标识。,1)打开索引文件,有3种方法打开索引文件: 在索引文件刚刚建立时,就处于打开状态。 打开数据表文件的同时打开索引文件。 打开表后再打开索引文件。,命令1:打开数据表文件的同时打开索引文件,格式:,USE /?INDEX /? ORDER|TAG OF ASCENDING | DESCENDING ,功能:打开表文件的同时打开一个或多个索引文件. 说明: A、INDEX :可以包含单索引和复合索引文件,其中第一个索引文件是主

8、索引。 B、选择?:弹出对话框供选择,C、 ORDER : 设置第几个文件为主控索引 ORDER : 指定该单索引文件为主控索引文件。 ORDER TAG OF : 指定复合索引的 为主控索引; 不选择OF ,则打开结构 复合索引文件。,SET INDEX TO / ? ADDITIVE,命令2:打开表后再打开索引文件,功能:对已打开的表,打开其索引文件;,说明: :索引文件列表中,第一个索引文件成为主控索引; /?:打开对话框,从其中可以选择和打开一个索引文件;,ADDITIVE:若缺省该选项,则在用命令打开索引文件时,除结构复合索引文件以外的索引文件均被关闭; 只写 SET INDEX T

9、O,将关闭除结构复合索引文件以外的索引文件(关闭表文件时,索引文件也随之关闭),2)确定主控索引,复合索引文件中当前建立的索引标识自动成为主控索引 表重新打开时尽管复合索引文件已自动打开,还须确定主控索引。,a、命令格式:,SET ORDERTO TAG ASCENDING|DESCENDING,b、功能:打开表的同时打开一个或多个索引文件;,c、说明: :指定将第几个设置为主控索引; :指定该单索引文件名为主控索引文件; TAG :指定该索引标识为主控索引标识; SET ORDER TO 或SET ORDER TO 0:取消主控索引文件及主控索引,表中的记录将按物理顺序输出。,3)更新索引,

10、1、自动更新 当表中的数据发生变化时己打开的索引文件会随数据的改变自动改变。 2、若未确定主控索引文件或主控索引,修改表记录时索引文件不会自动更新。如果仍要维持记录的逻辑顺序,可用以下方法:,用REINDEX命令重建索引; 用INDEX ON 再次建立索引。,4)删除索引,()删除索引文件:与删除文件类似。必须遵循先关闭后删除的原则。 (2) 删除索引标识: 格式:,DELETE TAG ALL / ,功能:删除当前打开的结构复合索引文件的索引标识。 说明:ALL 将删除所有索引标识,则该索引文件也就被删除,5)关闭索引文件,关闭索引的方法: 关闭当前索引: SET INDEX TO 关闭所有

11、索引: CLOSE INDEX 关闭表文件的同时关闭索引文件: USE,9、查询定位记录,什么是查询定位?在表中查找符合条件的记录,找到了,则将该记录作为当前记录,没找到,则指向文件尾。 如何判断是否找到?可用EOF()函数或FOUND()函数,与数据表查询有关的几个函数:,(1)表文件开始测试函数,格式:BOF() 功能:在记录指针指向首记录之前时返回.T.否则返回.F.,(2)表文件结束测试函数,格式:EOF() 功能:在记录指针指向末记录之后时返回.T.否则返回.F.,(4)记录号测试函数,格式:RECNO() 功能:返回当前记录的记录号。 若当前无表文件被打开,返回值为0;,(3)测试

12、查询结果函数,格式:FOUND() 功能:返回当前是否找到记录。 若找到,返回值为.T.;否则为.F.;,(一) 顺序查询(直接查询),功能:从指定范围顺序查找满足条件的第一个记录。 若找到:记录指针就指向该记录; 若表中无满足条件的记录:状态条中将显示“已定位范围末尾”,表示记录指针已指向文件末尾。,1、查询特性:,按照表记录的物理位置依次逐个查询。,2、LOCATE命令,LOCATE FOR WHILE,说明:缺省为ALL。,格式:,3、查找下一个满足条件的记录:,CONTINUE,功能:用在LOCATE命令后,继续查找下一个满足LOCATE命令条件的记录。,(二) 索引查询命令,2. S

13、EEK命令,功能:查找关键字段值等于的第一个记录。 若找到:记录指针就指向该记录; FOUND()函数值为真. 若表中无满足条件的记录: 状态条中显示“没有找到”。FOUND为假,1、查询特性:,按照表记录的逻辑位置依次逐个查询。 如果利用二分查找法,要求被查询表文件建立并打开索引。,SEEK ORDER| | TAG ,格式:, :可以查找C、N、D、L型数据; C(字符)型数据,要加定界符; 对日期、日期时间型数据必须用严格格式。 对某个数据进行索引查询时,必须先对该字段进行索引 (即当前主控索引为以该字段为索引关键字的索引); 顺序查找无此要求,只要表被打开,就可以查找。 只是当表在不同

14、的索引下时顺序查找的结果可能不一样。 SEEK与SKIP命令配合使用可查找下一个满足条件的记录:,说明:, 对字符表达式,可使用模糊查询, 即:只要字符表达式的值与索引关键字值的左子串相同,就认为找到。 否则,就是精确查询。,SET EXACT ON | OFF,功能: 打开|关闭精确查询。,1、排序:SORT ON TO 2、索引:什么是索引?索引分类?索引文件的类别?各类索引文件的建立、打开、主控索引的指定?索引的作用?,1、阅读教材 2、上机操作题:教材P122第二题,1、见实验指导书实验七2、见教材上机题,作业,上机实训,三、归纳总结,导入新课:,解决实际问题时,往往要用到多个表,这多

15、个表间的数据需保持一致性.,VFP共有32767个工作区,每个工作区可以打开一个表,一个表同时只能在一个工作区中打开. 问题:工作区的表示? 当前工作区概念? 数据使用规则? 如何联动?,32767号区 (W32767区),单元13 表间关系,单元13 表间关系,【主要内容】 1.工作区的表示、当前工作区的选择、工作区数据使用规则2.表的物理联接 3.表间关系的种类、作用以及关系的建立,【目的要求】 1、理解工作区的选择及使用规则 2、理解表的物理联接关系 3、熟练建立表间的关系,【课时安排】 共4课时,1、工作区的表示:,数字表示:用数字1,2,332767表示。 字母表示:用字母A,B,C

16、,J,W11,W12,W32767表示 别名表示:在某工作区打开表时指定了别名,那么该别名 就可以表示该工作区了。 USE 表名 IN 工作区号ALIAS 别名,2、当前工作区的选择:SELECT 数字区号/字母区号/别名区号,一、多工作区操作,例如:如下语句分别在第1、2、3工作区中打开了学生、课程和成绩3个表:,open database 学生管理 select 1 use 学生 allas student sele 2 use 课程 sele 3 use 成绩,或,open database 学生管理 use 学生 in 1 allas student use 课程 in 2 use 成

17、绩 in 3,如果要到第1个工作区操作学生表,则运用命令: select 学生 或 select 1,3、工作区中数据使用规则:,当前区中:直接使用字段区,非当前区中:在字段名前加 区号.或区号-,一、多工作区操作,例如:当前使用的是第2个工作区中的课程表,现在要显示第1个工作区中的学号和姓名字段的值,则得设计如下的命令:,?学生.学号,学生-姓名,4、工作区的联接:横向联接(又称物理联接),联接条件:“借书证号”字段值相等,一、多工作区操作,)命令格式,JION WITH TO FOR FIELDS ,)功能: 将当前表文件与指定的表文件之间的相关字段组合成一个新的表文件。,5、联接的实现,

18、)说明: a、FOR 是必选项,构成连接的条件;2个表必须按条件连接; b、 FIELDS 决定新表的字段;若无,则当前表的全部字段在前,别名表的字段在后;,一、多工作区操作,)连接过程如下: 从当前表的第一条记录开始,在指定的别名工作区中查找符合条件的记录,每找到一条,就将当前表的记录与别名工作区中找到的记录连接成一个新记录并存入新表文件中。重复上述操作,直到把当前工作区中的所有记录都处理完为止。,5)例:完成上图所示的联接。,Select 1 Use 借阅数据 Select 2 Use 读者数据 Join with 1 to 联接表_1 for 借书证号=a-借书证号 fields 借书证

19、号,姓名,a-借出日期,a-还书日期 Use 联接表_1 list,1、有关关联的几个概念: 关联:指在两个表文件的记录指针之间建立一种临时关 系,当一个表的记录指针移动时,与之关联的另 一个表的记录指针也作相应的移动。 父表:建立关联的两个表中,建立关联的表,称为父表; 子表:建立关联的两个表中,被关联的表,称为子表。,2、关联条件: 前提:首先为子表按某个关键字建立索引; 关联条件:通常是比较两个表的两个关键字段值是否相等。,二、表之间的关联,1) 一对一关系: 父表的一个记录只与子表的一个记录相关联,子表的一个记 录也只与父表的一个记录相关联; 2) 一对多关系: 父表的一个记录可以与子

20、表的一个或多个记录相关联,而子 表的一个记录只与父表的一个记录相关联;,父,子,3、父表与子表间的关系:,3) 多对一关系: 父表的多个记录与子表的一个记录相关联,而子表的一个 记录只与父表的一个记录相关联; 4) 多对多关系: 任意一个表的一个记录和相关表的多个记录相关联。,父,子,父,子,三、表间关系的类别,目的:建立永久关系后,数据可自动更新、自动删除等保持数据一致性。 存在场合:建立后存入数据库中,目的:子表的记指针随主表的记录指针移动而改变. 存在场合:建立后,关闭表则消失,永久关系,临时关系,表间关系,父表与子表,四、表间临时关系,使用“窗口”菜单中的“数据工作期”,1、打开子表并使相关索引成为主索引 2、在主表中给出命令: SET RELATION TO 关联表达式 INTO 别名,通过操作建立,建立方法,通过命令建立,操作步骤: 打开要关联的表; 在子表中对要关联的关键字建立索引,并指定主控索引; 选定父表为当前工作区;打开数据工作期窗口; 在父表中打开数据工作期窗口,建立关联;,单击“关系”按扭,建立关联; 单击“一对多”按扭,指定与子表的关系为一对多;若与子表的关系为“多对一”,则不进行此操作; 单击“属性”按扭,设置数据过滤器和要筛选的字段;,1、在数据工作期窗口建立关联:,可以建立视图文件

温馨提示

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

评论

0/150

提交评论