第5章数据排序查询统计和多表操作_第1页
第5章数据排序查询统计和多表操作_第2页
第5章数据排序查询统计和多表操作_第3页
第5章数据排序查询统计和多表操作_第4页
第5章数据排序查询统计和多表操作_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、Visual Foxpro程序设计程序设计第第5章数据排序检索统计章数据排序检索统计和多表操作和多表操作总61页,第2页表中的记录一开始是按输入的先后顺序(记录号)排列的。如果要按另外一种特定的顺序显示或输出,就必须对表进行排序或索引。排序和索引都可以改变记录的输出顺序。总61页,第3页F5.15.1分类(物理)排序分类(物理)排序是根据表的某些字段的值,将表中的记录由大到小(降序)或由小到大(升序),物理地重新排列记录顺序,生成一个新表,称为排序文件。排序文件中记录按新的顺序排列并重新生成记录号,而原表保持不变。总61页,第4页F排序命令格式:SORT TO ON /A|/D/C,/A|/D

2、/C FORWHILEFIELDSASCENDING|DESCENDING功能:对当前表中指定范围内满足条件的记录,按指定字段的升序或降序重新排列,并将排序后的记录按FIELDS子句指定的字段写入新的表文件中。总61页,第5页F命令说明: :存放排序后记录的新表名,该表生成后是关闭的,要使用它必须先打开;ON :指定当前选定的、要排序的表中的字段名(不能是备注和通用字段)。参与排序的字段可有多个;/A/D/C:对于排序中包含的每个字段,可以指定排序顺序(升序或降序)。/A为升序(系统默认排序方式);/D为降序; /C,默认情况下,字符型字段的排序顺序区分大小写,该参数忽略大小写; 总61页,第

3、6页范围:默认为ALL,即所有记录; FOR,对满足条件的记录排序;FIELDS,指定新表中记录所包含的字段。ASCENDING|DESCENDING:指定没有用/A/D指明排序序列的其余字段的排序顺序。F例:USE 学生SORT TO 学生1 ON 性别,入校总分/D FOR 入校总分540 FIEL 学号,姓名,性别,出生日期,入校总分 ASCENDING总61页,第7页F二、索引(逻辑)排序索引为提高查询效率而建立,是一种逻辑排序。F(一)索引的概念及类型1.概念:索引是按照索引表达式的值使表中的记录有序排列的一种方法,是进行快速显示及查询数据的重要手段,是建立表间关系的基础。它不改变表

4、中数据的物理顺序。在VFP系统中,索引是借助于索引文件实现。索引文件包括两个部分:索引表达式的值和物理记录号。索引表达式的值按一定顺序排列并对应于物理记录号,显示时按索引表达式值的顺序读取相应的记录号所指的记录。总61页,第8页索引文件与表文件关系示意索引索引表达式的值表达式的值记录号记录号记录号记录号记录记录内容内容1314525437241015索引文件表文件总61页,第9页F索引与物理排序的区别:1.物理排序要生成新表,记录的物理顺序发生变化,新表可以单独使用;2.索引不生成新表,而是产生一个索引文件,只是表中记录的逻辑顺序发生了变化。索引文件不能单独使用,它必须同表一起配合使用。总61

5、页,第10页F 2.索引文件的类型根据索引文件包含索引的个数和打开方式,可分为:(1)单索引文件 扩展名为.IDX,只有一项索引,只能用命令方式建立,使用时需单独打开;(2) 复合索引文件 可以有多项索引,各项索引用唯一的索引标识区别。包括结构复合索引和非结构复合索引。结构复合索引文件名与表同名,扩展名为.CDX,随表的打开而自动打开。非结构复合索引文件名与表名不同,扩展名为.CDX,不随表打开,使用时用命令打开。总61页,第11页F3.索引的类型VFP的索引文件中根据表中字段值是否有重复,提供了四种类型:主索引、候选索引、普通索引和惟一索引。数据库表允许所有索引,自由表没有主索引。(1)主索

6、引 一个表只能有一个,在指定字段或索引表达式中不允许有重复值,其索引表达式的值能够惟一地标识每条记录的处理顺序,主要用于建立永久关系的主表中;总61页,第12页(2)候选索引一个表可以有多个。在指定字段或索引表达式中不允许有重复值,其索引表达式的值能够惟一地标识每条记录的处理顺序。(3)惟一索引一个表可有多个。索引表达式的值相同时,则只存储第一条记录,不重复存储。(4)普通索引一个表可有多个。索引表达式的值可以相同,一个值对应的多条记录,允许重复存储在索引表中。总61页,第13页F(二)建立索引1.通过表设计器建立索引利用表设计器可以实现对结构复合索引建立和修改。总61页,第14页总61页,第

7、15页总61页,第16页2.命令方式建立索引(1)建立单索引文件格式:INDEX ON TO FORUNIQUEADDITIVE功能:创建单索引文件,其扩展名为.IDX。说明: UNIQUE指定建立惟一索引, ADDITIVE建立索引时不关闭原有索引;单索引文件只能按升序排列,但可以用 SET INDEX 或 SET ORDER 命令将 .IDX 索引文件指定为降序。例: USE 学生INDEX ON 学号 TO XHLIST思考:索引表达式为数值型时,如何实现直接降序?总61页,第17页(2)建立复合索引文件格式:INDEX ON TAG OFFORCOMPACT ASCE|DESC UNI

8、Q|CAND功能:没有OF选项,创建结构复合索引文件,其扩展名为.CDX;否则创建文件名为的非结构复合索引。总61页,第18页例:对“学生”表建立两个复合索引a.以姓名降序排列,索引类型为普通索引;b.以性别升序排列,性别相同以入校总分降序排列,索引类型为普通索引。USE 学生INDE ON 姓名 TAG XM DESCINDE ON 性别+STR(1000-入校总分) TAG XBZF总61页,第19页(三)使用索引F索引可以重新排列数据顺序,加快数据的检索、显示、查询和打印速度,还可以建立数据表间的关联。F使用索引,必须同时打开表与索引文件。一个表可以打开多个索引文件,同一个复合索引文件中

9、可以 包含多个索引标识,但任何时候都只有一个索引文件起作用,在复合索引文件中也只有一个索引标识能起作用。当前起作用的索引文件称为主控索引文件,当前起作用的索引标识称为主控索引。F打开索引文件的方法:建立索引文件时,自动打开;打开表的同时打开索引文件;打开表后再打开索引文件。总61页,第20页F1.通过”表”菜单命令使用索引F2.命令方式打开索引(1)打开表的同时打开索引文件并确定主控索引格式:USE 表文件名 INDEX ORDER /TAGOFASCENING/DESCENDING参数说明:INDEX ,指定要打开的一个或多个索引文件。若是多个索引文件,中间用逗号分隔,其中,排在第一个的索引

10、文件是主控索引文件;ORDER /TAG,指定主控索引;ASCENING/DESCENDING,指定排序顺序。总61页,第21页例1:USE 学生 INDE XH,XM,ZF ORDE 3例2:USE 学生 ORDE TAG XM DESC总61页,第22页(2)打开表文件后再打开索引文件格式:SET INDEX TO | ? ASCENDING | DESCENDING ADDITIVE功能:指定要打开的一个或多个索引文件,并确定主控索引文件(常用于打开单索引文件)。总61页,第23页说明:说明:1)索引文件列表中,第一个索引文件将成为主控索引文件,它控制记录的访问和显示。如果第一个索引文件

11、是 .CDX 文件,并且没有发出 SET INDEX TO TAG 命令,则按记录的物理顺序显示和访问记录;2)SET INDEX TO 关闭当前工作区中除结构复合索引文件外的所有索引文件,同时取消主控索引;3)若缺省ADDITIVE则在使用本命令时,除结构复合索引文件之外的索引文件均被关闭。总61页,第24页3.确定主控索引索引刚建立时,索引文件呈打开状态,且为主控索引文件;只有一个索引文件被打开,则它成为主控索引文件;若当前打开了多个索引文件,通过 SET INDEX 命令或SET ORDER TO 命令来确定主控索引文件。格式:SET ORDER TO |TAG 索引标识ASCENDIN

12、G | DESCENDING如果发出 SET ORDER TO 0 命令,则所有索引文件仍保持打开,并且在增加、删除或修改记录时更新。但是,表中所有记录的显示和访问顺序是物理顺序而不是索引顺序。不带其他参数的 SET ORDER TO 命令与 SET ORDER TO 0 命令完全一样。总61页,第25页4.索引的更新(1)自动更新: 当表中的数据发生变化时,所有当时已打开的索引文件都会随着数据的改变自动改变记录的逻辑顺序,从而实现索引文件的更新。 (2)重新索引格式:REINDEX功能:重新建立打开的索引文件。总61页,第26页5.索引的删除(1)删除索引文件(先关闭后删除)DELETE F

13、ILE (2)删除索引标识 DELETE TAG ALL| 删除复合索引文件的中指定索引标识。ALL子句用于删除复合索引文件的所有索引标识。若某索引文件的所有索引表示都被删除,则该索引文件自动删除。总61页,第27页6.关闭索引格式1:USE格式2:SET INDEX TO 格式3:CLOSE INDEX总61页,第28页F5.3数据检索一、顺序查询(定位查询、直接查询)格式:LOCATE FOR 范围功能:按顺序搜索表,找到指定范围满足条件的第一个记录。格式:CONTINUE功能:按照LOCATE命令的条件,继续查找下一个满足条件的记录。命令说明: (1)被查询的表不必建立索引; (2)缺省

14、范围是ALL; (3)找到满足条件的记录,记录指针指向该条记录,可使用RECNO( )返回该记录号,并且FOUND( )返回“真”(.T.),EOF( )返回“假”(.F.);如果找不到满足条件的记录,则FOUND( )返回“假”(.F.),记录指针定位到指定范围末尾(EOF( )返回值不一定为“真”(.T.) (4)CONTINUE命令不能单独使用,必须与LOCATE命令配合使用。可重复执行CONTINUE,直到到达范围边界或表尾。总61页,第29页二、索引查询按照索引文件的逻辑顺序查找符合条件的记录,要求根据要查询的内容建立索引或确定主控索引。格式1:FIND /功能:在打开的索引文件中快

15、速查找与指定内容相匹配的第一条记录。说明:(1)该命令用于查找字符型(可用可不用定界符)或数值型数据;(2)该命令一般不使用表达式,如果查找字符变量必须宏替换函数;(3)该命令是为与旧版本兼容而保留,可用SEEK命令代替。总61页,第30页格式2:SEEK 功能:在打开的索引文件中快速查找与相匹配的第1 条记录,用SKIP查找匹配的下一条记录。说明:(1)只能在索引过的表中使用 SEEK 命令,并且只能搜索索引关键字;(2)该命令可查找多种类型的数据,查找时需加定界符,查找变量时不使用宏替换函数;(3)除非 SET EXACT的设置为 OFF,否则匹配指的是完全匹配;总61页,第31页(4)如

16、果 SEEK 找到了与索引关键字相匹配的记录,则 RECNO() 返回匹配记录的记录号;FOUND() 返回“真”(.T.);EOF() 返回“假”(.F.)。如果找不到相匹配的关键字,则 RECNO() 将表中记录的个数加 1,然后返回。FOUND() 返回“假”(.F.);EOF() 返回“真”(.T.) 。总61页,第32页例:USE 学生 ORDE TAG XBSEEK 男DISPSKIPDISP总61页,第33页F5.4数据统计1.计数命令格式:COUNT FOR TO 功能:统计指定内满足的记录个数,并存于中。例:USE 学生 COUNT FOR 姓名=“李” TO RS? RS总

17、61页,第34页2.求和命令格式: SUM FOR TO /TO ARRAY 功 能:在指定内满足的记录中,对中的各项分别求和,并保存到内存变量名表或数组中(该命令自动建立数组)。说明:a.若SUM命令的选项都缺省,则对表中所有数值型字段分别求和。b.中变量的个数,要与中的表达式的个数相匹配,且都用逗号隔开总61页,第35页例:USE XSCJBROWSESUM 数学,英语,计算机 TO SX,YY,JSJ总61页,第36页3.求平均值命令格式:AVERAGE FOR WHILETO / TO ARRAY 功能:在指定范围内,计算数值表达式或字段的算术平均值。说明:AVERAGE命令各参数的含

18、义同SUM命令。总61页,第37页4.计算命令格式:CALCULATE FOR WHILETO /TO ARRAY 功能:在指定范围内,对表文件的字段或字段表达式做统计计算。说明:由下列8个规定函数组合而成:AVG():求的算术平均值;SUM():求的和;CNT():统计记录个数;MIN():求的最小值;MAX():求的最大值;总61页,第38页NPV (,)求期货交易流动资金的净当前值;STD():求的标准偏差;VAR():求的方差。总61页,第39页5.分类求和(汇总)命令格式:TOTAL ON FIELDS FOR WHILE TO 功能:按关键字段对记录进行分类汇总,并将汇总结果存入汇

19、总文件。说明:(1)使用TOTAL命令前,必须先按关键字段进行排序或索引,否则,该命令无效;(2)ON :分组依据,即一组关键字段值相同的记录在汇总表中产生一个记录;(3)FIELDS :指出汇总字段,缺省,对表中所有数值型字段进行汇总;(4)缺省范围为ALL,指表中所有记录;(5)备注型字段不能复制到汇总文件里。总61页,第40页F 5.5多个表的同时使用一、工作区的使用1.工作区的概念工作区是Visual FoxPro在内存中开辟的一块临时区域,用于存放操作的表及其相关文件。用户可以在不同的工作区中打开多个不同的表,并有多种方法访问不同工作区中的表。总61页,第41页每个工作区有一个编号;

20、一个工作区在某一时刻只能打开一个表;每个工作区中的表文件都有自己独立的记录指针;表的打开就是将表从外存调入内存的某个工作区。(1)工作区号Visual FoxPro最多提供32767个工作区;工作区的区域编号,分别用1、2、3、4、32767来表示。总61页,第42页(2)工作区别名是给工作区取的一个除工作区编号外的名字,它可以用来标识一个工作区及打开的表;前十个工作区的别名系统指定为A、B、J,分别对应工作区1、2、3、4、10;对于工作区11到32767,别名发生冲突时,系统自动指定的别名是W11到W32767。总61页,第43页(3)表别名是对在工作区中打开的表的一个简短的文件名,以便于

21、识别表及简化操作;在打开表时,如果没有定义别名,则系统默认以表文件名作为别名;每个打开的表都有两个等效的别名,一个是工作区别名,一个是表别名。通过别名可以引用在工作区中打开的表;总61页,第44页不要用数字和系统保留的别名作数据表名;可以在打开表时定义表别名。总61页,第45页(4)当前工作区与当前表正在操作的工作区为当前工作区。当前工作区只有一个,系统默认1号工作区为当前工作区;在当前工作区中打开的表文件称为当前表;当前工作区是可变的,可以根据需要选择任意一个工作区为当前工作区。总61页,第46页2.选择工作区格式1:SELECT |功能:选择需要使用的工作区,并使其成为当前工作区。格式2:

22、USE IN |功能:打开表的同时指定工作区,当前工作区号不变。说明:系统默认1号工作区为当前工作区;总61页,第47页函数SELECT()可以返回当前工作区号(指定表别名时可返回打开指定表的工作区号)格式1中别名可以是工作区别名,如果表已打开也可以是表别名;格式2中别名是工作区别名;SELECT 0 或 IN 0表示选择未使用的最小工作区;选定工作区,即选定该工作区中打开的表。总61页,第48页3.工作区中表字段的引用当前工作区中表的字段直接引用;非当前工作区中的表的字段的引用,字段名前面必须加表别名。表别名有两种格式:格式1: 格式2:别名.字段名总61页,第49页例:SELECT 1US

23、E 学生SELECT 2USE 选课 ALIASXKSELECT 1 & 选择1号工作区为当前工作区BROWSE FIEL 学号,A.姓名,学生.性别,出生日期,XK-课程号,B.成绩总61页,第50页二、建立表间的临时关系1.数据表关联的概念是指在有联系的不同工作区中的表间记录指针建立的一种同步移动关系,使一个表的记录指针移动时另一个表的记录指针能作相应移动。这仅是表间的逻辑关系,是一种临时关系。总61页,第51页2.关联的条件建立关联,需要有关联条件,通常是比较两个表相应字段(一般为共同属性字段)表达式的值是否相等;建立关联的两个表一个叫父表(主表或主控表),一个叫子表(相关表或受控表);

24、对关联表进行操作时,子表的记录指针自动随父表的记录指针而移到满足条件的记录上。子表记录指针移动时,需按关联条件进行查询,为提高速度而采用索引查询,因此,要为子表按关联的字段表达式建立索引。总61页,第52页3.父表与子表的关系(1)一对一关系(1:1)父表的一条记录只能和子表的一条记录对应,子表的一条记录也只能和父表的一条记录对应。(2)多对一关系(N:1)父表中可以有多条记录和子表的一条记录对应。总61页,第53页(3)一对多关系(1:N)父表的一条记录可以和子表中的多条记录记录对应。 VFP中不处理“多对多关系”,若出现多多关系,则将其中一个表分解,然后以多一关系或一多关系处理。总61页,

25、第54页4.临时关联的建立(1)建立关联的步骤分别在不同工作区打开需要建立关联的表;为子表按关联的关键字建立索引或确定主控索引;选定父表所在的工作区为当前工作区,与一个或多个子表建立关联;建立的关联缺省为多对一关系,若为一对多关系,则需说明。总61页,第55页5. SET RELATION TO命令方式建立关联命令格式:SET RELATION TO | INTO ,| INTO |ADDITIVE功能:以当前表为父表与其它一个或多个表建立关联。总61页,第56页说明:指定在父表和子表之间建立关系的关键字表达式。该选项要求子表必须按关键字表达式建立索引且设置为主控索引;:可以是测试记录号函数RECNO(),两表按照记录号相联系,子表不必排序或索引。当父表记录指针移动时,子表的记录指针指向与数值表达式值相匹配的记录上;总61页,第57页INTO 工作区号1|别名1:指定非当前工作区中的子表;| INTO |:指定其它表达式和其它子表,建立另一个父表和子表之间的关系。在一条SET R

温馨提示

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

评论

0/150

提交评论