VFP第8部分(排序索引及多表操作)解析课件.ppt

上传人:牧羊曲112 文档编号:1481584 上传时间:2022-11-30 格式:PPT 页数:55 大小:363KB
返回 下载 相关 举报
VFP第8部分(排序索引及多表操作)解析课件.ppt_第1页
第1页 / 共55页
VFP第8部分(排序索引及多表操作)解析课件.ppt_第2页
第2页 / 共55页
VFP第8部分(排序索引及多表操作)解析课件.ppt_第3页
第3页 / 共55页
VFP第8部分(排序索引及多表操作)解析课件.ppt_第4页
第4页 / 共55页
VFP第8部分(排序索引及多表操作)解析课件.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《VFP第8部分(排序索引及多表操作)解析课件.ppt》由会员分享,可在线阅读,更多相关《VFP第8部分(排序索引及多表操作)解析课件.ppt(55页珍藏版)》请在三一办公上搜索。

1、Visual Foxpro 6.0,程序设计基础,重庆工商大学计算机学院计算机基础教研室,数据表的分类排序,命令格式,sort to on /a /d/c,产生的表是关闭的,(教科书P73),分类排序有什么缺点,数据冗余,无法自动更新,数据表的索引排序,索引是按索引关键字表达式的值使数据表中的记录有序排列的一种技术,在Visual FoxPro系统中是借助于索引文件实现的。,1、什么是索引,索引关键字的值、记录号,(教科书P74),Visual FoxPro系统提供了四种不同的索引类型,它们分别是:,2、索引的类型,主索引:仅适用于数据库表,不允许关键字段有重复值,一个数据表只能建一个主索引。

2、 候选索引:不允许索引关键字段有重复值普通索引:最常用的索引类型,无任何限制 唯一索引:允许索引关键字段有重复值,3、索引文件的类型,(1)单索引文件(略) 单索引文件是每个索引存放在一个独立的文件(.idx)中。,(2)结构化复合索引文件 结构化复合索引文件(.cdx)可以在同一个文件中包含多个索引,其中每个索引称为索引标识。,更重要的是,对于结构复合索引,无论何时打开表文件,该索引都会自动打开。 其文件名与表名相同,一个表文件只产生一个结构化复合索引文件。(3)独立复合索引文件(略),4、索引的建立,(教科书P75),Index on tag ascending|descending ,自

3、动产生与表同名的.CDX文件,结构化复合索引文件的建立 (命令方式),特别注意: 建立索引时,当涉及到两个或两个以上的不同类型的字段时:1)顺序若相同,则将非字符型转换为字符型,然后用“+”连接成一个字符表达式。,2)顺序若不同,则以字符型字段的顺序为准,若数字型字段的顺序与字符型不同,则用一个较大数减去该字段,再转化为字符型;若日期型字段的顺序与字符型不同,则用一个较大的日期减去该字段,再转化为字符型,然后用“+”连接成一个字符表达式。,【例】 就学生表建立结构复合索引文件,其中包含2个索引:(1)按学号的升序排列,编号相同的记录只显示第一条。(2)先按性别升序,性别相同再按入学成绩降序排列

4、。 USE 学生 INDEX ON 学号 TAG sy1 UNIQUE INDEX ON 性别+STR(1000-入学成绩) TAG sy2,在表设计器中建立索引,表设计器中的“索引”选项卡,5、索引的使用,一个表文件可以建立多个索引,在操作中可以同时打开多个索引,但是任何时候只有一个索引起作用。 索引依赖于表文件而存在,它随表的关闭而自动关闭。,当前起作用的索引标识称为主控索引。 要使用索引必须满足以下条件: 打开表; 确定主控索引;,set order to tag ,(1)确定主控索引,命令格式:,(教科书P77),(2)删除索引,delete tag all | ,(3)索引更新,使用

5、索引文件后,虽然表中各记录的物理顺序并未改变。但记录指针不再按物理顺序移动,而是按主控索引文件中记录的逻辑顺序移动,于是整个表中的记录是按索引关键表达式值排序的效果。 使用索引文件时,还要特别注意以下几点: (1)在使用GO命令时,GO 使记录指针指向具体的物理记录号,而与索引无关,而GO TOP|BOTTOM将使记录指针指向逻辑首或逻辑尾记录,这时GO TOP不再等同于GO 1。 (2)SKIP命令按逻辑顺序移动记录指针。 (3)表被打开后,记录指针位于TOP位置。,【例】 当索引起作用时,分析记录指针的移动规律。 USE 学生 INDEX ON 入学成绩 TAG sy3 GO 6 ? RE

6、CNO(),姓名 &显示6 李勤奋 SKIP ? RECNO(),姓名 &显示5 欧阳天地,复合结构索引文件的类型名称是( )A)PJTB)PRGC)CDXD)MEM,不允许字段值出现重复的索引是( )。A)侯选索引和主索引 B)普通索引和惟一索引 C)惟一索引和主索引 D)惟一索引,自由表gz.dbf有姓名/C/8、出生年月/D、基本工资/N/6/2等字段,要建立以“姓名、基本工资”两字段的组合索引,其索引关键字表达式是( )。姓名+基本工资 (B)“姓名”+“基本工资”(C)“姓名”+基本工资 (D) 姓名+str(基本工资,6,2),有数据表文件CJ.DBF,按姓名(C,8)的升序,上机

7、成绩(N,6,2)的降序建立索引,正确的命令是( )。A.INDEX ON 姓名-上机成绩 TAG CJIDX B.INDEX ON 姓名+STR(-上机成绩,6,2) TAG CJIDXC.INDEX ON 姓名+STR(1000-上机成绩) TAG CJIDXD.INDEX ON 姓名/A,上机成绩/D TAG CJIDX,某数据表有字段:学号/C、生日/D、成绩/N等。要建立学号、成绩、生日的组合索引,其索引关键字表达式是( )。A)学号+成绩+生日 B)学号+成绩+生日C)学号+STR(成绩,5,1)+STR(生日,8) D)学号+STR(成绩,5,1)+DTOC(生日,1),多表操作

8、,若要使用多个表,就要使用多个工作区。一个工作区是一个编号区域,它标识一个已打开的表。在应用程序中通常通过使用工作区号和工作区别名来标识。,(教科书P82),1、工作区号 Visual foxPro提供了32767个工作区,编号从1到32767。 每个工作区只允许打开一个表,一个表只能在一个工作区打开,系统默认的工作区为1号工作区。,2、别名(1)前十个工作区除了可用110来标识外,还可用AJ来表示工作区的别名。 (2)定义别名,use alias ,格式:,3、选择当前工作区,select |,如没有给表定义别名,则可以用数据表名作为别名。,sele 0 表示选定当前未使用的最小号工作区。,

9、use in |,不改变当前工作区,【例】 在不同的工作区分别打开学生.dbf、选课.dbf和课程.dbf 3个表,命令序列如下:CLOSE ALL & 关闭所有打开的文件SELECT 2USE 学生 & 选择2号工作区打开学生表SELECT CUSE 课程 & 选择3号工作区打开课程表USE 选课 IN 5 & 选择5号工作区打开选课表,引用非当前工作区表的字段必须冠以别名,引用格式为: 别名.字段名 别名-字段名,【例】在1号工作区打开学生表,在2号工作区打开选课表;当前工作区为1号,显示选课表中当前记录的学号、姓名、课程号和成绩字段的值。命令序列如下:CLOSE ALL & 关闭所有打开

10、的文件SELECT 1USE 学生 & 选择1号工作区打开学生表USE 选课 IN 2 & 在2号工作区打开选课表,当前工作区为1号? 学号,姓名,选课.课程号,选课-成绩,学生管理数据库中的表,bof():文件开始的测试函数 eof():文件结束的测试函数 recno():返回当前记录号 sele():返回当前工作区区号,4、工作区常用函数,建立表间的关联关系(临时关系),要在两个或两个以上的表之间进行数据操作时,通常有关联和连接两种方法。,1、关联的概念 每个工作区打开的表中都存在一个记录指针,指针指向的记录是当前记录,如果表之间没有关系,则各个表的记录指针相互独立,即当前工作区指针移动时

11、,其他工作区的指针不移动。,所谓关联,就是让不同工作区数据表的记录指针建立一种临时的联动关系。使一个表的记录指针移动时,能带动另一个表的记录指针按一定的条件作相应地移动。前者称为关联表(主动表、父表),后者称为被关联表(被动表、子表),建立表间的关联 建立数据库文件中表间关联,一是要保证建立关系的表具有相同的字段值(关键字值);二是子表要以该字段建立索引。,建立两个表之间的“一对一”和“多对一”关联的步骤: 找到两个表中能够建立关联的字段(字段名可以不同,类型、宽度、小数位数必须相同) 根据关键字值确定父表,再确定子表; 先打开子表,建立索引; 最后打开父表建立关联。,有重复值为父表,set

12、rela to into , into additive,说明:发出关联命令所在工作区的表是父表,建立关联的命令,(教科书P83),子表必须对关联字段索引 是关联的关键字 不同名的字段只要类型和数值相同也可建立关联。关联后,父表指针移动带动子表指针移动;而如果当前工作区是子表,其指针移动,父表指针不会移动。,实验指导书P35 实验15任务1(1),additive 一般用于三个或三个以上的表之间建立多重关联,第2、3个关联使用该选项。关联后,当前工作区字段名可以直接使用,子表的字段在使用时要加“别名.字段名”。set rela to recn()+N into 把记录号作关键字建立关联。关闭或

13、重新打开数据表,关联就会消失。(故称为临时关系),BB AA,Sele 1Use AA inde on 字段 tag zdSele 2Use BBSet rela to 字段 into A(或 AA或1),字段,Sele 0Use AA inde on 字段 tag zdSele 0Use BBSet rela to 字段 into AA,AA BB CC或AA BBAA CC,字段1,字段2,字段1,3个表建关联?,字段2,(见教科书第84页例4.22),set skip to , ,一般不用,用在set relation命令之后,说明已建关联的性质为一多关系。,建立表间的一对多关系,原则:

14、 一般建立“多对一”或“一对一”的关联; 一般如果要求显示的结果是按照某个字段值的顺序排列,则包含该字段的表应作父表。,例: 在学生表和选课表中,显示成绩80分的学生的学号、姓名、所学课程的课程号和成绩。,学生管理数据库中的表,set safety offclose allclearselect 1use 学生 alias xsindex on 学号 tag xhselect 2use 选课set relation to 学号 into xs,系统环境设置,表环境设置,list for 成绩80fields 学号,xs.姓名,课程号, 成绩close allset safety oncance

15、l,数据处理,恢复系统环境,主索引与永久关系,有些数据表格和其他数据表格之间存在着某些关系,我们需要将这些有关系的数据表格纳入同一个数据库中,并建立其彼此之间的关系,使用者才能更好的运用数据表格,更容易达到数据管理的目的。,1)主索引的建立,注意:只能为数据库表建立主索引,不能为自由表创建主索引。当从数据库中移走有主索引的表而成为自由表时,他们的主关键字将会随之消失。,2)永久关系和临时关系,永久性关系建立在数据库本身,只要数据库存在,永久关系就存在,不会因其他命令的执行而消失。,在“数据库设计器”窗口中,两个数据表格之间的连线,就是“永久性关系”。,(见教科书90页图5.3),字段之间的关系

16、(不管是永久性的还是临时性的),都是要靠索引来达成的,也就是说,某个字段欲建立关系,需先以此字段的内容建立索引,再利用此索引建立关系。,表之间的关系,注意:建立“永久性关系”的父表必须以关键字建立主索引或侯选索引,而子表则可以以关键字建立任意类型的索引(一对一或一对多)。而建立“临时关系”的父表可以不需建立索引,只需子表以关键字建立任意类型的索引即可(一对一或多对一) 。,永久关系连线的作用是在数据表格作“更新”、“删除”、“新增”等动作时,对表格做一个检查的动作,以符合某些规则。(而存储这些规则的地方就是所谓的“参考完整性”(RI)。),在数据库中的表建立永久关系后,可以设置管理相关记录的规

17、则。这些规则可以控制相关表中记录的插入、删除或更新操作。 见书P91表5.5,设置参照完整性,(见教科书90-91页),数据库表之间创建的永久关系保存在( )中。A)数据库表 B)数据库 C)表设计器 D)数据环境设计器,命令SELECT 0的功能是( )A)随机选择一个空闲工作区B)选择区号最大的空闲工作区C)选择当前工作区号加1的工作区D)选择区号最小的空闲工作区,建立两个数据库表的永久关系,要求( )A)两个表都必须索引B)两个表都不要索引C)只有父表必须索引,子表可以不需要索引D)只有子表必须索引,父表可以不需要索引,下列叙述中,正确的是( )。A)一个工作区中只能打开一个表文件,打开新的表文件后,原来所打开的表文件自动关闭B)一个表文件可以在不同的工作区同时打开,并且表别名也相同C)一个工作区中可以同时打开多个表文件D)命令USE可以关闭所有工作区打开的表文件,Use关闭当前工作区的数据表Clear all关闭所有工作区的数据表,清除内存变量,并将当前工作区置为1号工作区Close all 关闭所有文件,职工工资数据表按基本工资字段建立降序索引,然后执行GO TOP命令,此时当前记录指针指向的记录是( )。A)1号记录B)基本工资最少的记录C)基本工资最多的记录D)不能确定,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号