文档介绍:查询与统计
排序与索引
排序
命令:
SORT TO <新文件名> ON <字段1>[/A][/D][/C]…[范围][FOR<逻辑表达式>][WHILE<逻辑表达式>][FIELDS<字段表>]
功能:对当前打开的库文件排序,产生一个新的有序的库文件.
[例3-1]:
(1)将1988年以后启用的设备按启用日期降序排列,并要求新文件只包含编号、名称、启用日期等三个字段。
(2)按部门降序排列,当部门相同时按价格升序排序。
操作如下:
USE SB
SORT TO RQX ON 启用日期/D FIELDS 编号,名称,启用日期 FOR YEAR(启用日期)>1988
SORT TO BMX ON 部门/D,价格
USE RQX
LIST
USE BMX
LIST
索引
索引的概念
记录的物理顺序和逻辑顺序
复合索引和单索引
复合索引:分为结构索引和非结构索引,其扩展名为CDX
单索引:其扩展名为IDX
索引的建立
INDEX ON<表达式>TO<>[FOR<条件>][ASCENDING|DECENDING][UNIQUE][TAG <标识名> OF <]
说明:(1)表达式中各字段的类型只能是N,C,D.
(2)单索引文件只能建立升序索引.(.IDX)
(3)结构复合索引文件名为:;通过标识来建立各字段的索引。
(4)UNIQUE指唯一索引,对关键字表达式值相同的记录,只有第一个记录被索引.
(5)ADDITIVE表示保留以前打开的索引文件。否则除结构复合索引文件外,以前打开的其他索引文件都将被关闭。
[例3-2]分别按名称升序和价格降序建立单索引文件.
USE SB
INDEX ON 名称 TO MCIDX
LIST
INDEX ON –价格 TO JGIDX
LIST
[例3-3],其中包括三个索引:
记录以价格降序排列.
记录以部门升序排列,部门相同时按价格升序排列.
记录以部门升序排列,部门相同时按价格降序排列.
操作如下:
USE SB
INDEX ON 价格 TAG JG DESCENDING
LIST
INDEX ON 部门+STR(价格,9,2) TAG BMJG
LIST
INDEX ON VAL(部门)-价格/1000000 TAG BMJG1
LIST
索引的使用
打开和关闭索引文件
USE [<文件名>|?][INDEX<索引文件名表>|?[ORDER[<数值表达式>|<单索引文件>|[TAG]<标识名>[OF<复合索引文件名>][ALIAS<别名>]
(2) SET INDEX TO [<索引名表>][ORDER[<数值表达式>|<单索引文件>|[TAG]<标识名>[OF<复合索引文件名>]
编号:(1---225|32767)先编号单索引文件,然后是结构复合索引,最后是独立复合索引。
USE SB
SET INDEX TO JGIDX , MCIDX
LIST
确定控制索引
SET ORDER TO [<数值表达式>|<单索引文件>|[TAG]<标识名>[ASCENDING|DESCENDING]
例3-4:P76
删除索引
删除索引文件
删除索引标识
DELETE TAG ALL|<索引标识1>[,<索引标识2>]…
USE SB
DELETE TAG BMJG1
索引的更新
自动更新
重新索引
REINDEX
查询命令
顺序查询命令
LOCATE FOR <条件> [<范围>] [WHILE<条件>]
CONTINUE
[例3-5].
USE SB
LOCATE FOR 价格<15000 AND NOT 主要设备
DISP
CONTINUE
?O(),名称,价格,主要设备
CONTINUE
索引查询命令
SEEK <表达式>
SET EXACT ON|OFF
[例3-6]SEEK查询.
USE SB
INDEX ON 编号 TAG BH
SEEK”038-1”
?O()
INDEX ON 启用日期 TAG QYRQ
SEEK {94/08/12}
?FOUND()
INDEX ON 价格 TAG JG
SEEK 1000
?O(),FOUND()
[例3-7]模糊查找与精确查找示例
USE SB
SET ORDER TO TAG BH
SEEK”03”