VFP第9部分(排序索引及多表操作)详解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例】 当索引起作用时,分析记录指针的移动 规律。
USE 学生 INDEX ON 入学成绩 TAG sy3 GO 6 ? RECNO(),姓名 &&显示6 李勤奋 SKIP ? RECNO(),姓名 &&显示5 欧阳天地
有机(ABTCT某要关ABCAA本本字(...)))I不(ABCDII数成A数 建 键自 ((NGGNNBC)工 工 表))))"复 ( AC学学据绩D允DD姓据 立 字)由 )CC)学) )““E普EE达资 资侯 惟 惟表(合号 号JJ许)姓 姓。名表表 学NX表XXII号PC通DD/式”选一 一文,结++N字。6名名O)+达OO有 号JgDXX"S成,件索基T2/是两索索索zNNN构+T6段X””式字 、).绩d的"/CR引姓本(姓姓字引引引2索b值++成是段成J等降(+f名基“名名.和工成段和和有引D生出基绩(:绩序字+)-+B本惟资绩的主主姓上文S日现S本"F学、建段。TT工+一,,组机索索名件)5重工立BDRR号生",,按资成索1引引合生)()/(的。索复资C日/)要C姓绩+-引1索日/PM引类上8的”S0的、建R名、0TT引"E,机型索0G组生A(立RM-出C正,成上G名引(合日,以生8生确绩机其C称)是索/的“日JD的年,成索I是升引、D姓命,6绩月8引X,序),成令名)/关D2,其绩是)、、键上索/基N基引等。 DD.)I(ND学D)E号姓X+名OSN+TsR姓tr((名成基/绩A,本,5上,工1)机资+D成,T绩6O/,DC2(T生)AG日C,1J)IDX
(1)确定主控索引 (教科书P77) 命令格式:
set order to [[tag] <索引标识 名>]
(2)删除索引
delete tag all | <索引标识1>……
(3)索引更新
自动更新
使用索引文件后,虽然表中各记录的物理顺序并未 改变。但记录指针不再按物理顺序移动,而是按主控 索引文件中记录的逻辑顺序移动,于是整个表中的记 录是按索引关键表达式值排序的效果。
多表操作
(教科书P82)
若要使用多个表,就要使用多个 工作区。一个工作区是一个编号区 域,它标识一个已打开的表。在应 用程序中通常通过使用工作区号和 工作区别名来标识。
1、工作区号
Visual foxPro提供了32767 个工作区,编号从1到32767。
每个工作区只允许打开一个表, 一个表只能在一个工作区打开,系 统默认的工作区为1号工作区。
3、索引文件的类型
Visual FoxPro系统支持单 索引文件(.idx)和复合索 引文件(.cdx)。
(1)单索引文件(略)
单索引文件是每个索引存放在一 个独立的文件(.idx)中。
(2)结构化复合索引文件
结构化复合索引文件(.cdx)可 以在同一个文件中包含多个索引,其 中每个索引称为索引标识。
更重要的是,对于结构复合索引, 无论何时打开表文件,该索引都会 自动打开。
其文件名与表名相同,一个表文件 只产生一个结构化复合索引文件。
(3)独立复合索引文件(略)
4、索引的建立 (教科书P75)
结构化复合索引文件的建立 (命令方式)
Index on <索引关键字表达式 > tag <索引标识名> [ascending|descending] ……
在表设计器中建立索引
表设计器中的“索引”选项卡
5、索引的使用
一个表文件可以建立多个索引, 在操作中可以同时打开多个索引, 但是任何时候只有一个索引起作用。
索引依赖于表文件而存在,它 随表的关闭Hale Waihona Puke Baidu自动关闭。
当前起作用的索引标识称为主控 索引。
要使用索引必须满足以下条件: 打开表; 确定主控索引;
【例】 就学生表建立结构复合索引文件,其中 包含2个索引:
(1)按学号的升序排列,编号相同的记录只显 示第一条。
(2)先按性别升序,性别相同再按入学成绩降 序排列。
USE 学生 INDEX ON 学号 TAG sy1 UNIQUE INDEX ON 性别+STR(1000-入学成绩) TAG sy2
2、别名
(1)前十个工作区除了可用1~10来 标识外,还可用A~J来表示工作区的别 名。
(2)定义别名
格式:
use <文件名> alias <别名>
如没有给表定义别名,
3、选择当前工作区 则可以用数据表名作
为别名。
select <工作区号>|<别名>
sele 0 表示选定当前未使用的最 小号工作区。
使用索引文件时,还要特别注意以下几点:
(1)在使用GO命令时,GO <数值表达式>使记录指 针指向具体的物理记录号,而与索引无关,而GO TOP|BOTTOM将使记录指针指向逻辑首或逻辑尾记 录,这时GO TOP不再等同于GO 1。
(2)SKIP命令按逻辑顺序移动记录指针。
(3)表被打开后,记录指针位于TOP位置。
数据表的分类排序
命令格式
(教科书P73)
sort to <文件名> on <字 段1> [/a] [/d][/c]……
产生的表是关闭的
分类排序有什 么缺点
数据表的索引排序
1、什么是索引 (教科书P74)
索引是按索引关键字表达式的值 使数据表中的记录有序排列的一种 技术,在Visual FoxPro系统中是 借助于索引文件实现的。
索引关键字的值、 记录号
2、索引的类型
Visual FoxPro系统提供 了四种不同的索引类型,它 们分别是:
主索引:仅适用于数据库表,不 允许关键字段有重复值,一个数据
表只能建一个主索引。
候选索引:不允许索引关键字段 有重复值
普通索引:最常用的索引类型, 无任何限制
唯一索引:允许索引关键字段有 重复值
自动产生与表同名 的.CDX文件
特别注意:
建立索引时,当<索引关键字表 达式>涉及到两个或两个以上的不 同类型的字段时:
1)顺序若相同,则将非字符型转换 为字符型,然后用“+”连接成一个 字符表达式。
2)顺序若不同,则以字符型字段 的顺序为准,若数字型字段的顺 序与字符型不同,则用一个较大 数减去该字段,再转化为字符型; 若日期型字段的顺序与字符型不 同,则用一个较大的日期减去该 字段,再转化为字符型,然后用 “+”连接成一个字符表达式。