7.1 排序與索引
目的與要求: 通過本次課的學習,掌握數(shù)據(jù)表排序和索引操作。 | ||
教學內(nèi)容與時間安排、教學方法:
教學安排: 表的排序、索引的建立 40分鐘 索引的使用 40分鐘 教學方法: CAI、圖形、表格 | ||
教學重點及如何突出重點、難點及如何突破難點: 教學重點: 表排序、索引 教學難點: 表的索引 | ||
基本內(nèi)容 | 教學 | 課堂設計 |
5.1 排序 排序就是依據(jù)打開的表文件(稱原表)中的某些字段值升序或降序重新排列記錄,排序后將產(chǎn)生一個新表,其記錄按排序字段值的大?。ㄉ?降序)新排列的順序排列,但原表記錄的排列順序不變。 說明: ①排序操作:有升序和降序兩種排序方式。升序是指表中記錄按照關(guān)鍵字(排序字段)的值由小到大的順序排列,降序則是按照關(guān)鍵字的值由大到小的順序排列。 ②SORT排序的缺點:排序速度慢(因需按關(guān)鍵字值進行記錄大調(diào)整);占存儲空間大(因排序時,排序表和系統(tǒng)排序所需臨時工作文件需足夠大的磁盤空間,一般為3倍原庫文件的大?。?。 【格式】SORT TO <新文件> ON <字段名1> [/A|/D][/C] [,<字段名2> [/A|/D][/C]…][<范圍>][FOR <條件表達式1>][WHILE <條件表達式2>][FIELDS <字段名表>|FIELDS LIKE <通配字段名1>|FIELDS EXCEPT <通配字段名2>] 【功能】根據(jù)排序字段的值產(chǎn)生一個新的排序表文件,該表文件的擴展名仍為.dbf。 【說明】 ①<新文件>:必選項,它是排序后生成的新表文件名。 ②ON子句中的字段名是排序字段,記錄將隨字段值的遞增或遞減來排序,把排序字段稱排序關(guān)鍵字。 ③選項/A和選項/D分別用來指定是升序還是降序,默認/A升序排序。選項/C表示不區(qū)分字段值中字母的大小寫。排序字段不能是備注型和通用型字段。 ④在ON子句中可以使用多個字段名,排序時,先按主排序字段<字段名1>(稱主關(guān)鍵字)排序,主關(guān)鍵字相同時,再按第二個排序字段排序…。 ⑤省略范圍和條件等子句表示所有記錄排序。 ⑥FIELDS子句用來指定新表中包含的字段,省略時新表中包含原表中的所有字段。 【例】對STUDENT.DBF表按以下要求進行排序: 將STUDENT.DBF表按年齡降序排序,年齡相同時則按學號升序排序。只選擇男生記錄,排序后產(chǎn)生表為stud1.dbf,并要求新表只包含字段:學號,姓名,性別,年齡。 USE student SORT TO stud1 ON 年齡/D,學號 FIELDS 學號,姓名,性別,年齡 FOR 性別="男" USE stu1 LIST
5.2 索引 一、索引的概念 1.基本概念 執(zhí)行排序操作后產(chǎn)生的新表文件中會形成新的物理順序記錄,但并不改變原表文件中記錄的排列順序。索引則不同,索引操作則是根據(jù)關(guān)鍵字的值按升序或降序排列,每個值對應源文件中的一個記錄號,這樣確定了記錄的邏輯排序,而不改變記錄的物理順序。索引操作據(jù)使用的選項不同,可建立單索引和復合索引文件,單索引文件僅由關(guān)鍵字和與關(guān)鍵字的值相對應的記錄號兩個字段構(gòu)成。即每個值對應原表的一個記錄號,這樣就確定了記錄的邏輯順序。 排序與索引的區(qū)別: ①排序:產(chǎn)生的表文件的擴展名為.dbf,記錄的輸出順序是物理順序(重新排列的),原表中記錄的排列順序并不發(fā)生改變,但新排序表中的記錄與原表中的記錄已不在一一對應。 ②索引:產(chǎn)生的文件擴展名為.idx(單索引)或.cdx(復合索引),文件只包含索引關(guān)鍵字的值和與其對應的記錄號,記錄的輸出是邏輯排序的,原表中記錄的排列順序并不發(fā)生改變,但產(chǎn)生的索引文件中的每個記錄值對應原表中的一個記錄號 2.索引的分類 VFP支持建立的索引文件可從以下兩方面來分類: ⑴按索引文件的類型分(2類) 單索引文件:其擴展名為.IDX,索引文件只包含一個索引關(guān)鍵字表達式,主要是為了與FoxBase以及以前的版本兼容而存在的。 復合索引文件:其擴展名為.CDX,該類索引文件中可以包含多個索引關(guān)鍵字表達式,這些索引關(guān)鍵字表達式稱為索引標記。每個索引標記代表了記錄的一種邏輯順序,復合索引文件實際是多個單索引文件的集合。 復合索引文件的分類(分為兩類):一類是結(jié)構(gòu)化復合索引文件,另一種是獨立復合索引文件。 ⑵按索引的功能分 ①索引文件的主要功能是對數(shù)據(jù)表中的內(nèi)容進行邏輯排序,以提高查詢速度。此外,使用索引文件還能控制是否允許相同的索引關(guān)鍵字值在不同記錄中重復出現(xiàn)。 ②按照功能分類可以將索引分為四種類型:主索引、候選索引、唯一索引和普通索引,自由表只能使用后面三種類型。 二、索引的建立 1.創(chuàng)建單索引文件 【格式】INDEX ON <索引關(guān)鍵字> TO <單索引文件名> [FOR <條件表達式>][COMPACT][UNIQUE][ADDITIVE] 【功能】建立擴展名為.IDX的單索引文件。 【說明】 ①使用INDEX命令每次只能建立一個索引文件。但可多次使用INDEX命令依據(jù)打開的一個表中不同的字段建立多個單索引文件。 ②索引關(guān)鍵字:是進行排序的字段——稱索引關(guān)鍵字段,它可以是單關(guān)鍵字或索引表達式,memo和gen字段不能參加索引。 【例4.3-2】打開student,dbf表,以姓名為關(guān)鍵字段,建立索引文件xm.idx,要求保存到d:\myvfp文件夾下。 SET DEFAULT TO D:\MYVFP USE student INDEX ON 姓名 TO xm &&建立了一個按升序排列的普通索引型的單索引文件. list &&顯示結(jié)果如下: 2.創(chuàng)建復合索引文件 1)利用命令建立復合索引 【格式】INDEX ON <索引關(guān)鍵字> TAG <索引標識名>[OF <復合索引文件名>][FOR <條件表達式>][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE] 【功能】建立復合索引文件。 【說明】 ①ASCENDING|DESCENDING:用來指定某一索引表達式為升序還是降序,省略此兩項時為升序。注:單索引不能使用這兩個選項。 ②使用OF <復合索引文件名>子句:表示建立獨立復合索引,省略該子句時建立的為結(jié)構(gòu)化復合索引。 ③使用UNIQUE子句:表示建立唯一索引。如果多條記錄具有相同的關(guān)鍵字段值,索引時只取其中的第一條記錄;不選此項,索引時包括所有記錄。 ④CANDIDATE子句:選,表示創(chuàng)建候選索引。 【例4.3-6】為表student.dbf建立結(jié)構(gòu)復合索引文件。索引關(guān)鍵字為姓名,用xm作為普通索引標識(TAG標記),建立復合索引文件student.cdx use student index on 姓名 tag xm list && 顯示結(jié)果
-----------本節(jié)課結(jié)束-----------
三、索引的使用 建立索引的目的,就是為了實現(xiàn)快速查詢.索引文件必須和表一起使用才有意義,因此在利用索引進行查詢時,需要打開表和索引文件。 1.單索引文件的使用 【格式1】USE <表文件名> INDEX <索引文件名表> 【格式2】SET INDEX TO <索引文件名表>[ADDITIVE] 【說明】 格式1:在打開表的同時打開索引文件。 格式2:打開表后,再打開索引文件。 可同時打開多個單索引文件,文件名之間用逗號分隔,排在最左邊的(第一個)索引文件為主控索引文件。 ①ADDITIVE選項:省略,在打開索引文件時,會關(guān)閉其前打開的單索引文件和獨立復合索引文件。 ②使用SET INDEX TO或CLOSE INDEX命令將關(guān)閉單索引文件和獨立復合索引文件。 ③關(guān)閉表文件時,將同時關(guān)閉所有索引文件(包括結(jié)構(gòu)復合索引文件)。 ④當打開表和索引文件時,使用INSERT命令不管在表的什么位置插入記錄,都被追加在數(shù)據(jù)庫的尾部 【例】單索引文件使用方法示例。 use student set index to xm,xn && 打開索引文件xm和xn,xm被設置為主索引。 List && 顯示xm.idx主控索引文件記錄的邏輯排序結(jié)果.演示見書例4-12。 2.結(jié)構(gòu)化復合索引的使用 打開表,與表主文件名同名,擴展名為,cdx的結(jié)構(gòu)化復合索引文件會自動打開直到關(guān)閉表文件為止。在沒有指定主控索引標記之前,對表的訪問仍然按照原來的物理順序。如果想按照某個索引標記的順序訪問表,還需要為表指定主控索引標記。 【格式1】USE <表文件名> ORDER [TAG] <索引標記名> [ASCENDING|DESCENDING] 【格式2】SET ORDER TO [[TAG] <索引標記名>] [ASCENDING|DESCENDING] 【功能】為表指定結(jié)構(gòu)化復合索引文件的主控索引標記。 【說明】 格式1:在打開數(shù)據(jù)表的同時指定主控索引標識,其中TAG項可選可不選。 格式2:是在打開了數(shù)據(jù)表之后,指定主控索引標識。 [ASCENDING|DESCENDING]:重新指定索引關(guān)鍵字表達式值的排列順序(升序或降序)。 使用set order to命令可以取消主控索引。 【例】結(jié)構(gòu)化復合索引用法示例。 set default to d:\myvfp USE student ORDER xm DESC &&打開表時,結(jié)構(gòu)化索引文件同時打開,指定該索引中的索引標識xm為主控索引標識。 List && 按姓名降序顯示 3.獨立復合索引的使用 打開表后,獨立復合索引文件不隨之打開,因此,使用獨立復合索引文件必需打開它,然后再指定主控索引標記。 【格式1】USE <表文件名> INDEX <獨立復合索引文件名> ORDER [TAG] <索引標記名> [OF <獨立復合索引文件名>][ASCENDING|DESCENDING] 【格式2】SET INDEX TO <獨立復合索引文件名> ORDER [TAG] <索引標記名>[[OF <獨立復合索引文件名>] 【說明】 格式1:打開表文件的同時,打開獨立復合索引文件并且指定主控索引標記。 格式2:打開了表文件之后,再打開獨立復合索引文件并且指定主控索引標記。 【例】獨立復合索引使用示例 set default to d:\myvfp USE student SET INDEX TO xhgg order tag xh_nl OF xhgg list &&顯示xhgg.cdx獨立復合索引文件中索引標記為xh_nl子索引文件的內(nèi)容。 四、重新索引 當對表進行記錄插入、修改和刪除操作時,打開的索引文件會隨之操作(自動更新)。但沒有打開的索引文件,不會隨之操作(自動更新),可利用重新索引功能對沒有打開的索引文件進行重新索引,即將表中進行的插入、修改和刪除記錄重新在索引文件中進行邏輯排序。 【格式】REINDEX [COMPACT] 【說明】 ①進行重新索引前,應先打開表和相應的要重新索引的索引文件,再執(zhí)行REINDEX [COMPACT]命令。 ②COMPACT子句:選表示將索引文件進行壓縮處理.
當有些索引文件沒用時,可以從磁盤上將其刪掉,這樣可提高系統(tǒng)的運行性能,釋放磁盤空間。 1.刪除單索引文件 【格式】delete file <單索引文件名> 【功能】刪除指定的單索引文件 【說明】索引文件關(guān)閉后,才能進行刪除操作。 【例4.3-13】下面給出刪除單索引文件的示例。 set index to && 關(guān)閉單索引文件 delete file xm.idx && 刪除索引文件xm.idx 2.刪除索引標識 【格式1】delete tag all 【功能】刪除復合索引文件中的所有索引標記。 【格式2】delete tag <索引標記1>[,<索引標記2>]… 【功能】刪除復合索引文件中被指定的索引標記。 【說明】 ①使用【格式1】時,將刪除復合索引文件中的所有索引標記。意味著該復合索引文件被刪除。 ②使用【格式2】時,將刪除復合索引文件中被指定的索引標記。 ③使用表設計器也可刪除結(jié)構(gòu)化復合索引文件。 【例】刪除復合索引文件中的索引標記示例。 use student && 打開student.dbf,同時打開復合 索引文件student.cdx delete tag xh,nl && 刪除xh和nl兩個索引標記。 delete tag all && 將student.cdx結(jié)構(gòu)索引文件中全部索引標記刪除,這表刪除了student.cdc結(jié)構(gòu)索引文件.
|
講述
|
排序15分鐘
索引基本概念10分鐘
創(chuàng)建單索引文件10分鐘
創(chuàng)建復合索引文件20分鐘
單索引文件的使用8分鐘
結(jié)構(gòu)化復合索引文件的使用5分鐘
獨立復合索引文件的使用5分鐘
重新索引5分鐘
刪除單索引文件3分鐘
刪除索引標識5分鐘
|
上一條:7.2排序與索引實驗
下一條:6.2 表的基本操作實驗二
CopyRight ? 2016 宣城市信息工程學校 地址:宣城市梅溪路902號 后臺登錄
郵編:242000 電話(傳真):0563-2629508 如有問題,歡迎惠賜 Email:xclmq@163.com