數(shù)據(jù)庫(kù)應(yīng)用課件:第03章 查詢(xún)與統(tǒng)計(jì)_第1頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用課件:第03章 查詢(xún)與統(tǒng)計(jì)_第2頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用課件:第03章 查詢(xún)與統(tǒng)計(jì)_第3頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用課件:第03章 查詢(xún)與統(tǒng)計(jì)_第4頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用課件:第03章 查詢(xún)與統(tǒng)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩86頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章查詢(xún)與統(tǒng)計(jì)

1

§3.1排序與索引

表的記錄通常按輸入的先后排列,用LIST等命令顯示表時(shí)將按此順序輸出。若要以另一種順序來(lái)輸出記錄,便須對(duì)表進(jìn)行排序或索引。排序與索引都能改變記錄輸出順序,后者還能決定記錄的存取順序。2一、排序排序就是根據(jù)表的某些字段重排記錄。排序后將產(chǎn)生一個(gè)新表,其記錄按新的順序排列,但原文件不變。命令格式:

SORTTO<新表名>ON<字段名1>[/A|/D][/C][,<字段名2>[/A|/D][/C]...][<范圍>][FOR<條件1>][WHILE<條件2>][FIELDS<字段名表>|FIELDSLIKE<通配字段名>|FIELDSEXCEPT<通配字段名>]

3說(shuō)明:(1)ON子句的字段名表示排序字段,記錄將隨字段值的增大(升序)或減小(降序)來(lái)排序。選項(xiàng)/A和/D分別用來(lái)指定升序或降序,默認(rèn)按升序排序。選項(xiàng)/C表示不區(qū)分字段值中字母大小寫(xiě),即將同一字母的大寫(xiě)與小寫(xiě)看成一樣。不可選用備注型或通用型字段來(lái)排序。(2)可在ON子句中使用多個(gè)字段名實(shí)現(xiàn)多重排序,即先按主排序字段<宇段名l>排序,對(duì)于字段值相同的記錄再按第二排序字段<字段名2>排序,依此類(lèi)推。(3)缺省<范圍>、FOR<條件1>和WHILE<條件2>等子句表示對(duì)所有記錄排序。(4)FIELDS子句指定新表應(yīng)包含的字段.默認(rèn)包含原表所有字段。4

示例:(1)將所有非主要設(shè)備按照啟用日期排序,新表只包含編號(hào)、名稱(chēng)、啟用日期三個(gè)字段。

sorttoshb1on起用日期/Dfields編號(hào),名稱(chēng),起用日期for.not.主要設(shè)備

sorttoshb1on起用日期/Afields編號(hào),名稱(chēng),起用日期for.not.主要設(shè)備(2)將主要設(shè)備按照部門(mén)降序排列,當(dāng)部門(mén)相同按照價(jià)格升序排列

sorttoshb1on部門(mén)/d,價(jià)格for主要設(shè)備5二、索引

1、索引的概念(1)記錄的物理順序與邏輯順序文件中的記錄一般按其磁盤(pán)存儲(chǔ)順序輸出,這種順序稱(chēng)為物理順序。執(zhí)行排序后,在新文件中形成了新的物理順序。索引排序?qū)儆诹硗庖环N方法,排序建立索引文件,但它不改變記錄的物理順序,而是按某個(gè)索引關(guān)鍵字(或其表達(dá)式)來(lái)建立記錄的邏輯順序。在索引文件中,所有關(guān)鍵字值按升序或降序排列,每個(gè)值對(duì)應(yīng)原文件的一個(gè)記錄號(hào),這樣使確定了記錄的邏輯順序。

6以?xún)r(jià)格為關(guān)鍵字段排序后示意7

索引類(lèi)似于書(shū)的目錄索引,目錄書(shū)頁(yè)號(hào)列表用于指示讀者查找書(shū)中的特定頁(yè)碼,而數(shù)據(jù)表的索引是指向特定記錄的記錄號(hào)列表,用于處理如何確定記錄的處理順序。例如要顯示所有記錄,系統(tǒng)就依次按索引文件中的記錄號(hào)取出表中的物理記錄,達(dá)到按關(guān)鍵字值順序來(lái)列出記錄的效果。雖然排序與索引都以增加一個(gè)文件為代價(jià),但索引文件只包括關(guān)鍵字和記錄號(hào)兩個(gè)字段,比被索引的表要小得多;索引起作用后,增刪或修改表的記錄時(shí)索引文件會(huì)自動(dòng)更新,故而索引的應(yīng)用遠(yuǎn)比排序?yàn)閺V。8(2)索引的種類(lèi)a、按擴(kuò)展名來(lái)分類(lèi):

VFP支持復(fù)合索引和單索引兩類(lèi)索引文件。前者擴(kuò)展名為CDX,后者擴(kuò)展名為IDX。復(fù)合索引文件允許包含多個(gè)索引,每個(gè)索引都有一個(gè)索引標(biāo)識(shí),代表一種記錄邏輯順序。這種索引文件總以壓縮方式存儲(chǔ),以便少占存儲(chǔ)空間。復(fù)合索引文件又有結(jié)構(gòu)的和非結(jié)構(gòu)的兩種。若定義復(fù)合索引文件時(shí)用戶為它取了名字,則其為非結(jié)構(gòu)的,否則為結(jié)構(gòu)的。打開(kāi)非結(jié)構(gòu)復(fù)合索引文件需使用SETINDEX命令或USE命令中的INDEX子句。結(jié)構(gòu)復(fù)合索引文件的主名與表的主名相同,它隨表的打開(kāi)而打開(kāi),在添加、更改或刪除記錄時(shí)還會(huì)自動(dòng)維護(hù),在各類(lèi)索引文件中,選用它最為省事。9b、按功能分類(lèi):索引除具有建立記錄邏輯順序的作用外,還按控制是否允許相同的索引關(guān)鍵字值在不同記錄中重復(fù)出現(xiàn),或允許在永久關(guān)系中建立參照完整性,按照功能其有四種類(lèi)型的索引,表3.1列出了4種索引功能類(lèi)型。102、建立索引命令格式:命令格式:INDEXON<索引關(guān)鍵字>TAG<索引標(biāo)示>[OF<復(fù)合索引文件名>][FOR<條件>][COMPACT][ASCENDING|DESCENDING][CANDIDATE][ADDITIVE](★★)

11說(shuō)明:關(guān)鍵字可用表達(dá)式表示。(1)TO子句適用于建立單索引文件,其主名由<單索引文件名>指出。TAG子句用于建立復(fù)合索引文件及索引標(biāo)識(shí),或增加索引標(biāo)識(shí),索引標(biāo)識(shí)由該子句的<索引標(biāo)識(shí)名>指出。該命令默認(rèn)建立普通索引型索引文件:UNIQUE表示建立唯一索引型索引文件;CANDIDATE表示索引文件是候選索引型,但需與TAG子句同時(shí)使用。(2)COMPACT選項(xiàng)用來(lái)指定單索引文件為壓縮的。12

(3)OF選項(xiàng)的<復(fù)合索引文件名>用于指定非結(jié)構(gòu)復(fù)合索引文件的名字,缺省該選項(xiàng)表示建立結(jié)構(gòu)復(fù)合索引文件。(4)記錄邏輯順序默認(rèn)為升序,也可用ASCENDING選項(xiàng)表示升序。DESCENDING選項(xiàng)表示降序。(5)ADDITIVE表示建立本索引文件時(shí)并不關(guān)閉先前打開(kāi)的索引文件。13示例:(1)建立單索引文件

INDEXON名稱(chēng)TOmcidx&&以名稱(chēng)為關(guān)鍵字

INDEXON編號(hào)TObhidx&&以編號(hào)為關(guān)鍵字(2)建立復(fù)合索引文件

INDEXON名稱(chēng)TAGmcDESC&&以名稱(chēng)為關(guān)鍵字,降序排列

INDEXON部門(mén)+STR(價(jià)格,9,2)TAGBMJG&&以部門(mén)和價(jià)格組合進(jìn)行索引,注意類(lèi)型應(yīng)匹配,索引順序是首先按照部門(mén)排序,部門(mén)相同再按照價(jià)格排序

INDEXONVAL(部門(mén))-價(jià)格/1000000TAGBMJG1

以上具體參見(jiàn)P75。14

也可以用表設(shè)計(jì)器建立索引,用表設(shè)計(jì)器建立或修改索引的方法有兩種:其一,在字段選項(xiàng)卡索引列的組合框中選定向上箭頭為升序索引,向下筋頭為降序索引,該行字段為索引關(guān)鍵字。單擊索引列的字段將會(huì)顯示組合框。其二,使用索引選項(xiàng)卡。該選項(xiàng)卡中可鍵入關(guān)鍵字表達(dá)式。還可選擇索引類(lèi)型。字段選項(xiàng)卡中建立的索引也能在此選項(xiàng)卡顯示出來(lái)。用戶也可在表達(dá)式列表框中或索引選項(xiàng)卡表達(dá)式列的文本框中直接鍵入表達(dá)式。結(jié)構(gòu)化索引會(huì)顯示在表設(shè)計(jì)器中。153、索引的使用要利用索引查詢(xún),必須同時(shí)打開(kāi)表與索引文件。一個(gè)表可以打開(kāi)多個(gè)索引文件,同一個(gè)復(fù)合索引文件中也可能包含多個(gè)索引標(biāo)識(shí),但任何時(shí)候只有一個(gè)索引文件能起作用,在復(fù)合索引文件中也只有一個(gè)索引標(biāo)識(shí)能起作用。當(dāng)前起作用的索引文件稱(chēng)為主控索引文件,當(dāng)前起作用的索引標(biāo)識(shí)稱(chēng)為主控索引。也就是說(shuō),實(shí)現(xiàn)索引查詢(xún)必須滿足以下的條件,即:打開(kāi)表;打開(kāi)索引文件;確定主控索引文件;對(duì)于復(fù)合索引文件還須確定主控索引。16(1)打開(kāi)和關(guān)閉索引文件若當(dāng)前僅有一個(gè)索引文件被打開(kāi).它就成為主控索引文件。索引剛建立時(shí),索引文件呈打開(kāi)狀態(tài)且成為主控索引文件,若當(dāng)前已打開(kāi)了多個(gè)索引文件,可通過(guò)SETINDEX命令來(lái)確定主控索引文件。除結(jié)構(gòu)復(fù)合索引能隨著表的打開(kāi)而打開(kāi)外,其它索引文件必須用命令顯式打開(kāi)。表關(guān)閉時(shí)索引文件隨之關(guān)閉。17

命令格式:

SETINDEXTO[<索引文件名表>][ADDITIVE]

功能:打開(kāi)當(dāng)前表的一個(gè)或多個(gè)索引文件并確定主控索引文件。說(shuō)明;<索引文件表>中第一個(gè)索引文件為主控索引文件。該命令常用于打開(kāi)單索引文件。若缺省所有選項(xiàng),即僅用SETINDEXTO,將關(guān)閉當(dāng)前工作區(qū)中除結(jié)構(gòu)復(fù)合索引文件外的所有索引文件,同時(shí)取消主控索引。若缺省ADDITIVE選項(xiàng).則在用本命令打開(kāi)索引文件時(shí).除結(jié)構(gòu)復(fù)合索引文件以外的索引文件均被關(guān)閉。命令“USE<文件名>INDEX(索引文件表)”也可在打開(kāi)表的同時(shí)打開(kāi)索引文件,并確定(索引文件表)中的第一個(gè)索引文件為主控索引文件。18(2)確定主控索引復(fù)合索引文件中當(dāng)前建立的索引標(biāo)識(shí)自動(dòng)成為主控索引,表重新打開(kāi)時(shí)盡管復(fù)合索引文件已自動(dòng)打開(kāi),還須確定主控索引。下面的命令用來(lái)確定主控索引,也能確定主控索引文件。命令格式:SETORDERTO[<數(shù)值表達(dá)式>|<單索引文件名>|[TAG]<索引標(biāo)示>[OF<復(fù)合索引文件名>][ASCENDING|DESCENDING]](★★)系統(tǒng)先為各單索引文件編號(hào),故結(jié)構(gòu)復(fù)合索引文件的序號(hào)比單索引文件大。<單索引文件名>指定該單索引文件為主控索引文件。<索引標(biāo)識(shí)>指定該索引標(biāo)識(shí)為主控索引。SETORDERTO或SETORDERTO0命令取消主控索引文件及主控索引中記錄將按物理順序輸出。19示例:分別使用剛剛建立的索引setordertobmjgsetordertojgsetordertobmjg1SETINDEXTOmcidx20(3)刪除索引

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

b、刪除索引標(biāo)識(shí)命令格式:DELETETAG<索引標(biāo)識(shí)1>[OFCDXFileName1][,<索引標(biāo)識(shí)2>[OFCDXFileName2]]...-or-DELETETAGALL(★)

功能:刪除打開(kāi)的結(jié)構(gòu)復(fù)合索引文件的索引標(biāo)識(shí)。說(shuō)明;ALL子句用于刪除結(jié)構(gòu)復(fù)合索引文件的所有索引標(biāo)識(shí);索引標(biāo)識(shí)都被刪除,則該索引文件也已刪除。214、索引的更新(1)自動(dòng)更新當(dāng)表中的數(shù)據(jù)發(fā)生變化時(shí)(例如對(duì)它進(jìn)行插入、刪除、添加或更新操作之后)時(shí),己打開(kāi)的索引文件都會(huì)隨數(shù)據(jù)的改變自動(dòng)改變記錄的邏輯順序.實(shí)現(xiàn)索引文件的自動(dòng)更新。(2)重新索引若未確定主控索引文件或主控索引,修改表的記錄時(shí)索引文件就不會(huì)自動(dòng)更新。如果仍要維持記錄的邏輯順序,可用REINDEX命令重建索引,其命令格式為:REINDEX[COMPACT]

也可以用INDEXON命令重新建立索引。22§3.2查詢(xún)命令

查詢(xún),即按照指定條件在表中查找所需的記錄。本節(jié)將介紹兩種傳統(tǒng)的查詢(xún)方法:順序查詢(xún)和索引查詢(xún)。VFP還支持在VFP環(huán)境中直接使用SQL型的查詢(xún)命令,即SELECT—SQL命令。一、順序查詢(xún)命令順序查詢(xún)包括LOCATE和CONTINUE兩條命令。命令格式;

LOCATEFOR<條件表達(dá)式>[范圍][WHILE<條件>][NOOPTIMIZE](★★)

功能:搜索滿足<條件>的第一個(gè)記錄。若找到,記錄指針就指向該記錄;若表中無(wú)此記錄,搜索后VFP主屏幕的狀態(tài)條中將顯示“已到定位范圍末尾”。表示記錄指針指向文件末尾。23二、索引查詢(xún)命令順序查詢(xún)速度較慢,適用于記錄數(shù)較少的表。索引查詢(xún)速度很快,但其算法要求表的記錄是有序的,這就需要事先對(duì)表進(jìn)行索引或排序。

SEEK和FIND兩條命令均可用來(lái)進(jìn)行索引查詢(xún)。FIND是為了與舊版本兼容而保留的,SEEK的用法更靈活。命令格式:

SEEK<表達(dá)式>

功能:在已確定主控索引的表中按索引關(guān)鍵字搜索滿足<表達(dá)式>值的第一個(gè)記錄。若找到,記錄指針就指向該記錄;找不到該記錄則在主屏幕的狀態(tài)條中顯示“沒(méi)有找到”。24特別提示:

A、在使用LOCATE,GONTINUE,SEEK,F(xiàn)IND查詢(xún)數(shù)據(jù)時(shí),若查到,F(xiàn)OUND函數(shù)就返回.T.,否則返回.F.。

B、對(duì)于字符表達(dá)式,系統(tǒng)允許模糊查詢(xún),即只要字符表達(dá)式值與索引關(guān)鍵字值左子串相同,就認(rèn)為找到。命令“SETEXACTON/OFF”用于設(shè)置匹配環(huán)境,ON表示完全匹配,用于精確查詢(xún);OFF表示模糊匹配,系統(tǒng)默認(rèn)OFF。運(yùn)算符==和=有類(lèi)似的功能,前者表示完全匹配,后者表示模糊匹配。

25示例:

locatefor名稱(chēng)="車(chē)"

dispcont

displocatefor名稱(chēng)=="車(chē)"SETEXACTONLocatefor名稱(chēng)="車(chē)"

dispcont26§3.3多表操作及其關(guān)聯(lián)

在VFP中進(jìn)行數(shù)據(jù)管理,往往會(huì)遇到在多個(gè)表中進(jìn)行數(shù)據(jù)管理的問(wèn)題。要實(shí)現(xiàn)在多表間進(jìn)行操作,首先要實(shí)現(xiàn)多個(gè)表的同時(shí)打開(kāi)及不同表之間的數(shù)據(jù)操作實(shí)現(xiàn)聯(lián)動(dòng)。27一、多工作區(qū)的查詢(xún)

1、設(shè)備管理使用的4個(gè)表實(shí)際應(yīng)用中常需同時(shí)查詢(xún)多個(gè)表的數(shù)據(jù),以設(shè)備管理為例,其中至少應(yīng)設(shè)計(jì)四個(gè)表,除SHB.DBF(P39)與DX.DBF(P65)外,還有BMDM.DBF和增值表ZZ.DDF。

282、工作區(qū)(l)工作區(qū)號(hào)表打開(kāi)后才能進(jìn)行操作,實(shí)際上打開(kāi)表就是把它從磁盤(pán)調(diào)入內(nèi)存的某一個(gè)工作區(qū)。VFP提供了32767個(gè)工作區(qū),編號(hào)從1到32767。每個(gè)工作區(qū)只允許打開(kāi)一個(gè)表,在同一工作區(qū)打開(kāi)另一個(gè)表時(shí),以前打開(kāi)的表就會(huì)自動(dòng)關(guān)閉。反之,一個(gè)表只能在一個(gè)工作區(qū)打開(kāi),在其未關(guān)閉時(shí)若試圖在其它工作區(qū)打開(kāi)它,VFP會(huì)顯示信息框提示出錯(cuò)信息“文件正在使用”。

29(2)別名前10個(gè)工作區(qū)除使用1-10為編號(hào)外,還可依次用A-J為工作區(qū)別名。其實(shí)表也有別名,并可用命令“USE<文件名>ALIAS<別名>”來(lái)指定。例如命令“USESBALIASSEBEI”即指定SEBEI為SB.DBF的別名。若未對(duì)表指定別名,則表的主名將被默認(rèn)為別名,例如命令“USESB”表示SB.DBF的別名也是SB。30(3)選擇工作區(qū)命令格式:SELECT<工作區(qū)號(hào)>|<別名>(★★)

功能:選定某個(gè)工作區(qū),用于打開(kāi)一個(gè)表。用SELECT命令選定的工作區(qū)稱(chēng)為當(dāng)前工作區(qū),VFP默認(rèn)1號(hào)工作區(qū)。函數(shù)SELECT()能夠返回當(dāng)前工作區(qū)的區(qū)號(hào)。引用非當(dāng)前工作區(qū)表的字段:別名.字段名。命令“SELECT0”表示選定當(dāng)前尚未使用的最小號(hào)工作區(qū),該命令使用戶不必記億工作區(qū)號(hào),以后要切換到某工作區(qū),只要在SELECT命令中使用表的別名便可。注意,只有已打開(kāi)的表方可在SELECT命令中使用其別名。命令“USE<表名>IN<工作區(qū)號(hào)>|<別名>”能在指定的工作區(qū)打開(kāi)表,但不改變當(dāng)前工作區(qū),要改變工作區(qū)仍需使用SELECT命令。31示例:分別在1,2,3,4工作區(qū)中分別打開(kāi)幾個(gè)表

useshb

selec2usedx

selec

selec3usebmdmselect4usezz32二、數(shù)據(jù)工作期(不要求)數(shù)據(jù)工作期是一個(gè)用來(lái)設(shè)置數(shù)據(jù)工作環(huán)境的交互換作窗口。所設(shè)置的環(huán)境可以包括打開(kāi)的表及其索引,多個(gè)表之間的關(guān)聯(lián)等狀態(tài)。數(shù)據(jù)工作期窗口可用菜單操作方式或命令工作方式打開(kāi)和關(guān)閉。33三、視圖文件數(shù)據(jù)工作期的環(huán)境設(shè)置可以作為視圖文件保存。34(2)命令操作命令格式:

CREATEVIEWFileName

功能:為VFP的當(dāng)前數(shù)據(jù)工作環(huán)境建立一個(gè)視圖文件。2、視圖文件的打開(kāi)打開(kāi)視圖文件意味著恢復(fù)環(huán)境,相當(dāng)于重新執(zhí)行一系列先前設(shè)置的命令。35四、表的關(guān)聯(lián)

1、關(guān)聯(lián)的概念每個(gè)打開(kāi)的表都有一個(gè)記錄指針,用以指示當(dāng)前記錄。所謂關(guān)聯(lián),就是令不同工作區(qū)的記錄指針建立一種臨時(shí)的聯(lián)動(dòng)關(guān)系,使一個(gè)表的記錄指針移動(dòng)時(shí)另一個(gè)表的記錄指針能隨之移動(dòng)。其主要是在查詢(xún)多個(gè)表中的數(shù)據(jù)的時(shí)候使用。(1)關(guān)聯(lián)條件建立關(guān)聯(lián)的兩個(gè)表,總有一個(gè)是父表,一個(gè)為子表。在執(zhí)行涉及這兩個(gè)表數(shù)據(jù)的命令時(shí),父表記錄指針的移動(dòng),會(huì)使子表記錄指針自動(dòng)移到滿足關(guān)聯(lián)條件的記錄上。

關(guān)聯(lián)條件通常要求比較不同表的兩個(gè)字段表達(dá)式值是否相等,所以除要在關(guān)聯(lián)命令中指明這兩個(gè)字段表達(dá)式外,還必須先為子表的字段表達(dá)式建立索引。

36(2)多一關(guān)系按照通過(guò)不同表的兩個(gè)字段表達(dá)式值相等來(lái)實(shí)現(xiàn)關(guān)聯(lián)的原則,若出現(xiàn)父表有多條記錄對(duì)應(yīng)子表中一條記錄的情況,便稱(chēng)這種關(guān)聯(lián)為多一關(guān)系。(3)一多關(guān)系

按照同樣的實(shí)現(xiàn)關(guān)聯(lián)的原則,若出現(xiàn)父表的一條記錄對(duì)應(yīng)子表中多條記錄的情況,這種關(guān)聯(lián)稱(chēng)為一多關(guān)系。

VFP關(guān)聯(lián)不處理“多多關(guān)系”,若出現(xiàn)“多多關(guān)系”則需將其中的一個(gè)表進(jìn)行分解,然后以多一關(guān)系或一多關(guān)系處理。

37

382、用命令來(lái)建立關(guān)聯(lián)(1)建立關(guān)聯(lián)命令命令格式:

SETRELATIONTO[<表達(dá)式1>INTO<別名1>,…<表達(dá)式n>INTO<別名n>][ADDITIVE]](★★)

功能:以當(dāng)前表為父表與其它一個(gè)或多個(gè)子表建立關(guān)聯(lián)。說(shuō)明:<表達(dá)式>用來(lái)指定父表的字段表達(dá)式,其值將與子表的索引關(guān)因字值對(duì)照者是否相同。<別名>表示子表或其所在的工作區(qū)。ADDITIVE保證在建立關(guān)聯(lián)時(shí)不取消以前建立的關(guān)聯(lián)。39(2)說(shuō)明一多關(guān)系的命令命令格式:

SETSKIPTO[TableAlias1[,TableAlias2]...](★★)

功能;用在SETRELATION命令之后說(shuō)明已建關(guān)聯(lián)的性質(zhì)為一多關(guān)系。說(shuō)明:<表別名>表示在一多關(guān)系中位于多方的子表或其所在的工作區(qū)。不帶可選項(xiàng)的命令“SETSKIPTO”用于取消一多關(guān)系,但SETRELATION命令建立的多一關(guān)系的關(guān)聯(lián)仍繼續(xù)存在。40示例:411、建立shb何bmdm的關(guān)聯(lián)關(guān)系

useshbsetordertotagbm&&注意,應(yīng)已經(jīng)建立了索引

select2usebmdmsetordertotagbmselect1setrelationtoshb.部門(mén)intobmdm&&建立關(guān)聯(lián)

browfieldsshb.編號(hào),shb.名稱(chēng),bmdm.名稱(chēng)422、建立bmdm和shb

的關(guān)聯(lián)關(guān)系

usebmdmsetordertotagdmselect2useshbsetordertotagbmselect1setrelationtobmdm.代碼intoshbbrowfieldsshb.編號(hào),shb.名稱(chēng),bmdm.名稱(chēng)

setskiptoshbbrowfieldsshb.編號(hào),shb.名稱(chēng),bmdm.名稱(chēng)

注意:在設(shè)置setskipto(建立一對(duì)多關(guān)系前后顯示內(nèi)容的不同)43§3.4統(tǒng)計(jì)命令

一、計(jì)數(shù)命令命令格式:COUNT[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量名>]

功能:計(jì)算指定范圍內(nèi)滿足條件的記錄數(shù)。(1)通常記錄數(shù)顯示在主窗口的狀態(tài)條中.使用to子句還能將記錄數(shù)保存到<內(nèi)存變量>中,便于以后引用。(2)缺省范圍是表的所有記錄。44二、求和命令命令格式

SUM[(數(shù)值表達(dá)式表)][<范圍)][FOR(條件1>][WHILE<條件2)][T0(內(nèi)存變量表>\ARRAY<數(shù)組>]

功能:在打開(kāi)的表中,對(duì)<數(shù)值表達(dá)式表>的各個(gè)表達(dá)式分別求和。(1)<數(shù)值表達(dá)式表>中各表達(dá)式的和數(shù)可依次存入<內(nèi)存變量表>或數(shù)組表達(dá)式表,則對(duì)當(dāng)前表所有的數(shù)值表達(dá)式分別求和。(2)缺省<范圍>指表中所有記錄。45三、求平均值命令命令格式:

AVERAGE[<數(shù)值表達(dá)式表>][<范圍>][FOR<條件1>][WHHILE<條件2>][T0<內(nèi)存變量表>|ARRAY<數(shù)組>]

功能:在打開(kāi)的表中,對(duì)<數(shù)值表達(dá)式表>中的各個(gè)表達(dá)式分別求平均值。

46四、計(jì)算命令

CALCULATE命令用于對(duì)表中的字段進(jìn)行財(cái)經(jīng)統(tǒng)計(jì),其計(jì)算主要由函數(shù)來(lái)完成。命令格式:

CALCULATE<表達(dá)式表>[<范圍>][FOR<條件1>][WHHILE<條件2>][T0<內(nèi)存變量表>|ARRAY<數(shù)組>]

功能:在打開(kāi)的表中,分別計(jì)算<表達(dá)式表>的表達(dá)式。注意:表達(dá)式中至少須包含系統(tǒng)規(guī)定的8個(gè)函數(shù)之一。其中常用的函數(shù)有AVG(<數(shù)值表達(dá)式>)、CNT()、MAX(<表達(dá)式>)、MIN(<表達(dá)式>)、SUM(<數(shù)值表達(dá)式>)等5個(gè)。這5個(gè)函數(shù)的功能與表3.4所列一致,僅計(jì)算記錄數(shù)函數(shù)CNT()的格式與表3.4的COUNT不一樣。另3個(gè)函數(shù)為NPV,STD和VAR。47五、匯總命令匯總命令可對(duì)數(shù)據(jù)進(jìn)行分類(lèi)合計(jì)。例如工資計(jì)算系統(tǒng)中可能要按部門(mén)匯總工資,庫(kù)存管理系統(tǒng)中可能要按車(chē)間匯總零件金額等。命令格式:

TOTALTO<文件名>ON<關(guān)鍵字>[FIELDS<數(shù)值型字段表>][<范圍>][FOR<條件1>][WHILE<條件2>]

功能;在當(dāng)前表中,分別對(duì)<關(guān)鍵字>值相同的記錄的數(shù)值型字段值求和,并將結(jié)果存入一個(gè)新表。一組關(guān)鍵字值相同的記錄在新表中產(chǎn)生一個(gè)記錄;對(duì)于非數(shù)值型字段.只將關(guān)鍵字值相同的第一個(gè)記錄的字段值放入該記錄。說(shuō)明:(1)<關(guān)鍵字>指排序字段或索引關(guān)鍵字,即當(dāng)前表必須是有序的,否則不能匯總。(2)FIELDS子句的<數(shù)值型字段表>指出要匯總的字段。若缺省,則對(duì)表中所有數(shù)值型字段匯總。(3)缺省<范圍>指表中所有記錄。48§3.5SELECT—SQL查詢(xún)SELECT-SQL是從SQL語(yǔ)言移植過(guò)來(lái)的查詢(xún)命令,具有強(qiáng)大的單表與多表查詢(xún)功能。VFP支持在命令窗口直接使用SELECT-SQL命令,也允許通過(guò)一種稱(chēng)為“查詢(xún)?cè)O(shè)計(jì)器”的窗口來(lái)設(shè)計(jì)查詢(xún)步驟、生成查詢(xún)文件,然后運(yùn)行定制的查詢(xún)。VFP還允許將查詢(xún)結(jié)果以圖形的形式輸出。49SQL功能命令動(dòng)詞數(shù)據(jù)查詢(xún)SELECT數(shù)據(jù)定義CREATE,DROP,ALTER數(shù)據(jù)操縱INSERT,UPDATE,DELETE數(shù)據(jù)控制GRANT,REVOKE50一、用SELECT—SQL命令直接查詢(xún)

1、SELECT—SQL的命令格式命令格式:(★★★)SELECT[ALL|DISTINCT][<別名>.]<Select表達(dá)式[AS<別名>][,<別名>.]<Select表達(dá)式>[AS<別名>...]FROM[FORCE][<數(shù)據(jù)庫(kù)名>!]<表名>[[AS]<本地名>][[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOIN<數(shù)據(jù)庫(kù)名>!]<表名>[[AS]<本地名>][ON<聯(lián)接條件>…][[INTO<目標(biāo)>]|[TOFILE<文件名>[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]][PREFERENCE<名字>][NOCONSOLE][PLAIN][NOWAIT]51[WHERE<聯(lián)接條件>[AND<聯(lián)接條件>...][AND|OR<篩選條件>[AND|OR<篩選條件>...]]][GROUPBY<組表達(dá)式>[,<組表達(dá)式>...]][HAVING<篩選條件>][UNION[ALL]<SELECT命令>][ORDERBY<關(guān)鍵字表達(dá)式>[ASC|DESC][,<關(guān)鍵字表達(dá)式>[ASC|DESC]...]][TOP<數(shù)值表達(dá)式>[PERCENT]]52說(shuō)明:(1)SELECT子句;ALL表示選出的記錄中包括重復(fù)記錄,這是缺省值;DISTINCT則表示選出的記錄中不包括重復(fù)記錄。

[<別名>.]<SELECT表達(dá)式>[As<列名>]:<SELECT表達(dá)式>可以是字段名,也可以包含用戶自定義函數(shù)和如表3.3所示的系統(tǒng)函數(shù)(主要有:AVG、COUNT、MIN、MAX、SUM等)。<別名>是字段所在的表名,<列名>用于指定輸出時(shí)使用的列標(biāo)題,可以不同于字段名。當(dāng)SELECT表達(dá)式中包含上述函數(shù)時(shí),輸出行數(shù)不一定與表的記錄數(shù)相同。

SCLECT表達(dá)式可用一個(gè)*號(hào)來(lái)表示,此時(shí)指定所有的字段53

(2)FROM子句及其選項(xiàng):用于指定查詢(xún)的表與聯(lián)接類(lèi)型。選擇工作區(qū)與打開(kāi)<表名>所指的表均由VFP自行安排。對(duì)于非當(dāng)前數(shù)據(jù)庫(kù),用“<數(shù)據(jù)庫(kù)名>!<表名>”來(lái)指定該數(shù)據(jù)庫(kù)中的表。<本地名>是表的暫用名,取了本地名后,本命令中該表只可使用這個(gè)名字。

JOIN關(guān)鍵字:用于聯(lián)接其左右兩個(gè)<表名>所指的表。

INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]選項(xiàng):指定兩表聯(lián)接時(shí)的聯(lián)接類(lèi)型,聯(lián)接類(lèi)型有4種。其中的OUTER選項(xiàng)表示外部聯(lián)接,既允許滿足聯(lián)接條件的記錄,又允許不滿足聯(lián)接條件的記錄。若省略O(shè)UTER選項(xiàng),效果不變。

ON子句:用于指定聯(lián)接條件。

FORCE子句:嚴(yán)格按指定的聯(lián)接條件來(lái)聯(lián)接表,避免VFP因進(jìn)行聯(lián)接優(yōu)化而降低查詢(xún)速度。54

(3)INTO與TO子句:用于指定查詢(xún)結(jié)果的輸出去向,默認(rèn)查詢(xún)結(jié)果顯示在瀏覽窗口中。

INTO子句中的<目標(biāo)>可以有3種選項(xiàng),其分別為ARRAY(數(shù)組)、CURSOR(臨時(shí)表名)、DBF(數(shù)據(jù)表)。

TOFILE子句的<文件名>表示輸出到指定的文本文件,并取代原文件內(nèi)容。ADDITIVE表示只添加新數(shù)據(jù),不清除原文件的內(nèi)容。

TOPRINTER表示輸出到打印機(jī),PROMPT表示打印前先顯示打印確認(rèn)框。

TOSCREEN表示輸出到屏幕。

55

(4)PREFERENCE子句:用于記載瀏覽窗口的配置參數(shù),再次使用該子句時(shí)可以用<名字>引用此配置。(5)NOCONSOLE子句:禁止將輸出內(nèi)容輸出到屏幕,若指定過(guò)INTO的設(shè)置則忽略此句。(6)PLAIN子句:輸出時(shí)省略字段名。(7)NOWAIT子句:顯示瀏覽窗口以后程序繼續(xù)向下執(zhí)行。

56

(8)WHERE子句:若已用ON子句指定聯(lián)接條件,該子句只能指定篩選條件,表示在已按聯(lián)接條件產(chǎn)生的記錄中篩選記錄。也可以省去JOIN子句,一次性的在WHERE子句中指定聯(lián)接條件和篩選條件。(9)GROUPBY子句:對(duì)記錄按<表達(dá)式>值進(jìn)行分組,常用于分組統(tǒng)計(jì)。(10)HAVING子句:當(dāng)含有GROUPBY子句時(shí),該子句可用作記錄查詢(xún)的限制條件;沒(méi)有GROUPBY子句時(shí),該子句的作用與WHERE相同。

57

(11)UNION子句:使用該子句可以在一個(gè)SELECT-SQL語(yǔ)句中嵌套另一個(gè)SELECT-SQL語(yǔ)句,使兩個(gè)語(yǔ)句的查詢(xún)結(jié)果合并輸出。(12)ORDERBY子句:指定查詢(xún)結(jié)果中按<表達(dá)式>排序。(13)TOP子句:在符合查詢(xún)條件的所有記錄中,選取指定數(shù)量或百分比的記錄。TOP子句必須與GROUPBY子句同時(shí)使用。ORDERBY子句指定查詢(xún)結(jié)果中包含的列上由TOP子句決定的行數(shù).TOP子句根據(jù)此排序選定最開(kāi)始的“<數(shù)值表達(dá)式>的值個(gè)”或“<數(shù)值表達(dá)式>的值%”的記錄。582、SELECT-SQL使用示例:

(1)查詢(xún)所有設(shè)備的名稱(chēng)

SELECT名稱(chēng)FROMSHB&&顯示重復(fù)記錄

SELECTDISTINCT名稱(chēng)FROMSHB&&不顯示重復(fù)記錄

(2)查詢(xún)所有字段記錄

SELECT*FROMSHB

(3)顯示所有設(shè)備的平均價(jià)格

SELECTAVG(價(jià)格)FROMSHB&&結(jié)果以記錄的形式顯示在臨時(shí)表

SELECTAVG(價(jià)格)AS平均價(jià)格FROMSHB&&列標(biāo)題改變

59

(4)將查詢(xún)結(jié)果保存在數(shù)組中(首先應(yīng)定義數(shù)組,如DIMEa(1))

SELECTAVG(價(jià)格)FROMSHBINTOARRAYaSELECT*FROMSHBINTOARRAYa

(注意:此處設(shè)定的數(shù)組大小任意,系統(tǒng)會(huì)依據(jù)數(shù)據(jù)表的內(nèi)容擴(kuò)展數(shù)組大小,使用listmemorylikea

可查看數(shù)組情況)60

(5)查詢(xún)價(jià)格低于20000的設(shè)備名稱(chēng)、起用日期與部門(mén),并按照起用日期升序排列

SELECT名稱(chēng),起用日期,部門(mén)FROMshbWHERE價(jià)格<20000ORDERBY起用日期ASC

(6)查詢(xún)每個(gè)部門(mén)所屬設(shè)備的總價(jià)格

SELECTSUM(價(jià)格),部門(mén)FROMshbGROUPBY部門(mén)

(7)查詢(xún)部門(mén)編號(hào)中帶1的部門(mén)所屬設(shè)備的總價(jià)格SELECTSUM(價(jià)格),部門(mén)FROMshbGROUPBY部門(mén)HAVING“1”$部門(mén)

(8)查詢(xún)價(jià)格最高、最低的設(shè)備前3個(gè)

SELECTTOP3編號(hào),價(jià)格FROMSHBORDERBY價(jià)格DESCSELECTTOP3編號(hào),價(jià)格FROMSHBORDERBY價(jià)格

61

(9)聯(lián)接實(shí)現(xiàn)多表查詢(xún)

a、查詢(xún)大修過(guò)的設(shè)備的編號(hào)、名稱(chēng)及所屬部門(mén)名稱(chēng)

SELECTdx.編號(hào),shb.名稱(chēng),bmdm.名稱(chēng)AS部門(mén)名稱(chēng)FROM;

SHB,dx,bmdmWHERE(dx.編號(hào)=shb.編號(hào)).AND.;(bmdm.代碼=shb.部門(mén))b、查詢(xún)編號(hào)前3位小于038的設(shè)備名稱(chēng)及大修費(fèi)用合計(jì),按照大修合計(jì)的費(fèi)用降序排列

SELECTshb.名稱(chēng),SUM(dx.費(fèi)用)FROMshb,dx;WHERE(shb.編號(hào)=dx.編號(hào)).AND.LEFT(shb.編號(hào),3)<"038"GROUPBYdx.編號(hào)ORDERBY2DESC

注意:此處由于排序的條件SUM(價(jià)格)不能直接使用,此處的2是指排序以查詢(xún)結(jié)果中的第二列作為依據(jù)。否則會(huì)提示“SQL:找不到列”623、聯(lián)接方式(T3.5)聯(lián)接可以實(shí)現(xiàn)兩個(gè)表的聯(lián)接,即在一個(gè)查詢(xún)涉及兩個(gè)以上表時(shí),將其按照一定條件聯(lián)系在一起進(jìn)行操作。VFP的SQL可以使用多種類(lèi)型的聯(lián)接形式,示例63SELECTa1.d1,a2.d2FROMa1INNERJOINa2ONa1.d1=a2.d2SELECTa1.d1,a2.d2FROMa1LEFTJOINa2ONa1.d1=a2.d2SELECTa1.d1,a2.d2FROMa1RIGHTJOINa2ONa1.d1=a2.d2SELECTa1.d1,a2.d2FROMa1FULLJOINa2ONa1.d1=a2.d264二、查詢(xún)?cè)O(shè)計(jì)器用戶可通過(guò)VFP提供的查詢(xún)?cè)O(shè)計(jì)器來(lái)進(jìn)行數(shù)據(jù)查詢(xún)。查詢(xún)?cè)O(shè)計(jì)器產(chǎn)生的查詢(xún)結(jié)果除可當(dāng)場(chǎng)瀏覽外,還有多種輸出方式。查詢(xún)?cè)O(shè)置也可以保存在文件中,供以后打開(kāi)查詢(xún)?cè)O(shè)計(jì)據(jù)使用或修改。

1、查詢(xún)?cè)O(shè)計(jì)器的操作步驟

“打開(kāi)查詢(xún)?cè)O(shè)計(jì)器”-“進(jìn)行查詢(xún)?cè)O(shè)置”(即設(shè)置被查詢(xún)的表、聯(lián)接條件、字段等輸出要求和查詢(xún)結(jié)果的去向)-執(zhí)行查詢(xún)-保存查詢(xún)?cè)O(shè)置。

2、查詢(xún)?cè)O(shè)計(jì)器的組成上部窗格下部窗格查詢(xún)菜單65三、查詢(xún)結(jié)果的圖形化處理在VFP中允許將查詢(xún)結(jié)果以圖形化的方式輸出,使用圖形化輸出方式應(yīng)注意以下問(wèn)題:(1)_gengraph:_gengraph為一系統(tǒng)變量,用于給定圖形向?qū)谖恢?。?)要輸出圖形必須選定兩個(gè)以上字段,其中至少有一個(gè)為數(shù)值字段。(3)輸出結(jié)果保存到表單文件中,以后可以調(diào)用。66§3.6數(shù)據(jù)庫(kù)與視圖一、數(shù)據(jù)庫(kù)

1、數(shù)據(jù)庫(kù)的基本概念當(dāng)數(shù)據(jù)結(jié)構(gòu)較為簡(jiǎn)單時(shí),如為個(gè)人保存一個(gè)親友通信錄,建一個(gè)自由表就可以了。它通常單獨(dú)使用,與其它表的數(shù)據(jù)沒(méi)有多少聯(lián)系。但數(shù)據(jù)結(jié)構(gòu)比較復(fù)雜,如果為工廠開(kāi)發(fā)一個(gè)人事管理系統(tǒng),一個(gè)表很可能不夠了,需要建立多個(gè)表。以前的例子中多次提到過(guò)的SHB.DBF,BMDM.DBF,ZZ.DBF等表就是例子,各表中包含的數(shù)據(jù)相互具有這樣那樣的聯(lián)系。

6768

若把它們集中到一個(gè)數(shù)據(jù)庫(kù)中,并且在各表之間建立若于固定的關(guān)系(關(guān)聯(lián)),管理與使用就更加方便了。這類(lèi)從屬某一數(shù)據(jù)庫(kù)的表統(tǒng)稱(chēng)為數(shù)據(jù)庫(kù)表(簡(jiǎn)稱(chēng)庫(kù)表)。一個(gè)較大的應(yīng)用項(xiàng)目可以創(chuàng)建若干個(gè)數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)庫(kù)可定義一組數(shù)據(jù)庫(kù)表,然后用一定的關(guān)系將它們相互聯(lián)接。692、用數(shù)據(jù)庫(kù)設(shè)計(jì)器設(shè)計(jì)數(shù)據(jù)庫(kù)(1)數(shù)據(jù)庫(kù)設(shè)計(jì)器數(shù)據(jù)庫(kù)設(shè)計(jì)器是VFP提供的一種輔助設(shè)計(jì)窗口,它能顯示當(dāng)前數(shù)據(jù)庫(kù)全部的表、視圖相關(guān)系,并讓用戶操作這些對(duì)象。當(dāng)數(shù)據(jù)庫(kù)設(shè)計(jì)器窗口激活時(shí),格伴隨出現(xiàn)“數(shù)據(jù)庫(kù)”菜單和‘‘?dāng)?shù)據(jù)庫(kù)設(shè)計(jì)器’’工具欄。若用命令來(lái)打開(kāi)數(shù)據(jù)庫(kù)表.則不需打開(kāi)數(shù)據(jù)庫(kù)設(shè)計(jì)器,也不需了解數(shù)據(jù)庫(kù)是否打開(kāi)。70

(2)數(shù)據(jù)庫(kù)的創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建可以通過(guò)菜單命令或CREATEDATABSE<文件名>來(lái)進(jìn)行。(★)(3)數(shù)據(jù)庫(kù)的關(guān)閉與刪除

CLOSEDATABASEALL:關(guān)閉所有的數(shù)據(jù)庫(kù)。

DELETEDATABASE<數(shù)據(jù)庫(kù)名>[DELETETABLES]:當(dāng)包含DELETETABLES子句時(shí)刪除<數(shù)據(jù)庫(kù)名>表示的數(shù)據(jù)庫(kù)及其中的表,否則僅刪除數(shù)據(jù)庫(kù),并將它的表變?yōu)樽杂杀怼?yīng)該注意,若要?jiǎng)h除數(shù)據(jù)庫(kù)必須先關(guān)閉它。

REMOVETABLES;從數(shù)據(jù)庫(kù)中移去表,被移去的表變?yōu)樽杂杀怼?1

(4)數(shù)據(jù)庫(kù)文件數(shù)據(jù)庫(kù)創(chuàng)建后將保存在擴(kuò)展名為.DBC數(shù)據(jù)庫(kù)文件中。該文件本身也是一個(gè)表,其中記載了它的所有表的參數(shù),及索引、關(guān)聯(lián)等有關(guān)參數(shù)。可以使用USE命令將其打開(kāi)。如:use數(shù)據(jù)1.dbc就可以打開(kāi)名字為數(shù)據(jù)1的數(shù)據(jù)庫(kù)文件72二、數(shù)據(jù)字典

數(shù)據(jù)詞典用于保存對(duì)數(shù)據(jù)庫(kù)中各種數(shù)據(jù)的定義或設(shè)置信息,包括表的屬性、字段屬性、記錄規(guī)則、表間關(guān)系,以及參照完整性(ReferentialIntegrity,簡(jiǎn)稱(chēng)RI)等。這些屬性或信息均可通過(guò)數(shù)據(jù)庫(kù)設(shè)計(jì)器來(lái)設(shè)置、顯示或修改,并且由系統(tǒng)保存在數(shù)據(jù)詞典中。直到相關(guān)的表從數(shù)據(jù)庫(kù)中移去為止。需要指出。當(dāng)設(shè)計(jì)自由表時(shí),表設(shè)計(jì)器也用來(lái)設(shè)置字段、索引和表的各種屬性。但若所設(shè)計(jì)的是數(shù)據(jù)庫(kù)表,其設(shè)置起來(lái)的內(nèi)容比起自由表來(lái)將豐富得多。73741、長(zhǎng)名(表名/字段名)與注釋為了方便書(shū)寫(xiě),表和字段通常使用較短的名稱(chēng)(VFP規(guī)定字段名最長(zhǎng)不超過(guò)10個(gè)字符)。同時(shí),VFP允在數(shù)據(jù)字典中為表/字段設(shè)置不超過(guò)128個(gè)字符的長(zhǎng)名,以及對(duì)表/字段增加適當(dāng)?shù)淖⑨尅?/p>

長(zhǎng)表名/長(zhǎng)宇段名一般能在瀏覽窗口或各種設(shè)計(jì)器(例如數(shù)據(jù)庫(kù)設(shè)計(jì)器、查詢(xún)?cè)O(shè)計(jì)器和即將介紹的視圖設(shè)計(jì)器)的標(biāo)題欄內(nèi)顯示,而注釋則通常出現(xiàn)在項(xiàng)目管理器中。例如當(dāng)用戶打開(kāi)項(xiàng)目管理器,從中選定一個(gè)表或從表的字段列表框中選定了一個(gè)字段后,在項(xiàng)目管理器的底部就會(huì)出現(xiàn)事先巳在數(shù)據(jù)詞典中設(shè)置的注釋?zhuān)褂脩魠㈤?。注意,?shù)據(jù)庫(kù)表僅在創(chuàng)建時(shí)可采用長(zhǎng)表名。752、設(shè)置字段屬性(1)格式指定表達(dá)式,使得在“瀏覽”窗口、表單或報(bào)表中,確定字段顯示時(shí)的大小寫(xiě)、字體大小和樣式。(2)輸入掩碼顯示區(qū)的輸入掩碼文本框用于鍵入輸入掩碼,借以指定字段的輸入格式,限制輸入數(shù)據(jù)的范圍,控制輸入的正確性。輸入掩碼可以是以下字符:

X允許輸入字符

9允許輸入數(shù)字

#允許的入數(shù)字.空格.十,一

$顯示SETCURRENCY命令指出的貨幣號(hào)*在指定寬度中,值左顯示星號(hào)

.指出小數(shù)點(diǎn)位置,用逗號(hào)分隔小數(shù)點(diǎn)左的數(shù)字與格式文本框不同,輸入掩碼必須按位來(lái)指定格式。76

(3)標(biāo)題顯示區(qū)的標(biāo)題文本框用于為瀏覽窗口、表單或報(bào)表中的字段標(biāo)簽鍵入表達(dá)式。例如在圖3.32所示的標(biāo)題文本框鍵入了設(shè)備編號(hào)字佯,所以在瀏覽窗口中,編號(hào)字段的列標(biāo)題也將顯示為設(shè)備編號(hào)。(4)字段驗(yàn)證字段驗(yàn)證區(qū)包含3個(gè)文本框,各文本框均可直接鍵入數(shù)據(jù)鈕顯示出表達(dá)式生成器對(duì)話框,在其中進(jìn)行設(shè)置。也可通過(guò)其右邊的對(duì)話按規(guī)則則文本框用于輸入對(duì)字段數(shù)據(jù)有效性進(jìn)行檢查的規(guī)則、它實(shí)際上是一個(gè)條件。信息文本框用于指定出錯(cuò)提示信息,當(dāng)該字段輔人的數(shù)據(jù)違反條件時(shí),出錯(cuò)信息將照此顯示。默認(rèn)值文本框用于指定字段的默認(rèn)值。當(dāng)增加記錄時(shí),字段默認(rèn)值會(huì)在新記錄中顯示出來(lái),從而提高輸入速度。773、設(shè)置記錄規(guī)則(1)記錄驗(yàn)證記錄級(jí)有效性檢查規(guī)則用來(lái)檢查同一記錄中不同字段之間的邏輯關(guān)系。規(guī)則文本框:用于指定記錄級(jí)有效性檢查規(guī)則,光標(biāo)離開(kāi)當(dāng)前記錄時(shí)進(jìn)行校驗(yàn)。信息文本框:用于指定出錯(cuò)提示信息。在校驗(yàn)記錄級(jí)有效性規(guī)則時(shí),發(fā)現(xiàn)輸入與規(guī)則不符時(shí)該信息將會(huì)顯示出來(lái)。78(2)觸發(fā)器表選項(xiàng)卡中的3個(gè)觸發(fā)器,分別用于指定記錄插入、更新、刪除的規(guī)則。插入觸發(fā)器:用于指定一個(gè)規(guī)則,每次向表中插入或追加記錄時(shí)該規(guī)則被觸發(fā)檢查插入的記錄是否滿足規(guī)則。更新觸發(fā)器:用于指定一個(gè)規(guī)則,每次更新記錄時(shí)觸發(fā)該規(guī)則。刪除觸發(fā)器:用于指定一個(gè)規(guī)則,每次向表中刪除記錄(打上刪除標(biāo)記)時(shí)觸發(fā)該規(guī)則。794、主索引和永久關(guān)系(1)主索引在建立索引時(shí),若打開(kāi)的是數(shù)據(jù)庫(kù)表,組合框中將列出包括主索引在內(nèi)的4種索引類(lèi)型。主索引的作用有兩個(gè):一是主索引不允許出現(xiàn)重復(fù)值.發(fā)現(xiàn)重復(fù)值會(huì)禁止存盤(pán),故可用作主關(guān)鍵字。二是主索引可用于建立永久關(guān)系,從而建立參照完整性。建立主索引的方法參見(jiàn)索引部分。(2)永久關(guān)系與臨時(shí)關(guān)系永久關(guān)系是數(shù)據(jù)庫(kù)表之間的關(guān)系,在數(shù)據(jù)庫(kù)設(shè)計(jì)器中表現(xiàn)為表索引之間的連線。連線的一端為一根,另一端為三根,分別代表一多關(guān)系的一端與多端。永久關(guān)系建立后存儲(chǔ)在數(shù)據(jù)庫(kù)文件(DBC)中,只要不作刪除或變更就一直保留。永久關(guān)系在查詢(xún)和視圖中能自動(dòng)成為聯(lián)接條件;能作為表單和報(bào)表的默認(rèn)關(guān)系,并顯示在數(shù)據(jù)環(huán)境設(shè)計(jì)器中,允許建立參照完整性。

80

與永久關(guān)系相區(qū)別,以前建立的關(guān)系可稱(chēng)為臨時(shí)關(guān)系。臨時(shí)關(guān)系僅用于關(guān)聯(lián),即控制關(guān)聯(lián)表的記錄指針有序移動(dòng),永久關(guān)系在查詢(xún)和視圖中則起聯(lián)接作用。利用數(shù)據(jù)庫(kù)設(shè)計(jì)器來(lái)建立永久關(guān)系.只要在數(shù)據(jù)庫(kù)表間進(jìn)行連線,而刪除永久關(guān)系也只需去掉連線。連線規(guī)則為:在數(shù)據(jù)庫(kù)設(shè)計(jì)器中,從一個(gè)表的主索引或候選索引拖到另一表的任一索引(即出現(xiàn)表間連線)。815、參照完整性上文已介紹過(guò)數(shù)據(jù)庫(kù)表的字段級(jí)和記錄級(jí)驗(yàn)證規(guī)則,參照完整性則屬子表間規(guī)則,對(duì)于永久關(guān)系的相關(guān)表,在更新、插入或刪除記錄時(shí)如果只改其一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論