33排序和索引.docx
- 文档编号:12845705
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:9
- 大小:57.13KB
33排序和索引.docx
《33排序和索引.docx》由会员分享,可在线阅读,更多相关《33排序和索引.docx(9页珍藏版)》请在冰点文库上搜索。
33排序和索引
3.3排序和索引
排序和索引引入:
表的输出顺序按输入的先后排列.如需要另一种顺序来输出记录,需要对表进行排序和索引。
3.3.1排序
根据表的某些字段的值对表重排记录。
排序后产生一个新的表文件,其记录按新的物理顺序排列,但原文件不变。
命令:
SORTON<字段名>[/A|/D][/C]TO<新表文件名>[范围][FOR<条件>][FIELDS<字段名表>]
说明:
(1)ON子句的字段名表示排序字段,/A(默认),/D,/C
不可选用通用型或备注型字段排序
(2)多重排序,主排序字段,第二排序字段……
(3)范围,条件,字段(默认所有记录)
(4)大小比较方法:
数值型按数值大小比较;
日期型按年月日先后比较
字符型中ASCII字符按相应位置上的两个字符的ASCII码值比较
字符型中的汉字按拼音序比较。
例
(1)对DZ.DBF按单位升序,当单位相同按性别降序排列,生成新文件SDZH.DBF
USEDZ
SORTON单位,性别/DTOSDZH
USESDZH
LIST
(2)对DZ.DBF中从第4条到第11条记录中性别为女性的职工按姓名的降序排列,生成新文件DZXM.DBF
USEDZ
GO4
SORTON姓名/DFOR性别=‘女’NEXT8TODZXM
USEDZXM
LIST
3.3.2索引的概念
(1)排序和索引的比较:
两者都能改变记录的输出顺序.
区别:
排序:
产生一个独立的按指定顺序排列记录的新的表文件,原表文件不变。
排序后,新的表文件和原表文件没有任何依附关系,两者是彼此独立的。
索引:
依附于原表文件增加一个索引文件,扩展名为(.CDX或.IDX),存储的是指定的逻辑顺序。
索引文件必须与原表文件同时打开。
(即没有原表文件,索引无法使用。
)
举例:
按学号升序排序,观察排序和索引文件的不同
例如:
XS.DBF的内容如下:
记录号
学号
姓名
性别
年龄
党员否
1
9803
李梅
…
…
…
2
9801
…
…
……
…
3
9804
…
…
…
…
4
9802
…
…
…
…
按学号升序排序:
SORTON学号TOAA生成表文件AA.DBF,其内容为:
记录号
学号
姓名
性别
年龄
党员否
1
9801
…
…
…
…
2
9802
…
…
……
…
3
9803
李梅
…
…
…
4
9804
…
…
…
…
按学号升序建立索引:
INDEXON学号TAG学号生成的结构复合索引文件为XS.CDX(依附于表产生的,与表同名,扩展名不同)
内容为:
学号
记录号
9801
2
9802
4
9803
1
9804
3
在生成的索引文件中,索引字段按顺序排列,每个值对应原表文件的一个记录号。
所以索引文件XS.CDX是逻辑排序,比排序文件AA.DBF要小得多。
索引文件(应用广泛)的优点:
I.和排序产生的表文件相比,索引文件(.CDX或.IDX)是按照索引字段建立的记录的逻辑顺序,只包括索引字段(对谁建立的索引)和记录号两个字段,比被索引的文件要小得多。
II.对于打开的索引文件,增删或修改表的记录时索引文件会自动更新,而排序文件不行,需要重新排序。
(2)索引的种类
3.3.3索引的建立
命令方式:
结构复合索引文件:
INDEXON<索引关键字>TAG<索引标识名>[ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE][FOR<条件>]
功能:
建立索引文件或增加索引标识
说明:
(1)索引关键字就是按什么字段或表达式索引。
比如:
入学成绩或者性别+姓名
只能是一个表达式,不能是多个表达式。
(2)TAG子句用于给索引起名字
(3)[UNIQUE|CANDIDATE]
该命令默认建立普通索引型索引文件;
UNIQUE表示建立唯一型索引文件
CANDIDATE表示建立候选型索引文件
主索引只能在数据库表中建立
(4)记录逻辑顺序默认为升序,ASCENDING,DESCENDING分别表示升序和降序。
(5)ADDITIVE用于表示建立本索引文件时并不关闭先前打开的索引文件。
例建立结构复合索引文件
为XSDA.DBF建立一个结构复合索引文件,其中包含索引:
①学号降序建候选索引,索引标识名为学号;②院系名称和性别升序索引,索引标识名为X1;③先按性别降序,性别相同再按出生日期降序排列,索引标识为X2
USEXSDA
INDEXON学号DESCCANDIDATETAG学号
LIST
INDEXON院系名称+性别TAGX1
LIST
SETDATETOYMD
INDEXON性别+DTOC(出生日期)DESCTAGX2
界面方式:
(用表设计器查看和设计索引)
查看:
显示→表设计器索引选项卡
设计:
显示→表设计器字段,索引选项卡(升降序,类型,表达式的生成)
例题:
索引:
对于XSCJ表建立结构复合索引,并设置BB2为主控索引
(1)按性别降序排列,性别相同按姓名的降序排列,索引标识为BB1
(2)按性别升序排列,性别相同按数学成绩的升序排列,索引标识为BB2
(3)按数学+英语成绩的和的降序建索引,索引标识为BB3
(4)按数学成绩降序排列,如果数学成绩相等,按英语成绩的降序排列,索引标识为BB4
单索引文件:
INDEXON<索引关键字>TO<单索引文件名>[UNIQUE][FOR<条件>][ADDITIVE]
注意:
TO<单索引文件名>用于建立单索引文件
单索引文件不能对索引关键字降序排列,可以用表达式构成降序
例建单索引文件
USEXSDA
INDEXON姓名TOXM
LIST
INDEXON—入学成绩TORXUNIQUE
LIST
3.3.4索引的使用:
要利用索引查询,必须同时打开表和索引文件。
一个表可以打开多个索引文件,一个复合索引文件中包含多个索引标识。
任何时候只有一个索引文件能起作用,复合索引文件中也只有一个索引标识起作用。
当前起作用的索引文件称为主控索引文件。
当前起作用的索引标识称为主控索引。
实现索引查询的的过程:
打开表→打开索引文件→确定主控索引文件→确立主控索引(复合索引文件才需要)
(1)打开和关闭索引文件
1除结构复合索引文件是随着表的打开而自动打开外,其它索引文件必须用命令打开
如:
单索引文件1,单索引文件2,……单索引文件N(需命令方式打开)
结构复合索引文件(索引标识1,索引标识2……,索引标识N)(随表打开而打开)
(即索引文件主文件名与表的主文件名相同时,会随表打开)
2若当前仅有一个索引文件被打开,它就成为主控索引文件。
索引刚建立时,索引文件呈打开状态且成为主控索引文件。
若当前打开了多个索引文件,可通过SETINDEX命令来确定主控索引文件。
3表关闭时索引文件自动关闭。
4对于结构复合索引文件:
表打开,它必然随着打开,表不关闭,它是无法关闭的。
命令格式:
SETINDEXTO[<索引文件表>][ADDITIVE]
索引文件名表中第一个索引文件为主控索引,该命令常用于打开单索引文件(结构复合索引是自动打开的)
USEXSda
SETINDEXTOxm,RX
SETINDEXTO
LIST
缺省ADDITIVE选项,则先关闭(除结构复合索引文件外)其他索引文件,再打开本命令中的索引文件。
SETINDEXTO关闭除结构复合索引文件外的所有索引文件,同时取消主控索引。
(2)确定主控索引
复合索引文件中当前建立的索引标识自动成为主控索引。
表重新打开时需要重新确立主控索引。
命令格式:
SETORDERTO[TAG<索引标识>]|[<数值表达式>]
SETORDERTO或SETORDERTO0
取消主控索引文件及主控索引
例:
结构复合索引文件随表的打开而打开
确立X1为主控索引
学号为主控索引
X1为主控索引
取消索引
按物理顺序输出
学号为主控索引
USEXSDA
LIST
SETORDERTOTAGX1
LIST
SETORDERTO1
LIST
SETORDERTO2
LIST
SETORDERTO
LIST
SETORDERTO1
LIST
SETINDEXTO关闭除结构复合索引外的所有索引文件,并取消主控索引
LIST
(3)删除索引
删除索引文件:
先关闭,后删除如:
DELEFILEXM.IDX
删除索引标识:
DELETAGALL|<索引标识1>[,<索引标识2>]…
例:
USEXSDA
DELETAGX2
DELETAGALL
(4)索引的更新
表中数据变化时当时打开的索引文件会自动更新。
否则需要重新索引:
REINDEX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 33 排序 索引