文档介绍:第六章数据库的排序、索引与统计
第6章数据表的排序、索引与统计
对已建好的表,表中的记录通常是按输入的先后顺序排列的,因此,表中记录的排列顺序是无规则的。这种数据记录的无规则排列,使得数据查询和数据处理的速度较慢。为了提高数据查询和数据处理的速度,就需要表中记录顺序按一定规则排列,这就需要引入排序或索引技术,也就是对数据表文件建立排序或索引文件。
数据表的排序
排序的概念
所谓排序,就是将表中的数据按一定的顺序(表的某个字段或某几个字段“值”的大小)重新排列(物理排序),并将重新排列后的结果保存成为一个新的有序表(新的独立存在的表文件)。决定排列顺序的字段被称为关键字段,也称为关键字。原数据表保持不变。
排序有二种方式:升序(Ascending,从小到大)和降序(Descending,从大到小)。
建立排序文件
格式:Sort To <排序文件名> On <关键字段1> [/A│/D] [/C][,<关键字段2>[/A│/D] [/C]…][<范围>] [For <条件1>] [Fields <字段名表>
功能:根据当前表,建立一个经过排序的新表。
说明:
⑴<排序文件名>:即保存重新排列后的新表名。
⑵ On <关键字段>:表示排序字段,不能是备注型或通用型字段。/A表示按升序排列;/D表示按降序排序排列,默认为升序;/C表示排序时忽略大小写,否则不忽略。若选择多个字段,则表示多重排序:即先按主排序字段<字段名1>排序,若字段值相同,再按第二排序字段<字段名2>排序,依此类推。
特别注意:排序不允许使用任何类型的表达式作为关键字。
关键字值的大小是按下列原则来确定的:对于C型数据,若是字符按ASCII码值的大小进行比较,若是汉字则按汉字内码值大小进行比较。对于N型数据,以其数值的大小进行比较。对于D型数据以其年、月、日先后顺序比较(后为大)。对于L型数据,则“.F.”小于“.T.”。
【例6-1】,对浙江籍的同学,按学号降序排序。并要求排序新文件()只包含学号、班级、姓名、性别、入学年龄、籍贯等字段。排序后,浏览排序结果。
Set Defa To F:/
Use 学生档案表
Sort On 学号/D To Xh For 籍贯= "浙江" Fields 学号,班级,姓名,性别,入学年龄,籍贯
Use Xh
Browse
思考:如果不打开Xh文件,显示结果有什么变化?
【6-2】对学生档案表文件中出生日期小于1978年的学生按班级升序及年龄降序排序,。排序后,浏览结果。最后,。
Use 学生档案表
Sort To Bjnl On 班级,年龄/D For Year(出生日期)<1978
Use Bjnl
Browse &&观察排序新文件
Delete File &&删除bjnl表文件
表的索引
排序是对数据表中记录进行物理排序,所形成的是一个新的数据表文件(*.DBF)。新数据表文件可以是原数据表文件的全部或部分内容,相对来说,该文件要占用大量的磁盘空间,这对于处理大型数据表来说是不合适的。在这种情况下,便需要使用索引技术。
索引技术是在不改变表记录排列的物理顺序的前提下,决定访问记录的次序、提高记录的检索速度,索引技术用于建立表间的关系。