第6讲数据库的高级操作 数据库文件的排序 数据库文件的索引 数据库文件的检索 数据的统计与运算 FoxproForWindowshttp://cc.synu.edu.cn
FoxPro For Windows http://cc.synu.edu.cn 1 第6讲 数据库的高级操作 数据库文件的排序 数据库文件的索引 数据库文件的检索 数据的统计与运算
数据库文件的排序 数据库记录的物理顺序(记录号)取决于数据输入的顺序。 排序:数据库中记录按照某字段值大小重新排列,作为排序依据的字段 称为“关键字”。排序后得到一个新数据库,原数据库不变。 SORT ON<字股名1>[ADo,<字段名2>……]TO<数据库名> 说明】 默认按字段升序 Record#(SH HE下区分字母 Record# SNI 排序依据可以 v191王亚洲 998181王亚洲 299195 2|996102 赵辉 可以加条件For 399019李苓梅是排序 3|990183丹 可以加 field<t 4990103王丹 陈别的结构。 499819李冬梅 599166 998185 白 【例】 USE stu 6998182赵辉 6990106陈不刚 SORT ON SNO TO stud 1 USE Stud1 LIST SORT TO stud2 oN birthday score/D FOR sex="T" FoxproForWindowshttp://cc.synu.edu.cn 2
FoxPro For Windows http://cc.synu.edu.cn 2 数据库记录的物理顺序(记录号)取决于数据输入的顺序。 排序:数据库中记录按照某字段值大小重新排列,作为排序依据的字段 称为“关键字”。排序后得到一个新数据库,原数据库不变。 数据库文件的排序 SORT ON <字段名1> [/A][/D][/C][,<字段名2>……]TO <数据库名> 【说明】 •默认按字段升序排序,/A:升序 /D:降序 /C:不区分字母的大小写,默认区分。 •排序依据可以是多个字段,中间隔以逗号。 •可以加条件For 或while,对满足条件的记录排序 •可以加 field <field list>,决定生成新数据库的结构。 【例】 USE student SORT ON SNO TO stud1 USE stud1 LIST SORT TO stud2 ON birthday ,score/D FOR sex="女
数据库文件的索引 排序后生成了许多内容相同,仅排列顺序不同的新数据库文件,造 成数据余,排序过程中所需磁盘空间为原文件的三倍。 索引是不改变纪录的物理顺序,按照索引表达式值使数据库中的纪 录有序排列,它生成一个索引文件,数据变化时,索引文件自动按 索引表达式值进行调整 索引文件:由按照一定的逻辑顺序排列的关键字段(或表达式), 和每个字段值所在的记录号组成。 以SNoO为关键字的索引文件 SNOIDX: SNO 记录号 990101 查找时,先在索引文件中快速查到 990102 要查的关键字,然后根据相对应的 990103 记录号在数据库文件中快速定位到 990104 相应的记录上 990105 164325 990106 FoxproForWindowshttp://cc.synu.edu.cn 3
FoxPro For Windows http://cc.synu.edu.cn 3 • 排序后生成了许多内容相同,仅排列顺序不同的新数据库文件,造 成数据冗余,排序过程中所需磁盘空间为原文件的三倍。 • 索引是不改变纪录的物理顺序,按照索引表达式值使数据库中的纪 录有序排列,它生成一个索引文件,数据变化时,索引文件自动按 索引表达式值进行调整。 数据库文件的索引 索引文件:由按照一定的逻辑顺序排列的关键字段(或表达式), 和每个字段值所在的记录号组成。 以SNO为关键字的索引文件SNO.IDX: 查找时,先在索引文件中快速查到 要查的关键字,然后根据相对应的 记录号在数据库文件中快速定位到 相应的记录上。 SNO 记录号 990101 1 990102 6 990103 4 990104 3 990105 2 990106 5
单森弘文<关键字表达式TO<单素引文件名> 复合索引文件: INDEX ON<关键字表达式TAG<索引标识>[oF<复合索引文件名 ASCENDING I DESCENDING]UNIQUE IDX CDX结构 CDX非结构 Sno Sno SI no name name name use student use student use student nde on sno to sno inde on sno tag sno inde on sno tag sno of stu inde on name to name inde on name tag name inde on name tag name of stu 索引文件 sno, IDX 索引文件 student, cdx索引文件 stu cdx 索引文件 name. IDX FoxproForWindowshttp://cc.synu.edu.cn
FoxPro For Windows http://cc.synu.edu.cn 4 .IDX .CDX 结构 .CDX 非结构 use student use student use student inde on sno to sno inde on sno tag sno inde on sno tag sno of stu inde on name to name inde on name tag name inde on name tag name of stu 索引文件 sno.IDX 索引文件 student.cdx 索引文件 stu.cdx 索引文件 name.IDX Sno Sno name Sno name name 【例】 单索引文件(.IDX):只能包含一个索引。 复合索引文件(.CDX):结构复合索引文件(与数据库文件主名同名) 非结构复合索引文件 单索引文件: INDEX ON <关键字表达式> TO <单索引文件名> 复合索引文件: INDEX ON <关键字表达式> TAG <索引标识> [OF <复合索引文件名>] [ASCENDING | DESCENDING][UNIQUE]
【例】索引表达式 USE student INDEX ON score TO score &&score. idx INDEX ON -score TOsco &&按 score降序 单索引只有升序,数值表达式前加∵号实现降序,字符型不可以。 INDEX ON sex+STR(score) TO sex &&sex. idx INDEX ON name+DTOC(brithday) TO bri 多个字段索引表达式需转换成同一类型后相加。 NDEX ON数学+语文Tosy 数值型取其和做关键字的值。 INDEXON性别ToSY1 UNIQUE 唯一索引,当几条纪录索引表达式值相同时只取其中记录号最小的 Record排 号 姓名 性别出生旦期 入学成绩奖学金 1990161 王亚洲 86-5-24 515 126 2999195 女 81-66-18 54 156 additive控制建立索引或打开索引时,以前的索引并不关闭 FoxproForWindowshttp://cc.synu.edu.cn 5
FoxPro For Windows http://cc.synu.edu.cn 5 【例】索引表达式 USE student INDEX ON score TO score &&score.idx INDEX ON -score TO sco &&按score 降序 多个字段索引表达式需转换成同一类型后相加。 单索引只有升序,数值表达式前加‘-’号实现降序,字符型不可以。 INDEX ON sex+STR(score) TO sex &&sex.idx INDEX ON name+DTOC(brithday) TO bri INDEX ON 数学+语文 TO sy INDEX ON 性别 TO SY1 UNIQUE 唯一索引, 当几条纪录索引表达式值相同时,只取其中记录号最小的。 数值型取其和做关键字的值。 additive控制建立索引或打开索引时,以前的索引并不关闭