数据库 排序与索引
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库 排序与索引
数据库应用技术 排序和索引
知识目标:
知识目标: 掌握对数据库排序的基本方法 数据库排序的基本方法;1、掌握对数据库排序的基本方法; 掌握建立索引文件的基本方法 索引文件的基本方法;
2、掌握建立索引文件的基本方法; 掌握打开与关闭索引文件的方法。
3、掌握打开与关闭索引文件的方法。
能力目标: 1、能建立排序数据库文件; 2、能对记录进行顺序查找;
3、能建立不同类型关键字的索引文件;
4、打开与关闭索引文件。
数据库中记录是按其输入的顺序存放的, 记录号真实地反映了数据记录在存储介质 中的物理顺序。
在实际工作中往往希望记录按某个字段值的大小重新排列,这个字段称为关键字(关键字段)。
实现这种排列有两种方法:一种是排序(又称分类), 另一种是索引。
数据库的排序
排序是按数据库文件中某个字段值的大小对记录的物理位置进行重新排列,并生成新的数据库文件。
【格式】SORT ON <字段名1>[</A >] [</D>] [/C][,<字段名2>[</A >] [</D>] [/C],…] TO <数据库名>[<范围>][FOR|WHILE<条件 >] [FIELDS<字段名清单>]
【功能】将数据库中的记录按指定字段重新排序,生成一个新的数据库。
【说明】 [/A]按排序字段升序(递增)排序。
[/D]按排序字段降序(递减)排序。
[/C]按字母排序时不区分大小写。
范围选项省略时默认为ALL。
FIELDS<字段名清单>:排序生成的数据库中只包含有清单中指定的字段。
若省略该选项, 则排序生成的数据库包含所有字段。
注意:生成的排序库文件是关闭的,要使用必须先注意:生成的排序库文件是关闭的, 打开后使用。
将数据库文件ZYDA.DBF按合计字段由高到低排序 按合计字段由高到低排序,
例 1 将数据库文件按合计字段由高到低排序 生成一个新数据库文件ZY1.DBF,并显示其内容。
生成一个新数据库文件 ,并显示其内容。
.USE ZYDA .SORT ON 合计 合计/D TO ZY1 .USE ZY1 .LIST .USE 下面的命令生成的结果是什么?
例2 下面的命令生成的结果是什么? .USE ZYDA .SORT ON 合计 TO A2
FIEL 姓名 性别 合计 ; 合计/D 姓名,性别 性别,合计 FOR 性别
=“男” 性别 “ .USE A2 .LIST .USE
下面的命令生成的结果是什么?
例3.下面的命令生成的结果是什么? 下面的命令生成的结果是什么
.USE ZYDA .SORT ON 性别 合计/D TO Y2 FIEL 姓名 性别 合计 性别,合计 姓名,性别 性别, 合计 .USE Y2 .LIST .USE
小结: 排序生成的数据库和源数据库的结构相同, 对记录重新进行了排列,源数据库中的记录没有发生变化。
课堂练习: 1.排序生成的数据库中是否含有备注型字段。
2.排序生成的数据库文件扩展名是什么?
3.排序命令“SORT ON 性别,出生日期TO XC” 和“ SORT ON出生日期,性别TO XC”功能是否 相同?如果不同,有什么区别?
数据库的索引
索引是一种逻辑排序方法,它生成一个索引文件。
索引文件实际上是按数据库中某关键字升序排列所产生的一个对照表,反映的是记 录的重新排序与数据库文件中记录的排列顺序的一种对应关系,它必须依赖于数据库文件而存在。
【格式】
关键字表达式> INDEX ON <关键字表达式> TO <索引文 件名> 件名> [UNIQUE]
【说明】条件表达式> 由用于索引的字段名组成, <条件表达式>:由用于索引的字段名组成, 它可以是一个或多个字段名组成的表达式。
它可以是一个或多个字段名组成的表达式。
可以包括字符型、数值型、逻辑型、 可以包括字符型、数值型、逻辑型、日期型。
UNIQUE:建唯一性索引。
UNIQUE:建唯一性索引。
例1:关于数值型数据的索引 1、默认升序 .use student .index on 高考成绩 to cj1 .list 2、降序 .use student .index on -高考成绩to cj2 .(index on 1000 -高考成绩 to cj) .list 例2:关于数值型数据的索引 3、两项复合 .use student .index on 语文+数学 to cj3 .list 4 4、两项复合并独立 .use student .index on str(语
文,5,1)+str(100-数学,5,1); to cj4 .list 思考:3、和4、区别在那? *如果表达式由多个字段组成时,必须转换为同一类型。
如果表达式由多个字段组成时,必须转换为同一类型。
如果表达式由多个字段组成时 出生日期) 如:性别+DTOS(出生日期 性别 出生日期 性别+合计) 性别 STR(合计 合计 IIF(婚否 婚否=.t.
,‘男’,‘女’)+STR(高考成绩 高考成绩) 婚否 男 ‘ 高考成绩 例2
.USE student .INDEX ON IIF(婚否 婚否=.t.
,‘男’,‘女’)+STR(高考成绩 男 ‘ 高考成绩) 婚否 高考成绩 to SY .LIST .USE *uniq的功能 当表达式的值相同时,只有其中记 的功能: 当表达式的值相同时, 的功能 录号最小的记录进入索引文件。
录号最小的记录进入索引文件。
例3 阅读下列程序 .USE student
.INDEX ON 性别 TO SY UNIQ .LIST .USE *选COMP的功能是建立压缩型单索引文件。
选 的功能是建立压缩型单索引文件。
的功能是建立压缩型单索引文件建立一个单索引文件SY.IDX,姓“刘”的在前,其它的在前, 例4 建立一个单索引文件 , 人在后,使用 人在后,使用COMP。
。
.USE student .INDEX ON NOT LEFT(姓名 姓名,2)=‘刘’TO SY ; 姓名 ‘ .LIST .USE *选 ADDI的功能 : 不关闭已打开的索引文件 。
选 的功能: 的功能 不关闭已打开的索引文件。
性别升序排序 建立一个索引文件SY1.IDX。
再按合 升序排序,建立一个索引文件例5 按性别升序排序 建立一个索引文件 。
再按合 升序排序,建立一个索引文件 建立一个索引文件SY2.IDX, 然后显示记录。
然后显示记录。
计升序排序 建立一个索引文件 .USE zyda .INDEX ON 性别 TO SY1 .INDEX ON 合计 TO SY2 ADDI .LIST .SET ORDER TO 1 .LIST
.USE 打开索引文件 1:SET INDEX TO <索引文件表 索引文件表> :索引文件表 [ORDER〈数字 索引文件名〉] 索引文件名〉 〈数字/索引文件名 *本命令在数据库文件已经打开的情况下 本命令在数据库文件已经打开的情况下 打开索引文件 2:USE <库文件名 INDEX <索引文件库文件名> : 库文件名 索引文件 > [ORDER〈数字 索引文件名〉] 索引文件名〉 〈数字/索引文件名 *本命令在打开数据库文件的同时打开索 本命令在打开数据库文件的同时打开索 引文件 .USE student 性别TO 语文 TO 数学 TO XBSY YWSY SXSY 2 0 .INDEX ON .INDEX ON
.INDEX ON .LIST .SET INDE TO XBSY,YWSY,SXSY ORDER .LIST .SET INDE TO XBSY,YWSY,SXSY ORDER .LIST .USE 设置主索引 同时打开多个索引文件时, 同时打开多个索引文件时,记录的显示和操作由主索引决定。
引决定。
命令格式: 型表达式>/<索引文件名 命令格式:SET ORDER TO <n型表达式 索引文件名 型表达式 索引文件名> 功能:为索引文件设置主索引。
功能 为索引文件设置主索引。
注意: 为无主索引。
注意:0 为无主索引。
.USE STUDENT INDEX
XBSY,YWSY,SXSY .SET ORDER TO SXSY .LIST .USE 重新索引有两种方法: 重新索引有两种方法 1.在修改或输入记录前 先打开该库文件的全部索引文件。
在修改或输入记录前, 先打开该库文件的全部索引文件。
在修改或输入记录前 2.使用 使用REINDEX命令 重新索引。
命
令,重新索引 使用 命令 重新索引。
命令格式: 命令格式:REINDEX [COMP] 例: .USE student .APPE BLANK .SET INDEX TO
XBSY,YWSY,SXSY .LIST .REINDEX .LIST 关闭索引文件 1:SET INDEX TO : 2:CLOSE INDEX : 3:CLOSE DATA : 4:USE : 说明: 和为直接关闭索引文件 说明:1和2为直接关闭索引文件 3和4为关闭数据库文件索引文件 和 为关闭数据库文件索引文件 自动关闭 几点说明刚建立的索引文件是打开的,可直接操作。
1、 刚建立的索引文件是打开的,可直接操作。
使用选项next rest和命令 next、 和命令go bott、 2、使用选项next、rest和命令go top 、go bott、 都是在逻辑顺序的基础上。
SKIP 都是在逻辑顺序的基础上。
而 GO N 是在物理顺序的基础上。
顺序的基础上。
3、在索引文件打开的情况下,命令INSER和APPE功 在索引文件打开的情况下,命令INSER APPE功 INSER和能相同。
能相同。
4、 在索引文件打开的情况下,REPL 修改的字段在索引文件打开的情况下, 又是索引表达式的字段时,REPL命令不要使用NEXT、 命令不要使用NEXT 又是索引表达式的字段时,REPL命令不要使用NEXT、 REST选项 否则出错。
选项, REST选项,否则出错。
5、 排序文件和索引文件的比较。
排序文件和索引文件的比较。
总结: 总结:一、建立排序文件 ◆ 建立单索引文件 ◆打开单索引文件二、索引文件 ◆设置主索引 ◆重新索引 ◆关闭索引文件。