<style id="uedzd"></style>
  • <style id="uedzd"></style>
  • <dfn id="uedzd"></dfn>
  • <dfn id="uedzd"></dfn>
    1. <ruby id="uedzd"></ruby>
      <ruby id="uedzd"></ruby>
    2. 教學(xué)設(shè)計(jì)
      您當(dāng)前的位置: 首頁(yè)>教學(xué)設(shè)計(jì)

      7.1 排序與索引

      發(fā)布時(shí)間: 2019-01-27      信息來(lái)源:       閱讀次數(shù):

      7.1 排序與索引

      目的與要求:

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

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

      教學(xué)安排:

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

      索引的使用                            40分鐘

      教學(xué)方法:

      CAI、圖形、表格

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

      教學(xué)重點(diǎn):

      表排序、索引

      教學(xué)難點(diǎn):

      表的索引

      基本內(nèi)容

      教學(xué)
      手段

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

      5.1 排序

      排序就是依據(jù)打開(kāi)的表文件(稱(chēng)原表)中的某些字段值升序或降序重新排列記錄,排序后將產(chǎn)生一個(gè)新表,其記錄按排序字段值的大?。ㄉ?降序)新排列的順序排列,但原表記錄的排列順序不變。

      說(shuō)明:

      ①排序操作:有升序和降序兩種排序方式。升序是指表中記錄按照關(guān)鍵字(排序字段)的值由小到大的順序排列,降序則是按照關(guān)鍵字的值由大到小的順序排列。

      ②SORT排序的缺點(diǎn):排序速度慢(因需按關(guān)鍵字值進(jìn)行記錄大調(diào)整);占存儲(chǔ)空間大(因排序時(shí),排序表和系統(tǒng)排序所需臨時(shí)工作文件需足夠大的磁盤(pán)空間,一般為3倍原庫(kù)文件的大?。?。

      【格式】SORT TO  <新文件> ON <字段名1>  [/A|/D][/C] [,<字段名2> [/A|/D][/C]…][<范圍>][FOR <條件表達(dá)式1>][WHILE <條件表達(dá)式2>][FIELDS <字段名表>|FIELDS LIKE <通配字段名1>|FIELDS  EXCEPT <通配字段名2>]

      【功能】根據(jù)排序字段的值產(chǎn)生一個(gè)新的排序表文件,該表文件的擴(kuò)展名仍為.dbf。

      【說(shuō)明】

      ①<新文件>:必選項(xiàng),它是排序后生成的新表文件名。

      ②ON子句中的字段名是排序字段,記錄將隨字段值的遞增或遞減來(lái)排序,把排序字段稱(chēng)排序關(guān)鍵字。

      ③選項(xiàng)/A和選項(xiàng)/D分別用來(lái)指定是升序還是降序,默認(rèn)/A升序排序。選項(xiàng)/C表示不區(qū)分字段值中字母的大小寫(xiě)。排序字段不能是備注型和通用型字段。

      ④在ON子句中可以使用多個(gè)字段名,排序時(shí),先按主排序字段<字段名1>(稱(chēng)主關(guān)鍵字)排序,主關(guān)鍵字相同時(shí),再按第二個(gè)排序字段排序…。

      ⑤省略范圍和條件等子句表示所有記錄排序。

      ⑥FIELDS子句用來(lái)指定新表中包含的字段,省略時(shí)新表中包含原表中的所有字段。

      【例】對(duì)STUDENT.DBF表按以下要求進(jìn)行排序:

      將STUDENT.DBF表按年齡降序排序,年齡相同時(shí)則按學(xué)號(hào)升序排序。只選擇男生記錄,排序后產(chǎn)生表為stud1.dbf,并要求新表只包含字段:學(xué)號(hào),姓名,性別,年齡。

      USE student

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

      USE stu1

      LIST

      5.2 索引

      一、索引的概念

      1.基本概念

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

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

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

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

      2.索引的分類(lèi)

      VFP支持建立的索引文件可從以下兩方面來(lái)分類(lèi):

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

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

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

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

      ⑵按索引的功能分

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

      ②按照功能分類(lèi)可以將索引分為四種類(lèi)型:主索引、候選索引、唯一索引和普通索引,自由表只能使用后面三種類(lèi)型。

      二、索引的建立

      1.創(chuàng)建單索引文件

      【格式】INDEX  ON <索引關(guān)鍵字> TO <單索引文件名> [FOR <條件表達(dá)式>][COMPACT][UNIQUE][ADDITIVE]

      【功能】建立擴(kuò)展名為.IDX的單索引文件。

      【說(shuō)明】

      ①使用INDEX命令每次只能建立一個(gè)索引文件。但可多次使用INDEX命令依據(jù)打開(kāi)的一個(gè)表中不同的字段建立多個(gè)單索引文件。

      ②索引關(guān)鍵字:是進(jìn)行排序的字段——稱(chēng)索引關(guān)鍵字段,它可以是單關(guān)鍵字或索引表達(dá)式,memo和gen字段不能參加索引。

      【例4.3-2】打開(kāi)student,dbf表,以姓名為關(guān)鍵字段,建立索引文件xm.idx,要求保存到d:\myvfp文件夾下。

      SET DEFAULT TO  D:\MYVFP

      USE student

      INDEX ON 姓名 TO  xm  &&建立了一個(gè)按升序排列的普通索引型的單索引文件.

      list &&顯示結(jié)果如下:

      2.創(chuàng)建復(fù)合索引文件

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

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

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

      【說(shuō)明】

      ①ASCENDING|DESCENDING:用來(lái)指定某一索引表達(dá)式為升序還是降序,省略此兩項(xiàng)時(shí)為升序。注:單索引不能使用這兩個(gè)選項(xiàng)。

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

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

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

      【例4.3-6】為表student.dbf建立結(jié)構(gòu)復(fù)合索引文件。索引關(guān)鍵字為姓名,用xm作為普通索引標(biāo)識(shí)(TAG標(biāo)記),建立復(fù)合索引文件student.cdx

      use student

      index on 姓名 tag xm

      list && 顯示結(jié)果

      -----------本節(jié)課結(jié)束-----------

      三、索引的使用

      建立索引的目的,就是為了實(shí)現(xiàn)快速查詢(xún).索引文件必須和表一起使用才有意義,因此在利用索引進(jìn)行查詢(xún)時(shí),需要打開(kāi)表和索引文件。

      1.單索引文件的使用

      【格式1】USE <表文件名> INDEX <索引文件名表>

      【格式2】SET INDEX TO <索引文件名表>[ADDITIVE]

      【說(shuō)明】

      格式1:在打開(kāi)表的同時(shí)打開(kāi)索引文件。

      格式2:打開(kāi)表后,再打開(kāi)索引文件。

      可同時(shí)打開(kāi)多個(gè)單索引文件,文件名之間用逗號(hào)分隔,排在最左邊的(第一個(gè))索引文件為主控索引文件。

      ①ADDITIVE選項(xiàng):省略,在打開(kāi)索引文件時(shí),會(huì)關(guān)閉其前打開(kāi)的單索引文件和獨(dú)立復(fù)合索引文件。

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

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

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

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

      use student

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

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

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

      打開(kāi)表,與表主文件名同名,擴(kuò)展名為,cdx的結(jié)構(gòu)化復(fù)合索引文件會(huì)自動(dòng)打開(kāi)直到關(guān)閉表文件為止。在沒(méi)有指定主控索引標(biāo)記之前,對(duì)表的訪(fǎng)問(wèn)仍然按照原來(lái)的物理順序。如果想按照某個(gè)索引標(biāo)記的順序訪(fǎng)問(wèn)表,還需要為表指定主控索引標(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)記。

      【說(shuō)明】

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

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

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

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

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

      set default to  d:\myvfp

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

      List && 按姓名降序顯示

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

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

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

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

      【說(shuō)明】

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

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

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

      set default to  d:\myvfp

      USE student

      SET INDEX TO xhgg  order tag xh_nl OF xhgg

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

      四、重新索引

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

      【格式】REINDEX  [COMPACT]

      【說(shuō)明】

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

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

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

      1.刪除單索引文件

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

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

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

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

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

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

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

      【格式1】delete tag all

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

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

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

      【說(shuō)明】

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

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

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

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

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

      delete tag xh,nl  && 刪除xh和nl兩個(gè)索引標(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分鐘

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

      重新索引5分鐘

      刪除單索引文件3分鐘

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


      日韩无码第一页,一区_97资源人妻碰碰碰_有码无码人妻Av_午夜亚洲国产理论片2020网站 亚洲无码片AV一级 岛国av无码专区免费看
      <style id="uedzd"></style>
    3. <style id="uedzd"></style>
    4. <dfn id="uedzd"></dfn>
    5. <dfn id="uedzd"></dfn>
      1. <ruby id="uedzd"></ruby>
        <ruby id="uedzd"></ruby>