1第4章数据库及表的基本操作——表的索引与统计2教学目的:1.了解记录排序的概念与方法2.掌握索引的建立与使用3.掌握统计命令的基本使用重点:索引的建立与使用难点:索引类型34.5表的排序与索引排序从物理上对表按某一规则重新排列表中数据记录的顺序,并产生新的表文件。索引从逻辑上对表的记录重新排列,按照指定的关键字段创建索引文件44.5表的排序与索引创建表后,记录间存在着一定的物理顺序。使用表中记录时,经常需要调整记录的顺序。方法一:用SORT排序。可以根据指定字段的值进行升序或降序的排序。通过排序调整表中记录的实际位置产生一个新表。缺点:占用磁盘空间多,运行速度慢。方法二:使用索引。索引可提高表的检索速度。5命令:SORTTO新表文件名ON字段名1[/A][/D][/C][ASCENDING|DESCENDING][范围][FIELDS字段名表][FOR条件]功能:对当前表中的记录进行排序,将结果存入一个新表,新表由必选项表文件名指出。/A表示升序,/D表示降序,/C排序时忽略大小写4.5.1表的排序6电气信息学院计算机系4.5.2索引索引概念索引的种类索引的类型创建索引文件索引文件的使用索引查询电气信息学院计算机系索引的概念表文件记录排列的顺序物理顺序:指表文件中记录的存储顺序,用记录号表示。逻辑顺序:指表文件打开后,被使用时记录的处理顺序。索引是按表文件中某个关键字段或表达式建立记录的逻辑顺序。对表中的记录进行索引操作后,产生索引文件。电气信息学院计算机系索引文件是索引关键字与记录号的对照表,索引文件中的记录号是按索引关键字的顺序存放的。特点不改变表中记录的物理存储顺序,只是按索引的顺序操作表中的记录。可节省磁盘空间可提高表的检索速度电气信息学院计算机系索引的种类单索引文件传统的、扩展名为.IDX的索引文件。每一索引文件只有一个索引关键字表达式。(很少使用)复合索引文件扩展名为.CDX的索引文件,包含多个索引关键字表达式。索引关键字表达式的名称叫索引名或者索引标记复合索引文件分类如下:电气信息学院计算机系结构复合索引文件在表设计器中创建索引时,VFP6.0会创建一个扩展名为.CDX结构复合索引文件。复合索引文件具有与表名相同的文件名。打开表时,自动打开与表同名的.CDX结构复合索引文件。关闭表时同时自动关闭它。当表中进行记录的添加、修改和删除时,系统会自动对结构复合索引文件中的全部索引标记进行维护。电气信息学院计算机系独立复合索引文件(非结构复合索引文件)用相关命令另行建立的,扩展名也是.CDX,但索引文件名是由建立索引时用户自己命名的。独立复合索引文件必须用相应的命令打开。只有在独立复合索引文件打开时,系统才会维护该索引文件中的索引标识。如果只打开表,没有打开独立复合索引文件,进行记录的添加、修改和删除时,系统不会对独立复合索引文件中的索引标记进行维护。电气信息学院计算机系索引的类型主索引只有数据库表才能建立主索引。一个表中只能有一个主索引。索引关键字,在记录中不允许有重复值,可确保输入字段值的唯一性。存储在结构复合索引文件中。电气信息学院计算机系索引的类型候选索引数据库表和自由表都可创建。一个表可以有多个候选索引。不允许记录中的索引关键字有重复值。存储在结构复合索引文件中。电气信息学院计算机系普通索引最简单的索引。数据库表和自由表都可创建。允许索引关键字值重复出现。适合对表中记录进行排序和查询,适合一对多永久关联中“多”的一边的索引。电气信息学院计算机系唯一索引(了解)VFP为保持与低版本软件兼容而保留的一种索引。数据库表和自由表都可创建。索引字段值允许存在重复值。但在索引表中只保留表中与索引字段值相同的第一条记录。电气信息学院计算机系4.5.3建立索引文件使用“表设计器”(“索引”选项卡)打开表“显示”/“表设计器”。选择“索引”选项卡(创建普通索引)为某字段设置索引。在“索引”下拉式列表,选择“升序”或“降序”。示例演示电气信息学院计算机系比如学生表中建立如下索引:但是注意:数据类型不同的要转换成同类型电气信息学院计算机系4.5.4使用索引文件打开索引文件确定主控索引关闭索引文件删除索引文件更新索引文件电气信息学院计算机系要使用索引,必须同时打开表与索引文件。结构复合索引文件总是随着数据库表的打开而打开,一旦数据表文件关闭也就自动关闭。一个表可以打开多个索引文件,同一个复合索引文件中也可能包含多个索引标识,但任何时候只有一个索引文件能起作用,在复合索引文件中也只有一个索引标识能起作用。当前起作用的索引文件称为主控文件,当前起作用的标识称为主控标识。电气信息学院计算机系打开索引文件自然打开刚建立的索引文件即是打开的。结构复合索引文件随数据表的打开而打开。电气信息学院计算机系确定主控索引菜单方式打开表“显示”/“浏览”→“表”单击“表”菜单/“属性”→弹出工作区对话框在“索引顺序”项中选择要用的索引→“确定”浏览窗口中的表将按照索引指定的顺序排列电气信息学院计算机系例如:对图书表.DBF文件,进行下列操作来建立索引1、按馆藏数量降序建立普通索引2、按图书编号升序建立主索引3、对出版社名称是高等教育出版社的图书记录,按单价降序建立候选索引电气信息学院计算机系使用命令格式:INDEXON索引表达式TAG索引标识[OFCDX文件名]|TO单索引文件名[COMPACT][FOR条件][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE]电气信息学院计算机系说明:TAG子句:建立复合索引文件的索引标识。OF…:指定独立复合索引文件的名字。若缺省表示建立结构复合索引文件。TO子句:建立单索引文件。COMPACT:用来指定单索引文件为压缩的。ASCENDING/DESCENDING:升序(默认)/降序。UNIQUE/CANDIDATE:建立唯一/候选索引文件。不选,按普通索引建立。ADDITIVE:建立新索引时并不影响其他索引。电气信息学院计算机系INDEXON馆藏数量TAG数量DESCENDINGindexON图书编号TAG图书编号UNIQUEINDEXON单价TAG价格DESCENDINGCANDIDATEFOR出版社=高等教育出版社LIST例如:对图书表.DBF文件,进行下列操作来建立索引1、按馆藏数量降序建立普通索引2、按图书编号升序建立唯一索引3、对出版社名称是高等教育出版社的图书记录,按单价降序建立候选索引电气信息学院计算机系确定主控索引命令方式SETORDERTO[TAG]索引标识名]28例如:对图书表.DBF文件中已经建立的复合索引文件进行下列操作1、按馆藏数量降序建立普通索引INDEXON馆藏数量TAG数量DESCENDING执行下列命令:use图书SETORDERTOTAG数量BROWSE29INDEXON单价TAG价格DESCENDINGCANDIDATEFOR出版社=高等教育出版社“执行以下命令:SETORDERTOTAG价格LIST图书编号,图书名称,作者,馆藏数量,借出数量例如:对图书表.DBF文件中已经建立的复合索引文件进行下列操作2、对出版社名称是高等教育出版社的图书记录,按单价降序建立候选索引30关闭数据表即会同时关闭索引文件SETINDEXTOCLOSEINDEXUSE关闭索引文件电气信息学院计算机系删除索引对于结构复合索引,当在表设计器中删除所有索引后,结构复合索引文件也就不存在了。电气信息学院计算机系命令方式删除索引(了解)两种索引文件都可以用删除文件的命令DELETEFILE索引文件名删除复合索引文件还可以用命令DELETETAG标记名|ALL[OFCDX文件名]命令是删除复合索引文件中标识名,当所有的标记删除完后,复合索引文件自动删除。电气信息学院计算机系更新索引命令REINDEX说明命令对当前打开的所有索引文件进行更新,用在修改数据时忘了打开索引文件的情况。使用更新命令前,应先将数据表及要更新的索引文件打开。重新索引不是重建索引文件,它可以对所有打开的索引文件同时更新。电气信息学院计算机系4.6索引查询FIND命令格式:FIND字符串|常数功能:在主控索引的索引表达式中快速查找与命令中指定的字符串或常数相匹配的第一条记录SEEK命令格式:SEEK表达式功能:在主控索引的索引表达式中快速查找与表达式值相匹配的第一条记录。35FIND与SEEK命令的区别:FIND命令只能用字符串或常数检索,SEEK命令用表达式检索,故使用更加灵活,但是若用SEEK命令对字符串进行查找,字符串要加上定界符。36对学校表按照学校编号建立索引,并使用该索引打开表。37查找馆藏数量是30的图书先按照索引打开表,浏览,然后执行下列操作4.6索引查询举例表中找到第一个符合的记录,在屏幕中显示所有符合的记录38查找馆藏数量是30的图书。命令执行过程如下:USE图书SETORDERTOTAG数量FIND30?FOUND()LIST图书编号,图书名称,借出数量391.统计记录个数格式:COUNT[范围][TO内存变量][FOR条件]功能:统计当前表中范围内满足条件的记录个数(即表的横向方向)结果可存入内存变量。4.7表的统计与计算40在图书管理系统中,打开读者表,分别统计男学生、女学生和男教师、女教师的人数COUNTFOR性别=男and类别=学生tonanxuesheng?nanxueshengCOUNTFOR性别=“男”and类别=“教师”tonanjiaoshi?nanjiaoshi412.求和格式:SUM[数值表达式表][范围][FOR条件][TO内存变量表]功能:对当前表中满足条件范围内的记录,对其指定的数值型字段纵向求和,结果可存入内存变量4.7表的统计与计算42打开图书表中,求图书出版社是华中科技大学出版社的图书的借出数量总和sum借出数量for出版社=华中科技大学出版社toJCSL433.求平均值格式:AVERAGE[数值表达式表][范围][FOR条件][TO内存变量表]功能:对当前表中范围内满足条件的记录中指定的数值型字段纵向求平均值,结果可存入内存变量。4.7表的统计与计算444.分类汇总(了解)格式:TOTALON关键字表达式TO汇总表文件名FIELDS[数值型字段名表][范围][FOR条件]功能:对当前表文件按“关键字表达式”值相同的记录进行分类统计,并把统计结果存入指定的汇总表文件中。说明:使用该命令前,当前表必须按关键字进行排序或索引45打开选课数据库中选课表,按照学号建立索引,并打开该表。分类统计每个学生的总成绩。电气信息学院计算机系教材导读与作业教材导读:P101-119理论习题习题:《上机实验指导》书P90-1013.1有关表的排序、索引、统计部分已学内容P90-1013.1有关多工作区、表间关系部分已学内容P77-791.1全部47上机练习VFP上机实验指导书上的《实验4表的基本操作(2)》《实验5索引及建立表之间的永久关系》中的“练习索引的基本命令”这部分。