1、第12章 数据表的检索与统计,计算机文化基础,第一节 数据检索的方法,一、顺序查找法用LOCATE(条件定位)命令二、“二分法”要求待查数据是有序数据,LOCATE FOR 学号=992001,数据检索顺序查找法,数据检索 “二分法”,由于顺序检索是从第一条记录开始查找,直到找到符合条件的记录,所以,若记录数非常多的话,查找速度就会减慢。为了加快查找速度,可以先把要查找的数据排好顺序,然后再用“二分法”的原理进行查找。 二分法的步骤:(用 A 来表示要找的数据) 1、将处在中间位置上的数据与 A 比较,若A中间值,则前半部分的数据可以排除,只留下后半部分数据。(第1次二分) 2、将剩下的数据中
2、处在中间位置上的数据与A比较,若A中间值,则后半部分的数据可以排除,只留下前半部分数据(第2次二分)。 3、以此类推,直至找到。 看图说明:,二 分 查 找 法,原始数据: 4 2 12 22 7 9 31 排序后: 2 4 7 9 12 22 31第一次二分: 7 4 取 7 7 = 7 查找结束,例如:查找数据 7,因为后半部分数据肯定都大于 7 。,取前半部分,第四节 快速检索命令,一、find命令 二、seek命令,快速检索命令FIND 命令,格式: FIND / 说明: 1)本命令只能查找某一字符串或一常数,并且此字符串(或常数)所在的字段必须事先经过索引,且索引文件已打开。 2)若
3、搜索成功,则指针指向第一条符合条件的记录 3)此命令只能找字符串或常数,不能找日期型或逻辑型数据。 4)所查找的字符串可以不加引号 例题:例1 例2,USE RSDAINDEX ON 姓名 TO XMIDXFIND 张华卫 (若用:LOCATE FOR 姓名=张华卫,要加引号)DISP,例1:查找张华卫的记录,顺序查找法,例2:查找基本工资为340的人,USE RSDA INDEX ON 基本工资 TO JZIDX FIND 340 DISP,快速检索命令SEEK 命令,格式: SEEK 表达式 说明: 本命令的语法规则和 FIND命令相似,区别在于:1) 若查找的是字符串,则字符串应加上引号
4、。2) 可以查找一个算术表达式的值。3) 可以查找日期型数据 注意:用此命令前,也要先用INDEX建立索引文件 例题:例1 例2 例3,例1 :查找张华卫的记录,USE RSDA INDEX ON 姓名 TO X1 SEEK 张华卫 (或:FIND 张华卫) DISP,例2: 查找基本工资为340的人,USE RSDAINDEX ON 基本工资 TO X2SEEK 330+10 (或:FIND 340)DISP,例3: 查找出生年月为 11/23/78 的人,USE RSDAINDEX ON 出生年月 TO X3SEEK CTOD(11/23/78)DISP注:不能用 FIND CTOD(11
5、/23/78) (将显示数据类型不匹配),数据统计,COUNT 统计记录的个数 SUM 求数值型字段的和 AVERAGE 求数值型字段的平均值TOTAL 分类汇总命令,数据统计 count 命令,格式: count 范围 for条件to 功能:统计表文件中记录范围内满足给定条件的记录个数。 说明: 1、若省略 范围 和 For ,则统计当前表文件中共有多少条记录。 2、若给定了 TO 内存变量 ,则将统计结果赋给指定的内存变量。若不给定,则将结果仅在屏幕状态栏上显示。 例题: 例1、2 例3 例4,例1:统计一下表RSDA.DBF中共有多少条记录 例2:统计表RSDA中共有多少条姓张的人的记录
6、。结果存入内存变量ZHANG中。,例1解答:,例2解答:,注意: count命令是计数命令,执行后输出窗口中无显示内容,只能在状态栏上暂时看到命令执行后的结果。 如果想在输出窗口看到结果,可把计数结果存入内存变量,然后显示该变量的结果即可。,数据统计 count 命令举例,例3: 统计一下表文件RSDA.DBF中共有多少条79年1月1日以前出生的记录。并将结果存放入内存变量M中。,注意观察显示命令的结果。,数据统计 count 命令举例,数据统计 count 命令举例,例4: 说明下列命令的含义 USE RSDA SKIP COUNT NEXT 3 FOR 奖金=70 .AND. 性别=男 T
7、O X ? X,解答: 统计第2-4条记录中奖金在70元以上的男职工记录数,并将结果存放在内存变量x中。,数据统计 SUM 命令,格式:sum 范围 字段名表 TO for 功能:对范围内符合条件的记录中给定的数值型字段求和。 说明:1、若在字段名表中列出了若干个数值型字段的名字,且用逗号隔开,则表示分别统计这些数值型字段的总和,若想把这些结果放入变量中,则在 to 后面的内存变量表中列出相应的变量名,(变量名和数值型字段的和要一一对应)。即第一个数值型字段值的总和放入第一个变量中,第二个数值型字段值的总和放入第二个变量中,变量名用逗号隔开。 2 若不指定字段名,则分别统计表文件中的所有数值型
8、字段的和。 例题: 例1 例2,数据统计 SUM 命令举例 (例1),三条Sum命令的含义: 1、统计基本工资字段的总和,将结果放入内存变量gz中。 2、分别统计基本工资和奖金字段的总和,将结果分别放入内存变量JBGZ和JJ中。 3、统计所有男职工的基本工资字段的总和,将结果放入内存变量yy中。注意观察显示结果。,数据统计 SUM 命令举例,例2 统计RSDA中男职工的平均奖金。 (要求用 COUNT 和 SUM 命令),S是一个数值型内存变量,表示所有男职工的平均奖金。分析左边的每一条命令,想想为什么。,数据统计 average 命令,格式: average 范围 to for 功能:求符合
9、条件的记录中给定数值型字段的平均值。 说明:其语法规则与 SUM 命令相同看图说明:,数据统计 average 命令,统计所有男职工的奖金平均值,并将结果显示在屏幕上。,例:用AVERAGE命令做 SUM中的例2,数据统计 total 命令,格式:total on to filelds for 功能:对表文件中满足for 的记录,按照对某一个或某几个数值型字段分组求和,生成一个新的表文件存放处理结果。 说明: 1、使用此命令之前,必须按“关键字段”先对表文件进行索引或排序。 2、汇总时只对 所列出的数值型字段进行求和,若省略 FIELDS选项,则对表文件中所有数值型字段求和,分类汇总的结果存入新表文件中。 3、该命令将具有相同关键字段值的记录进行纵向合并。看图说明:,数据统计 total 命令举例,1、按性别字段建索引。 2、按性别分组求出基本工资,奖金字段的总和,将结果放入新的表文件t1.dbf中。 3、打开t1.dbf ,显示统计结果。,例题:按性别分类汇总,