国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

談?wù)勊饕?/h1>
2012-10-17 07:26:32鑫,陸
關(guān)鍵詞:關(guān)鍵字命令結(jié)構(gòu)

常 鑫,陸 源

(集寧師范學(xué)院 數(shù)學(xué)系,內(nèi)蒙古 烏蘭察布 012000)

談?wù)勊饕?/p>

常 鑫,陸 源

(集寧師范學(xué)院 數(shù)學(xué)系,內(nèi)蒙古 烏蘭察布 012000)

在數(shù)據(jù)庫(kù)系統(tǒng)中,數(shù)據(jù)查詢是一種實(shí)際應(yīng)用.本文主要討論Visual FoxPro數(shù)據(jù)庫(kù)當(dāng)中與查詢密切相關(guān)的索引方法.數(shù)據(jù)庫(kù)中提供順序查詢和索引查詢兩種查詢數(shù)據(jù)的方法,以及VIEW(數(shù)據(jù)工作期)窗口和RQBE(范例關(guān)系查詢)窗口兩種交互式查詢工具.

VisualFoxPro;索引;查詢

1 索引的概念

數(shù)據(jù)庫(kù)表中記錄總是按輸入的先后排列的.使用顯示命令顯示表中記錄時(shí),仍按照這個(gè)順序輸出,這種順序稱(chēng)為物理順序.如果希望以另一種順序來(lái)輸出記錄,便需對(duì)數(shù)據(jù)庫(kù)表進(jìn)行索引.索引不改變記錄的物理順序,而是按某個(gè)索引關(guān)鍵字來(lái)建立記錄的邏輯順序.索引能起到改變記錄輸出順序的作用,還能決定記錄的存取順序.

索引可以將數(shù)據(jù)庫(kù)表中的順序按照某一個(gè)或某幾個(gè)字段的值按邏輯順序重新排列.索引文件中所有關(guān)鍵字值按升序或降序排列,每個(gè)值對(duì)應(yīng)原表的一個(gè)記錄號(hào),這樣便確定了記錄的邏輯順序.

索引以增加一個(gè)文件為代價(jià),但文件只包括關(guān)鍵字和記錄號(hào)兩個(gè)字段,比被索引的表要小得多.索引起作用后,增刪或修改表的記錄時(shí)索引文件會(huì)自動(dòng)更新,這也是索引應(yīng)用比較廣的原因.

2 索引的種類(lèi)

2.1 按擴(kuò)展名分

單索引和復(fù)合索引兩類(lèi)索引文件.

2.1.1 單索引文件

單索引文件擴(kuò)展名為IDX,只包含一個(gè)索引,這種類(lèi)型是為了與FOXBASE+開(kāi)發(fā)的應(yīng)用程序兼容而保留的.但若將它定義為壓縮的,將不能被FOXBASE+使用.

建立單索引文件命令格式:

INDEX ON<索引關(guān)鍵字>TO<單索引文件名> [ADDITIVE][COMPACT][FOR<條件>]

說(shuō)明:(1)TO使用于建立單索引文件,其主名由<單索引文件名>確定.

(2)該命令默認(rèn)建立普通索引文件.

(3)COMPACT用來(lái)指定單索引文件為壓縮的.

(4)記錄邏輯順序默認(rèn)為升序.

(5)ADDITIVE表示建立本索引文件時(shí)并不關(guān)閉先前打開(kāi)的索引文件.

下面通過(guò)實(shí)例進(jìn)行說(shuō)明,在VisualFoxPro數(shù)據(jù)庫(kù)開(kāi)發(fā)環(huán)境中建立【商品】項(xiàng)目、【商品】數(shù)據(jù)庫(kù)其中建立商品表并輸入相應(yīng)記錄,以便練習(xí).

【實(shí)例1】 建立品名升序、價(jià)格降序的單索引文件.

USE 商品表 &&打開(kāi)表(商品表.dbf)

LIST &&記錄按物理順序排列顯示

INDEX ON 品名 TO pinming&& 建立品名升序排列單索引文件(pinming.idx),品名為索引關(guān)鍵字

LIST &&記錄按品名升序的邏輯順序排列顯示

INDEX ON -價(jià)格 TO jiage && 建立價(jià)格升序排列單索引文件(jiage.idx)

LIST &&記錄按價(jià)格降序排列顯示

商品表通過(guò)單索引文件pinming與jiage,將原先表中記錄的物理順序按照索引文件的邏輯順序排列顯示.

2.1.2 復(fù)合索引文件

復(fù)合索引文件擴(kuò)展名為CDX,復(fù)合索引文件允許包含多個(gè)索引,每個(gè)索引都有一個(gè)索引標(biāo)識(shí),代表一種邏輯順序.這種索引文件總以壓縮方式存儲(chǔ),以便節(jié)約存儲(chǔ)空間.

復(fù)合索引文件又有結(jié)構(gòu)復(fù)合索引和非結(jié)構(gòu)(獨(dú)立)復(fù)合索引兩種:

(1)定義索引文件時(shí)用戶沒(méi)有取名字就是結(jié)構(gòu)復(fù)合索引文件,結(jié)構(gòu)復(fù)合索引文件的主名與表的主名相同;它隨表的打開(kāi)而打開(kāi),隨著表的關(guān)閉而關(guān)閉.在添加、更新或刪除記錄時(shí)還會(huì)自動(dòng)維護(hù),在各類(lèi)索引文件中,選用它最為省事.

(2)定義索引文件時(shí)為它取了名字,則是非結(jié)構(gòu)(獨(dú)立)復(fù)合索引文件,打開(kāi)非結(jié)構(gòu)索引文件需要使用SETINDEX命令或USE 命令中的INDEX子句,也能隨時(shí)關(guān)閉非結(jié)構(gòu)(獨(dú)立)復(fù)合索引文件.

建復(fù)合索引命令格式:

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

說(shuō)明:(1)該命令用來(lái)建立索引文件或增加索引標(biāo)識(shí).

(2)TAG用于建立復(fù)合索引文件或增加索引標(biāo)識(shí),索引標(biāo)識(shí)由該子句<索引標(biāo)識(shí)名>確定.

(3)該命令默認(rèn)建立普通索引文件,UNIQUE表示建立唯一索引文件,CANDIDATE表示建立侯選索引文件,但是需要與TAG子句同時(shí)使用.

(4)OF選項(xiàng)用來(lái)指定非結(jié)構(gòu)(獨(dú)立)復(fù)合索引文件的名字,缺省該選項(xiàng)表示建立結(jié)構(gòu)復(fù)合索引文件.

(5)記錄邏輯順序默認(rèn)為升序,也可用ASCENDING選項(xiàng)表示為升序,DESCENDING選項(xiàng)表示為降序.

(6)ADDITIVE表示建立本索引文件時(shí)并不關(guān)閉先前打開(kāi)的索引文件.

【實(shí)例2】 為商品表建立一個(gè)結(jié)構(gòu)復(fù)合索引文件,其中包括三個(gè)索引.

(1)記錄以價(jià)格降序排列.

USE 商品表 &&打開(kāi)表(商品表.dbf)

INDEX ON 價(jià)格 TAG 價(jià)格降序 DESCENDING && 建立結(jié)構(gòu)復(fù)合索引文件(商品表.CDX),價(jià)格為索引關(guān)鍵字,價(jià)格降序?yàn)樗饕龢?biāo)識(shí)

LIST &&記錄按價(jià)格降序排列顯示

(2)記錄以品牌升序排列,品牌相同時(shí)則按價(jià)格升序排列.

INDEX ON 品牌+STR(價(jià)格,7,2)TAG ppsjgs &&增加索引標(biāo)識(shí)(ppsjgs),品牌與價(jià)格字段表達(dá)式為關(guān)鍵字

LIST &&品牌升序、品牌相同時(shí)價(jià)格升序排列顯示

(3)記錄以品牌升序排列,品牌相同時(shí)則按價(jià)格降序排列.

INDEX ON 品牌+STR(10000-價(jià)格,7,2)TAG ppsjgj&&增加索引標(biāo)識(shí)(ppsjgj),品牌與價(jià)格字段表達(dá)式為關(guān)鍵字

LIST &&品牌升序、品牌相同時(shí)價(jià)格降序排列顯示

商品表通過(guò)結(jié)構(gòu)符合索引文件(商品表.CDX)中的三個(gè)索引標(biāo)識(shí)(價(jià)格降序、ppsjgs、ppsjgj),將原表記錄的排列順序按照索引文件的邏輯順序排列顯示.

2.2 按功能分

索引除了具有建立記錄邏輯順序的作用外,還能控制是否允許相同的索引關(guān)鍵字值在不同記錄中重復(fù)出現(xiàn).

下面列出了4種索引功能類(lèi)型:見(jiàn)表1.

表1

主關(guān)鍵字是能唯一標(biāo)識(shí)記錄的索引關(guān)鍵字,它應(yīng)能排除關(guān)鍵字重復(fù)值.

3 索引的使用

3.1 打開(kāi)和關(guān)閉索引文件

命令格式:

SET INDEX TO [<索引文件列表>][ADDITIVE]

功能:打開(kāi)當(dāng)前表的一個(gè)或多個(gè)索引文件,并確定控制索引文件.

說(shuō)明:(1)<索引文件列表>可包含多個(gè)索引文件,索引文件名之間以逗號(hào)分隔,表中第一個(gè)索引文件作為主控索引文件,該命令常用于打開(kāi)單索引文件和非結(jié)構(gòu)(獨(dú)立)復(fù)合索引文件.

(2)若缺省所選項(xiàng),僅使用“SET INDEX TO”,將關(guān)閉當(dāng)前工作區(qū)中除結(jié)構(gòu)復(fù)合索引外的所有索引文件,同時(shí)取消主控索引.

(3)若缺省ADDITIVE選項(xiàng),則在用本命令打開(kāi)索引文件時(shí),除結(jié)構(gòu)復(fù)合索引文件外的索引文件均被關(guān)閉.

(4)命令“use <表名> index <索引文件列表>”也可在打開(kāi)表的同時(shí)打開(kāi)索引文件,并確定<索引文件列表>中的第一個(gè)索引文件為控制索引文件.

提示:(1)若當(dāng)前僅有一個(gè)索引文件被打開(kāi),它就成為主控索引文件.索引剛建立時(shí),索引文件為打開(kāi)狀態(tài)且成為主控索引文件.若當(dāng)前已經(jīng)打開(kāi)了多個(gè)索引文件,可通過(guò)SET ORDER命令來(lái)確定主控索引文件.

(2)除了結(jié)構(gòu)復(fù)合索引能隨著表的打開(kāi)而打開(kāi)外,其它索引文件必須用命令顯示打開(kāi).

(3)表關(guān)閉時(shí)索引文件就隨表關(guān)閉.

3.2 確定主控索引

復(fù)合索引文件建立時(shí),當(dāng)前建立的索引標(biāo)識(shí)自動(dòng)成為主控索引.但必須注意,表重新打開(kāi)時(shí)盡管復(fù)合索引文件已自動(dòng)打開(kāi),但還須確定主控索引.下面的命令用來(lái)確定主控索引,也能確定主控索引文件.

命令格式:

SET ORDER TO [<數(shù)值表達(dá)式>|<單索引文件名>|[TAG]<索引標(biāo)識(shí)>[ASCENDING][DESCENDING]]

說(shuō)明:(1)<數(shù)值表達(dá)式>表示已經(jīng)打開(kāi)索引的序號(hào),該序號(hào)用來(lái)指定主控索引文件或主控索引.系統(tǒng)先為各單索引文件編號(hào),所以結(jié)構(gòu)復(fù)合索引文件的序號(hào)比單索引文件大.

(2)<單索引文件名>指定該單索引文件為主控索引文件.

(3)<索引標(biāo)識(shí)>指定該索引標(biāo)識(shí)為主控索引.

(4)"SETORDER TO"或者 "SETORDER TO 0"命令取消主控索引文件及主控索引,表中記錄按物理順序輸出.

4 刪除索引

4.1 刪除索引文件

若用刪除文件命令來(lái)刪除索引文件,須遵循“先關(guān)閉后刪除”的原則,這與刪除表類(lèi)似.

命令格式:

ERASE|DELETE FILE <文件名>

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

命令格式:

DELETE TAG ALL|<索引標(biāo)識(shí)1>[,<索引標(biāo)識(shí)2>]...

說(shuō)明:(1)該命令用來(lái)刪除打開(kāi)的結(jié)構(gòu)復(fù)合索引文件的索引標(biāo)識(shí).

(2)ALL用于刪除結(jié)構(gòu)復(fù)合索引文件的所有索引標(biāo)識(shí),若某個(gè)索引文件的所有索引標(biāo)識(shí)都被刪除,則該索引文件也被刪除.

5 索引的更新

5.1 自動(dòng)更新

當(dāng)表中的數(shù)據(jù)發(fā)生變化時(shí)(如對(duì)表進(jìn)行插入、刪除、添加或更新操作之后),所有當(dāng)時(shí)已經(jīng)打開(kāi)的索引文件都會(huì)隨數(shù)據(jù)的改變自動(dòng)改變記錄的邏輯順序,實(shí)現(xiàn)索引文件的自動(dòng)更新.

5.2 重新索引

如果不符合實(shí)現(xiàn)索引的條件,在修改表的記錄時(shí)索引文件就不會(huì)自動(dòng)更新.若要維持記錄的邏輯順序,可用REINDEX命令重建索引.

命令格式為:

REINDEX[COMPACT]

當(dāng)然也可以用INDEX ON 命令再次建立索引,兩者效果相同.

〔1〕施建強(qiáng).VFP查詢系統(tǒng)實(shí)現(xiàn)技巧六則[J].中國(guó)計(jì)算機(jī)報(bào),2001(8).

〔2〕李加福,等.Visual Foxpro6.0中文版入門(mén)與提高[M].清華大學(xué)出版社,1999.

〔3〕薩師煊,王珊.數(shù)據(jù)庫(kù)系統(tǒng)概論[M].北京:高等教育出版社,2000.

TP39

A

1673-260X(2012)03-0035-03

猜你喜歡
關(guān)鍵字命令結(jié)構(gòu)
履職盡責(zé)求實(shí)效 真抓實(shí)干勇作為——十個(gè)關(guān)鍵字,盤(pán)點(diǎn)江蘇統(tǒng)戰(zhàn)的2021
只聽(tīng)主人的命令
《形而上學(xué)》△卷的結(jié)構(gòu)和位置
論結(jié)構(gòu)
成功避開(kāi)“關(guān)鍵字”
移防命令下達(dá)后
論《日出》的結(jié)構(gòu)
這是人民的命令
創(chuàng)新治理結(jié)構(gòu)促進(jìn)中小企業(yè)持續(xù)成長(zhǎng)
藍(lán)色命令

兰溪市| 高要市| 出国| 方山县| 昌都县| 南阳市| 东乡县| 延川县| 全椒县| 平乐县| 沙雅县| 墨竹工卡县| 西华县| 聊城市| 嘉祥县| 攀枝花市| 峨边| 温宿县| 桂平市| 安乡县| 宁海县| 连南| 梁平县| 启东市| 新宾| 安仁县| 图们市| 临泽县| 桐城市| 岑巩县| 正蓝旗| 雷州市| 枣强县| 邵阳县| 平乐县| 莎车县| 禹州市| 五莲县| 滨海县| 娱乐| 元谋县|