• 名師風(fēng)采
    裴鵬飛,男,中共黨員,1994.9~1998.7,安徽農(nóng)業(yè)技術(shù)師范學(xué)院本科畢業(yè)。1998.7~2001.8 在宣城市宣州區(qū)雙橋職高擔(dān)任計算機教師。2001.9至今調(diào)至宣城市職高(更名為宣城市信息工程學(xué)校)……
    工作坊概況
    2016年安徽省教育廳、財政廳、人社廳等單位根據(jù)安徽省中等職業(yè)教育質(zhì)量提升工程批準(zhǔn)創(chuàng)建的,目前工作坊計12人,均具有本科以上學(xué)歷,碩士研究生1人,副高6人,中級職稱2人, 35歲以下青年教師3人, 外聘教師2人。
    7.1 排序與索引
    發(fā)布時間:2019-01-27 01:01:19  信息來源:出處:   閱讀次數(shù):

    7.1 排序與索引

    目的與要求:

    通過本次課的學(xué)習(xí),掌握數(shù)據(jù)表排序和索引操作。

    教學(xué)內(nèi)容與時間安排、教學(xué)方法:

    教學(xué)安排:

    表的排序、索引的建立                  40分鐘

    索引的使用                            40分鐘

    教學(xué)方法:

    CAI、圖形、表格

    教學(xué)重點及如何突出重點、難點及如何突破難點:

    教學(xué)重點:

    表排序、索引

    教學(xué)難點:

    表的索引

    基本內(nèi)容

    教學(xué)
    手段

    課堂設(shè)計
    和時間安排

    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表按年齡降序排序,年齡相同時則按學(xué)號升序排序。只選擇男生記錄,排序后產(chǎn)生表為stud1.dbf,并要求新表只包含字段:學(xué)號,姓名,性別,年齡。

    USE student

    SORT TO stud1 ON 年齡/D,學(xué)號 FIELDS 學(xué)號,姓名,性別,年齡   FOR 性別="男"

    USE stu1

    LIST

    5.2 索引

    一、索引的概念

    1.基本概念

    執(zhí)行排序操作后產(chǎn)生的新表文件中會形成新的物理順序記錄,但并不改變原表文件中記錄的排列順序。索引則不同,索引操作則是根據(jù)關(guān)鍵字的值按升序或降序排列,每個值對應(yīng)源文件中的一個記錄號,這樣確定了記錄的邏輯排序,而不改變記錄的物理順序。索引操作據(jù)使用的選項不同,可建立單索引和復(fù)合索引文件,單索引文件僅由關(guān)鍵字和與關(guān)鍵字的值相對應(yīng)的記錄號兩個字段構(gòu)成。即每個值對應(yīng)原表的一個記錄號,這樣就確定了記錄的邏輯順序。

    排序與索引的區(qū)別:

    ①排序:產(chǎn)生的表文件的擴展名為.dbf,記錄的輸出順序是物理順序(重新排列的),原表中記錄的排列順序并不發(fā)生改變,但新排序表中的記錄與原表中的記錄已不在一一對應(yīng)。

    ②索引:產(chǎn)生的文件擴展名為.idx(單索引)或.cdx(復(fù)合索引),文件只包含索引關(guān)鍵字的值和與其對應(yīng)的記錄號,記錄的輸出是邏輯排序的,原表中記錄的排列順序并不發(fā)生改變,但產(chǎn)生的索引文件中的每個記錄值對應(yīng)原表中的一個記錄號

    2.索引的分類

    VFP支持建立的索引文件可從以下兩方面來分類:

    ⑴按索引文件的類型分(2類)

    單索引文件:其擴展名為.IDX,索引文件只包含一個索引關(guān)鍵字表達式,主要是為了與FoxBase以及以前的版本兼容而存在的。

    復(fù)合索引文件:其擴展名為.CDX,該類索引文件中可以包含多個索引關(guān)鍵字表達式,這些索引關(guān)鍵字表達式稱為索引標(biāo)記。每個索引標(biāo)記代表了記錄的一種邏輯順序,復(fù)合索引文件實際是多個單索引文件的集合。

    復(fù)合索引文件的分類(分為兩類):一類是結(jié)構(gòu)化復(fù)合索引文件,另一種是獨立復(fù)合索引文件。

    ⑵按索引的功能分

    ①索引文件的主要功能是對數(shù)據(jù)表中的內(nèi)容進行邏輯排序,以提高查詢速度。此外,使用索引文件還能控制是否允許相同的索引關(guān)鍵字值在不同記錄中重復(fù)出現(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)建復(fù)合索引文件

    1)利用命令建立復(fù)合索引

    【格式】INDEX  ON <索引關(guān)鍵字> TAG <索引標(biāo)識名>[OF <復(fù)合索引文件名>][FOR <條件表達式>][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE]

    【功能】建立復(fù)合索引文件。

    【說明】

    ①ASCENDING|DESCENDING:用來指定某一索引表達式為升序還是降序,省略此兩項時為升序。注:單索引不能使用這兩個選項。

    ②使用OF <復(fù)合索引文件名>子句:表示建立獨立復(fù)合索引,省略該子句時建立的為結(jié)構(gòu)化復(fù)合索引。

    ③使用UNIQUE子句:表示建立唯一索引。如果多條記錄具有相同的關(guān)鍵字段值,索引時只取其中的第一條記錄;不選此項,索引時包括所有記錄。

    ④CANDIDATE子句:選,表示創(chuàng)建候選索引。

    【例4.3-6】為表student.dbf建立結(jié)構(gòu)復(fù)合索引文件。索引關(guān)鍵字為姓名,用xm作為普通索引標(biāo)識(TAG標(biāo)記),建立復(fù)合索引文件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)閉其前打開的單索引文件和獨立復(fù)合索引文件。

    ②使用SET  INDEX TO或CLOSE INDEX命令將關(guān)閉單索引文件和獨立復(fù)合索引文件。

    ③關(guān)閉表文件時,將同時關(guān)閉所有索引文件(包括結(jié)構(gòu)復(fù)合索引文件)。

    ④當(dāng)打開表和索引文件時,使用INSERT命令不管在表的什么位置插入記錄,都被追加在數(shù)據(jù)庫的尾部

    【例】單索引文件使用方法示例。

    use student

    set index to  xm,xn    && 打開索引文件xm和xn,xm被設(shè)置為主索引。

    List    && 顯示xm.idx主控索引文件記錄的邏輯排序結(jié)果.演示見書例4-12。

    2.結(jié)構(gòu)化復(fù)合索引的使用

    打開表,與表主文件名同名,擴展名為,cdx的結(jié)構(gòu)化復(fù)合索引文件會自動打開直到關(guān)閉表文件為止。在沒有指定主控索引標(biāo)記之前,對表的訪問仍然按照原來的物理順序。如果想按照某個索引標(biāo)記的順序訪問表,還需要為表指定主控索引標(biāo)記。

    【格式1】USE <表文件名> ORDER [TAG] <索引標(biāo)記名> [ASCENDING|DESCENDING]

    【格式2】SET ORDER TO [[TAG] <索引標(biāo)記名>]

              [ASCENDING|DESCENDING]

    【功能】為表指定結(jié)構(gòu)化復(fù)合索引文件的主控索引標(biāo)記。

    【說明】

    格式1:在打開數(shù)據(jù)表的同時指定主控索引標(biāo)識,其中TAG項可選可不選。

    格式2:是在打開了數(shù)據(jù)表之后,指定主控索引標(biāo)識。

    [ASCENDING|DESCENDING]:重新指定索引關(guān)鍵字表達式值的排列順序(升序或降序)。

    使用set order  to命令可以取消主控索引。

    【例】結(jié)構(gòu)化復(fù)合索引用法示例。

    set default to  d:\myvfp

    USE student ORDER  xm DESC  &&打開表時,結(jié)構(gòu)化索引文件同時打開,指定該索引中的索引標(biāo)識xm為主控索引標(biāo)識。

    List && 按姓名降序顯示

    3.獨立復(fù)合索引的使用

    打開表后,獨立復(fù)合索引文件不隨之打開,因此,使用獨立復(fù)合索引文件必需打開它,然后再指定主控索引標(biāo)記。

    【格式1】USE <表文件名> INDEX <獨立復(fù)合索引文件名> ORDER [TAG] <索引標(biāo)記名> [OF <獨立復(fù)合索引文件名>][ASCENDING|DESCENDING]

    【格式2】SET INDEX TO <獨立復(fù)合索引文件名> ORDER [TAG]  <索引標(biāo)記名>[[OF <獨立復(fù)合索引文件名>]

    【說明】

    格式1:打開表文件的同時,打開獨立復(fù)合索引文件并且指定主控索引標(biāo)記。

    格式2:打開了表文件之后,再打開獨立復(fù)合索引文件并且指定主控索引標(biāo)記。

    【例】獨立復(fù)合索引使用示例

    set default to  d:\myvfp

    USE student

    SET INDEX TO xhgg  order tag xh_nl OF xhgg

    list &&顯示xhgg.cdx獨立復(fù)合索引文件中索引標(biāo)記為xh_nl子索引文件的內(nèi)容。

    四、重新索引

    當(dāng)對表進行記錄插入、修改和刪除操作時,打開的索引文件會隨之操作(自動更新)。但沒有打開的索引文件,不會隨之操作(自動更新),可利用重新索引功能對沒有打開的索引文件進行重新索引,即將表中進行的插入、修改和刪除記錄重新在索引文件中進行邏輯排序。

    【格式】REINDEX  [COMPACT]

    【說明】

    ①進行重新索引前,應(yīng)先打開表和相應(yīng)的要重新索引的索引文件,再執(zhí)行REINDEX [COMPACT]命令。

    ②COMPACT子句:選表示將索引文件進行壓縮處理.

    當(dāng)有些索引文件沒用時,可以從磁盤上將其刪掉,這樣可提高系統(tǒng)的運行性能,釋放磁盤空間。

    1.刪除單索引文件

    【格式】delete  file <單索引文件名>

    【功能】刪除指定的單索引文件

    【說明】索引文件關(guān)閉后,才能進行刪除操作。

    【例4.3-13】下面給出刪除單索引文件的示例。

    set index to  && 關(guān)閉單索引文件

    delete file  xm.idx  && 刪除索引文件xm.idx  

    2.刪除索引標(biāo)識

    【格式1】delete tag all

    【功能】刪除復(fù)合索引文件中的所有索引標(biāo)記。

    【格式2】delete tag <索引標(biāo)記1>[,<索引標(biāo)記2>]…

    【功能】刪除復(fù)合索引文件中被指定的索引標(biāo)記。

    【說明】

    ①使用【格式1】時,將刪除復(fù)合索引文件中的所有索引標(biāo)記。意味著該復(fù)合索引文件被刪除。

    ②使用【格式2】時,將刪除復(fù)合索引文件中被指定的索引標(biāo)記。

    ③使用表設(shè)計器也可刪除結(jié)構(gòu)化復(fù)合索引文件。

    【例】刪除復(fù)合索引文件中的索引標(biāo)記示例。

    use student  && 打開student.dbf,同時打開復(fù)合 索引文件student.cdx

    delete tag xh,nl  && 刪除xh和nl兩個索引標(biāo)記。

    delete tag all   && 將student.cdx結(jié)構(gòu)索引文件中全部索引標(biāo)記刪除,這表刪除了student.cdc結(jié)構(gòu)索引文件.

    講述

    排序15分鐘

    索引基本概念10分鐘

     

    創(chuàng)建單索引文件10分鐘

     

    創(chuàng)建復(fù)合索引文件20分鐘

     

    單索引文件的使用8分鐘

    結(jié)構(gòu)化復(fù)合索引文件的使用5分鐘

    獨立復(fù)合索引文件的使用5分鐘

    重新索引5分鐘

    刪除單索引文件3分鐘

    刪除索引標(biāo)識5分鐘


    CopyRight ? 2016 宣城市信息工程學(xué)校 地址:宣城市梅溪路902號 后臺登錄

    郵編:242000 電話(傳真):0563-2629508 如有問題,歡迎惠賜 Email:xclmq@163.com

    午夜免费啪在线观看视频,国产日韩欧美久久一区,久久无码高潮喷潮,国产日韩久久久久老熟女 在线观看肉片AV网站免费