第4章表與數(shù)據(jù)庫(kù)_第1頁(yè)
第4章表與數(shù)據(jù)庫(kù)_第2頁(yè)
第4章表與數(shù)據(jù)庫(kù)_第3頁(yè)
第4章表與數(shù)據(jù)庫(kù)_第4頁(yè)
第4章表與數(shù)據(jù)庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩72頁(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)介

第4章表與數(shù)據(jù)庫(kù)本章主要講述數(shù)據(jù)表和數(shù)據(jù)庫(kù)的建立、修改、編輯、瀏覽、復(fù)制、索引的方法及其相關(guān)命令用法,另外還介紹了表間關(guān)系,數(shù)據(jù)庫(kù)與數(shù)據(jù)表的關(guān)系及其設(shè)置等概念。在學(xué)習(xí)這些概念和相關(guān)命令的使用方法中,唯有通過(guò)自己操作實(shí)例才能更為有效地理解與掌握。2表與數(shù)據(jù)庫(kù)主要內(nèi)容4.1表結(jié)構(gòu)的建立、修改與輸出4.2表記錄的錄入、編輯與顯示4.3表記錄索引4.4多表操作4.5數(shù)據(jù)庫(kù)4.6數(shù)據(jù)庫(kù)表的特有設(shè)置34.1表結(jié)構(gòu)VisualFoxPro數(shù)據(jù)表分為數(shù)據(jù)庫(kù)表和自由表兩種,在此先講述自由表的建立,有關(guān)數(shù)據(jù)庫(kù)表在4.5數(shù)據(jù)庫(kù)一節(jié)中再做介紹。4.1.1二維表與數(shù)據(jù)表學(xué)生信息表4-1是常見(jiàn)的簡(jiǎn)單二維表,利用VisualFoxPro的關(guān)系數(shù)據(jù)模型,能夠?qū)⑦@種二維表作為數(shù)據(jù)表文件存入計(jì)算機(jī)。通過(guò)分析學(xué)生信息表4-1的數(shù)據(jù)可為該表設(shè)計(jì)結(jié)構(gòu)如表4-3所示。45學(xué)號(hào)姓名性別生日班級(jí)黨員否入學(xué)成績(jī)照片備注20090090張婷女1991-10-1009078否51120090091肖萌女1991-2-2209078否53320090092李銘男1990-12-1209078否57720090093張力男1990-1-1109078否.62220090120朋蓬男1991-5-509101是55020090121李園女1991-1-109101否58820090122胡虎男1991-7-1709101否52220090370劉冬女1990-11-1109123是63320090371嚴(yán)巖男1991-3-1309123否55520090372王平男1990-6-1609123否5446字段名類型寬度小數(shù)位數(shù)學(xué)號(hào)字符8姓名字符8性別字符2生日日期8班級(jí)字符5黨員否邏輯1入學(xué)成績(jī)整型4照片通用型4備注備注型4字段類型與寬度字段類型與寬度詳見(jiàn)書中表4-2

說(shuō)明:(1)字段名。字段名的命名必須以漢字或字母開(kāi)頭,自由表的字段名長(zhǎng)度不超過(guò)10個(gè)字節(jié),可以是字母、漢字、數(shù)字下劃線組成的序列。一個(gè)漢字占有2個(gè)字節(jié)寬度。(2)類型與寬度。字段的類型與其寬度相關(guān),不同類型的字段其寬度有所不同,寬度以字節(jié)為單位。對(duì)于字符型、數(shù)值型、浮點(diǎn)型3種字段要根據(jù)實(shí)際需要合理選擇寬度,其它類型字段寬度均由VisualFoxPro統(tǒng)一規(guī)定(系統(tǒng)默認(rèn)值)。例如,日期型寬度為8字節(jié),邏輯型為1字節(jié),而備注型與通用型為4字節(jié)(僅僅表示數(shù)據(jù)在.FPT文件中的位置)。(3)小數(shù)位數(shù)。只有數(shù)值型、浮點(diǎn)型、雙精度型才需要設(shè)置小數(shù)位數(shù)。小數(shù)點(diǎn)與正負(fù)號(hào)都要在字段寬度中占一位。例如,若需要7位整數(shù),2位小數(shù),則數(shù)據(jù)寬度就要選擇10個(gè)字節(jié)。74.1.2創(chuàng)建表結(jié)構(gòu)數(shù)據(jù)表結(jié)構(gòu)的建立方法有兩種,一種是在表設(shè)計(jì)器中,以交互方式建立,另一種是通過(guò)執(zhí)行命令來(lái)建立。1.使用命令打開(kāi)表設(shè)計(jì)器建立表結(jié)構(gòu)命令格式:CREATE[<表文件名>|?]命令功能:當(dāng)有選項(xiàng)<表文件名>時(shí),按指定表文件名建立數(shù)據(jù)表。若無(wú)或選“?”,則從文件夾選擇對(duì)話框中指定建立表文件所在的路徑與文件名。2.使用菜單打開(kāi)表設(shè)計(jì)器建立表結(jié)構(gòu)例4-1創(chuàng)建學(xué)生表xs.dbf。84.1.3修改表結(jié)構(gòu)1.打開(kāi)表文件(1)菜單方式(2)命令方式命令格式:USE[<表文件名>|?]命令功能:①USE<表文件名>,打開(kāi)指定的表文件。②USE?,進(jìn)入文件夾對(duì)話框選擇需要打開(kāi)的表文件。③USE,關(guān)閉當(dāng)前打開(kāi)的表文件。92.修改表結(jié)構(gòu)(1)菜單方式(2)命令方式命令格式:MODIFYSTRUCTURE命令功能:若數(shù)據(jù)表已經(jīng)打開(kāi),直接進(jìn)入表設(shè)計(jì)器。否則通過(guò)【打開(kāi)】對(duì)話框指定要打開(kāi)的表文件后,再進(jìn)入表設(shè)計(jì)器。例4-2修改xs.dbf中的“生日”字段名為“出生日期”。USExsMODIFYSTRUCTURE104.1.4輸出表結(jié)構(gòu)如果需要顯示、打印表的結(jié)構(gòu)信息,可以使用以下命令:命令格式:LIST|DISPLAYSTRUCTURE[TOPRINT]功能說(shuō)明:顯示或打印當(dāng)前表的結(jié)構(gòu)信息。例4-3顯示并打印表xs.dbf的結(jié)構(gòu)信息。114.2表記錄4.2.1輸入記錄1.輸入記錄要點(diǎn)2.輸入記錄示例4.2.2顯示記錄通常用來(lái)顯示表信息的命令有DISPLAY、LIST和BROWSE。1213(1)LIST命令命令格式:LIST[[FIELDS]<字段名列表>][<范圍>][FOR<條件1>][WHILE<條件2>]

[OFF][TOPRINT]命令功能:列表顯示當(dāng)前表指定范圍內(nèi)滿足條件記錄的指定字段值。(2)DISPLAY命令命令格式:DISPLAY[[FIELDS]<字段名列表>][<范圍>][FOR<條件1>][WHILE<條件2>]

[OFF][TOPRINT]命令功能:分頁(yè)顯示當(dāng)前表指定范圍內(nèi)滿足條件記錄的指定字段值。LIST和DISPLAY命令從功能上講非常相似,在使用上有以下幾點(diǎn)需要說(shuō)明:①<范圍>省略的時(shí)候,LIST默認(rèn)為ALL,DISPLAY默認(rèn)為當(dāng)前記錄。②OFF子句表示不顯示記錄號(hào)③TOPRINT子句表示送打印機(jī)輸出,省略的時(shí)候,僅在主窗口顯示記錄。④<字段名列表>省略的時(shí)候,表示除備注型和通用型之外的所有字段。14(3)BROWSE命令命令簡(jiǎn)單格式:BROWSE[FIELDS<字段名列表>][FOR<條件1>][WHILE<條件2>]

[NOAPPEND][NODELETE][NOEDIT|NOMODIFY]

[FREEZE<字段名>][LOCK<N型表達(dá)式>]命令功能:在瀏覽窗口中顯示當(dāng)前表滿足條件記錄的指定字段值。15說(shuō)明:①NOAPPEND子句:不容許追加記錄。②NODELETE子句:不容許邏輯刪除記錄。③NOEDIT|NOMODIFY子句:不容許修改記錄。④FREEZE<字段名>:僅列出的那一個(gè)字段容許修改,其余字段只讀。⑤LOCK<N型表達(dá)式>:把左邊的n列鎖定在瀏覽窗口(n表示N型表達(dá)式的值)。BROWSE是個(gè)功能十分豐富的命令,它有多達(dá)幾十個(gè)的子句,在此僅給出以上的簡(jiǎn)單格式,完整的格式可查看系統(tǒng)幫助文檔。163.命令方式顯示示例例4-4用命令LIST或DISPLAY顯示入學(xué)成績(jī)大于600分的黨員的學(xué)生的學(xué)號(hào)、姓名和性別。在命令窗口依次輸入如下命令序列:SETDEFAULTTOd:\USExsLISTFIELDS學(xué)號(hào),姓名,性別FOR入學(xué)成績(jī)>600AND黨員否USE17例4-5用BROWSE命令顯示班級(jí)為09101的學(xué)生的學(xué)號(hào)、姓名和班級(jí)。UsexsBROWSEFIELDS學(xué)號(hào),姓名,班級(jí)FOR班級(jí)=“09101”184.2.3追加記錄命令方式(1)APPEND命令命令格式:APPEND命令功能:以交互方式在當(dāng)前表記錄之后追加若干條新記錄。例如,若要給學(xué)生表xs.dbf追加記錄,可以執(zhí)行下列兩條命令:USExsAPPEND(2)APPENDBALNK命令命令格式:APPENDBLANK命令功能:給當(dāng)前表追加一條空白記錄。19INSERT命令(3)INSERT命令命令格式:INSERT[BEFORE]命令功能:以交互方式在當(dāng)前表的當(dāng)前記錄之后(或之前)插入若干新記錄。說(shuō)明:若有BEFORE子句,則在當(dāng)前記錄之前插入新記錄,否則在當(dāng)前記錄之后插入。(4)INSERTBLANK命令命令格式:INSERTBLANK[BEFORE]命令功能:當(dāng)前表的當(dāng)前記錄之后(或之前)插入一條空白記錄。20例4-7在學(xué)生表xs.dbf的首記錄位置加入一條空白記錄。UsexsInsertblankbefore21APPENDFROM命令命令格式:APPENDFROM<表文件名>|?[FIELDS<字段名列表>][FOR<條件>]命令功能:從指定表文件中讀出符合要求的記錄,并追加到當(dāng)前表文件中。說(shuō)明:若有FIELDS<字段名列表>子句,則只追加字段名列表中指定的字段值,否則,只追加兩個(gè)表文件共有的字段.22例4-8表xsbf.dbf與表xs.dbf具有相同的結(jié)構(gòu),但沒(méi)有記錄,將xs的記錄全部追加到xsbf中。(可先將xs.dbf的表結(jié)構(gòu)復(fù)制到xsbf.dbf中:usexscopystructuretoxsbf)UsexsbfAppendfromxs234.2.4修改記錄1.REPLACE命令命令格式:REPLACE[<范圍>][FOR<條件1>][WHILE<條件2>]

<字段名1>WITH<表達(dá)式1>[ADDITIVE]

[,<字段名2>WITH<表達(dá)式2>[ADDITIVE]…]命令功能:對(duì)當(dāng)前表指定范圍內(nèi)滿足條件的記錄,用WITH子句中的表達(dá)式值替換對(duì)應(yīng)字段值。說(shuō)明:(1)ADDITIVE子句僅適用于備注型字段,有ADDITIVE時(shí),將表達(dá)式值追加在原數(shù)據(jù)之后,否則替換原數(shù)據(jù)。(2)<范圍>的省略值為當(dāng)前記錄。24例4-9將學(xué)生表xs.dbf中姓名為張力的班級(jí)編號(hào)改為09123。執(zhí)行如下命令:USExsREPLACE班級(jí)WITH"09123"FOR姓名="張力"BROWSE252.GATHER和SCATTER命令(1)用數(shù)組元素值替換記錄字段值命令格式:GATHERFROM<數(shù)組名>[FIELDS<字段名列表>][MEMO]命令功能:用數(shù)組變量各元素的值依次替換當(dāng)前記錄各個(gè)字段的數(shù)據(jù)。說(shuō)明:①用第一個(gè)元素值代替第一個(gè)字段的值,依次類推。當(dāng)有FIELDS<字段名列表>子句時(shí),用數(shù)組各元素的值替換指定字段的值。②當(dāng)有MEMO子句時(shí),用對(duì)應(yīng)元素的值替代該備注型字段的內(nèi)容。通用型字段不在此命令的操作范圍內(nèi)。26(2)將記錄字段值存放到數(shù)組

命令格式:SCATTERTO<數(shù)組名>[FIELDS<字段名列表>][MEMO]命令功能:將當(dāng)前記錄數(shù)據(jù)存入數(shù)組變量的各個(gè)元素中。說(shuō)明:用法和GATHER類似,不再重復(fù)。只是命令中的數(shù)組無(wú)需事先定義,即使已經(jīng)定義而數(shù)組元素少于字段數(shù),系統(tǒng)也可以自動(dòng)重新定義該數(shù)組,以滿足需要。27要將表xs.dbf中的第一條記錄的值存入數(shù)組ss可以執(zhí)行以下命令實(shí)現(xiàn)。USExsSCATTERTOssLISTMEMOLIKEss*284.2.5定位記錄在對(duì)數(shù)據(jù)表的記錄進(jìn)行操作時(shí),通常需要先進(jìn)行記錄定位。記錄定位就是將記錄指針指向某個(gè)記錄,使之成為當(dāng)前記錄,函數(shù)RECNO()的返回值就是當(dāng)前記錄的記錄號(hào)。在打開(kāi)表時(shí),記錄指針總是指向第一個(gè)記錄。1.絕對(duì)定位命令命令格式1:GO[TO]TOP|BOTTOM命令格式2:[GO[TO][RECORD]]<數(shù)值表達(dá)式>292.相對(duì)定位命令

命令格式:SKIP[<數(shù)值表達(dá)式>]命令功能:從當(dāng)前記錄開(kāi)始移動(dòng)記錄指針,指針的移動(dòng)步長(zhǎng)為表達(dá)式的絕對(duì)值。說(shuō)明:當(dāng)表達(dá)式的值為正時(shí),記錄指針向記錄尾部方向移動(dòng),否則向頂部方向移動(dòng)。若無(wú)子句<數(shù)值表達(dá)式>時(shí),默認(rèn)為1。304.2.6記錄的刪除與恢復(fù)通常記錄的刪除要分兩步,先在要?jiǎng)h除的記錄上加刪除標(biāo)記,稱邏輯刪除,再用PACK命令將帶有刪除標(biāo)記的記錄從表中真正刪除,稱為物理刪除。1.邏輯刪除命令命令格式:DELETE[<范圍>][FOR<條件1>][WHILE<條件2>]2.物理刪除命令命令格式:PACK313.恢復(fù)記錄命令命令格式:RECALL[<范圍>][FOR<條件1>][WHILE<條件2>]命令功能:對(duì)當(dāng)前表指定范圍內(nèi)滿足條件的記錄去掉刪除標(biāo)記。4.記錄清除命令命令格式:ZAP命令功能:物理刪除當(dāng)前表中的所有記錄。說(shuō)明:ZAP等價(jià)于執(zhí)行DELETEALL和PACK兩條命令。32例4-11從表xs.dbf中徹底刪除班級(jí)為09123的記錄。UsexsDeletefor班級(jí)=“09123”pack334.3表記錄索引4.3.1索引的概念表的索引是對(duì)表建立各種關(guān)鍵字與表記錄的對(duì)應(yīng)關(guān)系,從而達(dá)到對(duì)表記錄進(jìn)行快速檢索和處理的目的。通常情況下一個(gè)索引主要由以下兩部分組成。(1)索引關(guān)鍵字表達(dá)式:它是索引的依據(jù),是由表字段組成的表達(dá)式。(2)索引標(biāo)識(shí):它是索引的名稱,以字母或下劃線開(kāi)始,由字母、數(shù)字等組成。但長(zhǎng)度不能超過(guò)10個(gè)字符。34表的記錄順序的幾個(gè)概念。(1)物理順序:記錄在表中的實(shí)際排列次序。此順序在表記錄輸入時(shí)已經(jīng)確定,也就是記錄號(hào)的順序。(2)邏輯順序:對(duì)于打開(kāi)的表文件,若有主控索引在使用,則表文件中的記錄將按主控索引中的順序展現(xiàn)給用戶,供用戶使用。記錄在主控索引中的順序稱為邏輯順序。(3)使用順序:實(shí)際展現(xiàn)給用戶,提供用戶使用的記錄順序稱為記錄的使用順序。若有主控索引在起作用,則使用順序就是邏輯順序;否則使用順序就是物理順序。354.3.2索引類型1.按索引文件類型分復(fù)合索引和單索引兩類索引文件2.按索引關(guān)鍵字特征分按索引關(guān)鍵字特征,可以分為主索引、候選索引、普通索引和唯一索引4種。說(shuō)明:(1)主關(guān)鍵字是能唯一標(biāo)識(shí)記錄的索引關(guān)鍵字,不會(huì)出現(xiàn)關(guān)鍵字重復(fù)值。例如,一般姓名字段不用作主關(guān)鍵字,因?yàn)樾彰赡軙?huì)出現(xiàn)同名同姓。(2)唯一索引,對(duì)關(guān)鍵字值相同的記錄,索引只列其中的第一個(gè)記錄。364.3.3創(chuàng)建索引1.建立索引命令命令格式:INDEXON<索引關(guān)鍵字>TAG<索引標(biāo)識(shí)名>[FOR<條件>][ASCENDING|DESCENDING][CANDIDATE]命令功能:給當(dāng)前表建立一個(gè)結(jié)構(gòu)復(fù)合索引,存入表的結(jié)構(gòu)復(fù)合索引文件。說(shuō)明:(1)<索引關(guān)鍵字>表示要建立索引的字段或字段表達(dá)式。(2)TAG<索引標(biāo)識(shí)名>子句為索引定義一個(gè)標(biāo)識(shí)。(3)有FOR<條件>子句的時(shí)候,僅對(duì)滿足條件的記錄索引,否則對(duì)所有記錄索引。(4)ASCENDING表示按升序索引,DESCENDING表示按降序索引,省略的時(shí)候默認(rèn)為升序。(5)CANDIDATE表示建立候選索引,默認(rèn)為普通索引。372.基于單字段的索引所謂基于單字段的索引,就是按某一個(gè)字段來(lái)建立索引,即索引關(guān)鍵字就是某個(gè)字段名,如下例。例4-8創(chuàng)建索引,對(duì)學(xué)生表xs.dbf的記錄按入學(xué)成績(jī)降序排序。執(zhí)行以下命令序列:USExsINDEXON入學(xué)成績(jī)TAGrxcjDESCENDINGBROWSE383.基于多字段的索引相對(duì)于單字段索引就很容易理解所謂多字段索引,指的是按照多個(gè)字段的某種計(jì)算關(guān)系進(jìn)行索引,即索引關(guān)鍵字是由幾個(gè)字段構(gòu)成的一個(gè)表達(dá)式,如下例。例4-9

創(chuàng)建索引,對(duì)學(xué)生表xs.dbf的記錄先按班級(jí)升序排序,班級(jí)相同再按入學(xué)成績(jī)降序排序。則執(zhí)行如下命令:USExsINDEXON(班級(jí)+STR(1000-入學(xué)成績(jī)))TAGbjrxBROWSE394.3.4使用索引如前所述一個(gè)復(fù)合索引文件可以容納多個(gè)索引,但任意時(shí)刻最多只有一個(gè)索引起作用,那個(gè)起作用的索引被稱為主控索引。1.主控索引的指定命令格式:SETORDERTO[<值表達(dá)式>|TAG<索引標(biāo)識(shí)>[ASCENDING|DESCENDING]]命令功能:為當(dāng)前表指定索引順序,即指定主控索引。說(shuō)明:(1)<數(shù)值表達(dá)式>表示索引建立的次序號(hào),可以依此指定主控索引。(2)SETORDERTO或SETORDERTO0用于取消主控索引。402.索引的更新(1)自動(dòng)更新。若在有主控索引狀態(tài)下,數(shù)據(jù)表中的記錄數(shù)據(jù)發(fā)生變化,則索引自動(dòng)更新。(2)重新索引。若在未指定主控狀態(tài)下,數(shù)據(jù)表中的記錄數(shù)據(jù)發(fā)生變化,索引文件不會(huì)自動(dòng)更新。如果要維持記錄的邏輯順序,可用REINDEX命令重新索引,也可以重新建立索引413.索引的刪除

命令格式:DELETETAGALL|<索引標(biāo)識(shí)1>[,<索引標(biāo)識(shí)2>…...]命令功能:將所列出的索引從當(dāng)前表的結(jié)構(gòu)復(fù)合索引文件中刪除。說(shuō)明:(1)ALL表示刪除所有索引。(2)若當(dāng)前表的所有索引都被刪除,則其結(jié)構(gòu)復(fù)合索引文件被自動(dòng)刪除。424.3.5記錄的查找1.順序查找命令格式:LOCATEFOR<條件>[<范圍>]說(shuō)明:(1)<范圍>的省略值為ALL。(2)找到記錄的時(shí)候,F(xiàn)OUND()函數(shù)為邏輯真值(.T.),否則為邏輯假值(.F.)。(3)LOCATE找到一個(gè)符合條件的記錄后,就停止查找。如果要繼續(xù)查找后面滿足條件的記錄,需要執(zhí)行CONTINUE命令,CONTINUE命令相當(dāng)于在縮小了的范圍內(nèi)又執(zhí)行了一次LOCATE命令。]432.索引查找

命令格式:SEEK<表達(dá)式>命令功能:在當(dāng)前主控索引關(guān)鍵字中搜索與<表達(dá)式>的值相匹配的第一條記錄,若找到,則使該記錄成為當(dāng)前記錄,否則記錄指針定位到文件尾。說(shuō)明:查找成功時(shí)函數(shù)FOUND()為邏輯真值(.T.),否則為邏輯假值(.F.),且函數(shù)EOF()為邏輯真值(.T.)。444.3.6記錄的統(tǒng)計(jì)1.計(jì)數(shù)命令命令格式:COUNT[<范圍>][FOR<條件1>][WHILE<條件2>][TO<內(nèi)存變量名>]命令功能:計(jì)算當(dāng)前表指定范圍內(nèi)滿足條件的記錄的個(gè)數(shù)。說(shuō)明:(1)<范圍>的省略值為ALL。(2)TO子句的作用是將記錄數(shù)保存在指定的內(nèi)存變量中,若省略則計(jì)算結(jié)果僅在主窗口的狀態(tài)條中顯示。452.求和命令命令格式:SUM[<數(shù)值表達(dá)式列表>][<范圍>][FOR<條件1>][WHILE<條件2>]

[TO<內(nèi)存變量名列表>|ARRAY<數(shù)組>]功能:對(duì)當(dāng)前表指定范圍內(nèi)滿足條件的記錄,分別計(jì)算各個(gè)數(shù)值表達(dá)式的和。說(shuō)明:(1)<范圍>的省略值為ALL。(2)TO子句的作用是將計(jì)算結(jié)果保存在指定的內(nèi)存變量或數(shù)組中,若省略則計(jì)算結(jié)果顯示在主窗口中。(3)若省略<數(shù)值表達(dá)式列表>,則分別求每個(gè)數(shù)值型字段的和。463.求平均命令

命令格式:AVERAGE[<數(shù)值表達(dá)式列表>][<范圍>][FOR<條件1>][WHILE<條件2>]

[TO<內(nèi)存變量名列表|ARRAY<數(shù)組>]命令功能:在打開(kāi)的表中,對(duì)[數(shù)值表達(dá)式表]的各個(gè)表達(dá)式分別求平均值。說(shuō)明:對(duì)當(dāng)前表指定范圍內(nèi)滿足條件的記錄,分別計(jì)算各個(gè)數(shù)值表達(dá)式的平均值。說(shuō)明:(1)<范圍>的省略值為ALL。(2)TO子句的作用是將計(jì)算結(jié)果保存在指定的內(nèi)存變量或數(shù)組中,若省略則計(jì)算結(jié)果顯示在主窗口中。(3)若省略<數(shù)值表達(dá)式列表>,則分別求每個(gè)數(shù)值型字段的平均值。473.匯總命令

命令格式:TOTALTO<表文件名>ON<字段名>

[<范圍>][FOR<條件1>][WHILE<條件2>][FIELDS<數(shù)值型字段名列表>]命令功能:對(duì)當(dāng)前表指定范圍內(nèi)滿足條件的記錄,按<字段名>值分類,分別求各個(gè)數(shù)值型字段的和,并將結(jié)果存入表文件中。說(shuō)明:(1)<范圍>的省略值為ALL。(2)分類字段值相同的記錄在新表中產(chǎn)生一條記錄,對(duì)非求和字段,只有分類字段值相同的第一條記錄的字段值出現(xiàn)在記錄中,也就是說(shuō),存放匯總結(jié)果的表文件的記錄數(shù)是分類字段值的種類數(shù)。(3)分類字段應(yīng)該是當(dāng)前表的主控索引,或者當(dāng)前表在分類字段上是有序的,否則匯總結(jié)果是不正確的。(4)FIELDS<數(shù)值型字段名列表>若省略,則對(duì)所有數(shù)值型字段匯總。484.3.7表的復(fù)制1.復(fù)制表命令基本格式:COPYTO<表文件名>[<范圍>][FOR<條件1>][WHILE<條件2>][FIELDS<字段名表>]命令功能:將當(dāng)前表指定范圍內(nèi)滿足條件記錄的指定字段復(fù)制到指定表文件中。說(shuō)明:當(dāng)省略全部可省略子句時(shí),復(fù)制全部記錄的所有字段到新表。492.復(fù)制表的結(jié)構(gòu)

命令格式:COPYSTRUCTURETO<表文件名>[FIELDS<字段名表>]命令功能:復(fù)制當(dāng)前表的指定字段形成新表的結(jié)構(gòu)。說(shuō)明:省略FIELDS<字段名表>時(shí),復(fù)制當(dāng)前表的全部字段到新表。503.復(fù)制任何文件

命令格式:COPYFILE<文件1>TO<文件2>命令功能:復(fù)制文件1到文件2。說(shuō)明:文件必須寫完整文件名,且不能為打開(kāi)的。514.4多表操作通常在一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,往往有多個(gè)表文件,有時(shí)需要同時(shí)打開(kāi)幾個(gè)表文件,這種操作稱為多表操作。在前面對(duì)表的各種操作示例中,均以學(xué)生基本信息表xs.dbf為例說(shuō)明表的各種操作的。事實(shí)上學(xué)生管理系統(tǒng)還要涉及課程、班級(jí)、必修課成績(jī)和選修課成績(jī)等數(shù)據(jù)表。524.4.1工作區(qū)1.工作區(qū)與當(dāng)前工作區(qū)2.選擇當(dāng)前工作區(qū)(1)工作區(qū)標(biāo)號(hào)有32767個(gè)工作區(qū)的標(biāo)號(hào)(2)工作區(qū)別名命令格式:USE<表文件名>[ALIAS<表別名>](3)選擇當(dāng)前工作區(qū)命令53(3)選擇當(dāng)前工作區(qū)命令命令格式:SELECT<工作區(qū)號(hào)>︱<別名>︱0命令功能:指定<工作區(qū)號(hào)>或<別名>代表的工作區(qū)為當(dāng)前工作區(qū)。說(shuō)明:①SELECT0表示選定當(dāng)前尚未使用的最小號(hào)工作區(qū)。②函數(shù)SELECT()能夠返回當(dāng)前工作區(qū)的區(qū)號(hào)。③使用命令:USE<表名>IN<工作區(qū)號(hào)>︱<別名>能在指定的工作區(qū)打開(kāi)表,但不改變當(dāng)前工作區(qū),要改變工作區(qū)仍需要使用SELECT命令。④引用非當(dāng)前工作區(qū)的字段可以有如下兩種格式:格式1:<工作區(qū)別名>.<字段名>格式2:<工作區(qū)別名>-><字段名>

54例如執(zhí)行下列命令觀察其區(qū)別。

CLOSEALL&&關(guān)閉所有打開(kāi)的表,當(dāng)前工作區(qū)默認(rèn)為1號(hào)工作區(qū)?SELECT()&&顯示:1USEbxcjGO3?學(xué)號(hào),高等數(shù)學(xué)&&顯示:2009009254SELECT2&&選定2號(hào)工作區(qū)為當(dāng)前工作區(qū)USExsGO3?姓名,bxcj.學(xué)號(hào),bxcj.高等數(shù)學(xué)&&顯示:李銘2009009254

553.?dāng)?shù)據(jù)工作期除了用命令方式選擇工作區(qū)和打開(kāi)多個(gè)數(shù)據(jù)表外,為了方便用戶了解和配置當(dāng)前的數(shù)據(jù)工作環(huán)境,VisualFoxPro提供一種稱為數(shù)據(jù)工作期(DataSession)的窗口用于打開(kāi)或顯示表、建立表間關(guān)系、設(shè)置工作區(qū)屬性。564.4.2多表間的關(guān)聯(lián)通常,表與表之間存在以下3種關(guān)系:一對(duì)多關(guān)系:一個(gè)表的一條記錄對(duì)應(yīng)另一個(gè)表的多條記錄。例如,表xs.dbf與表xxcj.dbf按學(xué)號(hào)具有一對(duì)多關(guān)系。多對(duì)一關(guān)系:一個(gè)表的多條記錄對(duì)應(yīng)另一個(gè)表的一條記錄。例如,表xxcj.dbf與表xs.dbf按學(xué)號(hào)具有多對(duì)一關(guān)系。一對(duì)一關(guān)系:一個(gè)表的一條記錄僅對(duì)應(yīng)另一個(gè)表的一條記錄。例如,表xs.dbf與表bxcj.dbf按學(xué)號(hào)具有一對(duì)一關(guān)系。按兩個(gè)表的主從關(guān)系分,通常分為父表(又稱主表)和子表兩種。在建立關(guān)聯(lián)的兩個(gè)表中總有一個(gè)是父表,一個(gè)是子表。571.RELATION命令命令格式:SETRELATIONTO[<表達(dá)式1>INTO<別名1>,…,<表達(dá)式N>INTO<別名N>]

[ADDITIVE]命令功能:以當(dāng)前表為父表,分別按給定表達(dá)式與相應(yīng)別名表建立關(guān)聯(lián)。說(shuō)明:(1)<表達(dá)式>用來(lái)指定父表的關(guān)聯(lián)字段表達(dá)式,其值將與子表的主控索引關(guān)鍵字構(gòu)成對(duì)照,相匹配的記錄構(gòu)成關(guān)聯(lián),<別名>表示子表或其所在的工作區(qū)。(2)ADDITIVE保證在建立關(guān)聯(lián)時(shí)不取消以前建立的關(guān)聯(lián)。58例4-21

用命令方式建立表xs.dbf和bxcj.dbf的關(guān)聯(lián),觀察相關(guān)表的記錄指針變化情況和顯示結(jié)果。

select2usebxcjindexon學(xué)號(hào)tagxhselect1usexssetrelationto學(xué)號(hào)intobxcjdisplay學(xué)號(hào),姓名,bxcj.高等數(shù)學(xué),bxcj.計(jì)算機(jī)

go5display學(xué)號(hào),姓名,bxcj.高等數(shù)學(xué),bxcj.計(jì)算機(jī)

browsefields學(xué)號(hào),姓名,bxcj.高等數(shù)學(xué),bxcj.計(jì)算機(jī)592.在數(shù)據(jù)工作期窗口建立關(guān)聯(lián)

在數(shù)據(jù)工作期窗口建立關(guān)聯(lián)的基本步驟如下:①打開(kāi)數(shù)據(jù)工作期窗口。②打開(kāi)需要建立關(guān)聯(lián)的表。③為子表按關(guān)聯(lián)的關(guān)鍵字建立索引或確定主控索引。④選定父表工作區(qū)為當(dāng)前工作區(qū),并與一個(gè)或多個(gè)子表建立關(guān)聯(lián)。⑤說(shuō)明建立的關(guān)聯(lián)為一對(duì)多關(guān)系。若省略本步驟則表示多對(duì)一關(guān)系。604.5數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)是一個(gè)容器,它按照數(shù)據(jù)庫(kù)的組織結(jié)構(gòu)構(gòu)成表的集合,從而提高數(shù)據(jù)的一致性和有效性,降低數(shù)據(jù)冗余。同時(shí),在數(shù)據(jù)庫(kù)中還可以建立和保存數(shù)據(jù)表之間的永久關(guān)系,以使各表保持相互協(xié)調(diào)和相互制約機(jī)制。另外,與自由表相比,數(shù)據(jù)庫(kù)表增加了許多自由表所不具備的特性,例如字段的標(biāo)題、默認(rèn)值、顯示格式、輸入掩碼、觸發(fā)器和有效性規(guī)則等等,從而使表的功能更強(qiáng)大。614.5.1數(shù)據(jù)庫(kù)的創(chuàng)建與修改1.創(chuàng)建數(shù)據(jù)庫(kù)(1)交互方式創(chuàng)建數(shù)據(jù)庫(kù)(2)使用命令創(chuàng)建數(shù)據(jù)庫(kù)命令格式:CREATEDATABASE[<數(shù)據(jù)庫(kù)文件名>|?]命令功能:按指定的數(shù)據(jù)庫(kù)文件名建立數(shù)據(jù)庫(kù)文件,或在【創(chuàng)建】對(duì)話框中指定數(shù)據(jù)庫(kù)文件的存儲(chǔ)位置和文件名來(lái)建立。622.修改數(shù)據(jù)庫(kù)命令格式:MODIFYDATABASE[<數(shù)據(jù)庫(kù)名>|?]命令功能:在數(shù)據(jù)庫(kù)設(shè)計(jì)器中顯示指定的數(shù)據(jù)庫(kù)。說(shuō)明:若當(dāng)前有打開(kāi)的數(shù)據(jù)庫(kù),則可以省略文件名;若當(dāng)前沒(méi)有打開(kāi)的數(shù)據(jù)庫(kù)又省略了文件名或者使用了?,則需通過(guò)【打開(kāi)】對(duì)話框來(lái)指定要打開(kāi)修改的文件。634.5.2打開(kāi)與關(guān)閉數(shù)據(jù)庫(kù)1.打開(kāi)數(shù)據(jù)庫(kù)命令命令格式:OPENDATABASE[<數(shù)據(jù)庫(kù)名>|?]功能:打開(kāi)指定的數(shù)據(jù)庫(kù)文件,或從【打開(kāi)】對(duì)話框中指定數(shù)據(jù)庫(kù)文件來(lái)打開(kāi)。說(shuō)明:使用該命令可以打開(kāi)多個(gè)數(shù)據(jù)庫(kù)文件。2.關(guān)閉數(shù)據(jù)庫(kù)的命令命令格式:CLOSEDATABASE[ALL]功能說(shuō)明:ALL子句表示關(guān)閉所有打開(kāi)的數(shù)據(jù)庫(kù)文件,若無(wú)子句ALL,則僅關(guān)閉當(dāng)前數(shù)據(jù)庫(kù)文件。644.5.3數(shù)據(jù)庫(kù)表的添加與移除1.向數(shù)據(jù)庫(kù)添加自由表2.從數(shù)據(jù)庫(kù)中移去表使用下列命令移去表。命令格式:REMOVETABLES<表文件名>命令功能:從當(dāng)前數(shù)據(jù)庫(kù)中移去指定的數(shù)據(jù)庫(kù)表,被移去的數(shù)據(jù)庫(kù)表變?yōu)樽杂杀怼?54.5.4設(shè)置當(dāng)前數(shù)據(jù)庫(kù)1.設(shè)置當(dāng)前數(shù)據(jù)庫(kù)命令格式:SETDATABASETO[<數(shù)據(jù)庫(kù)文件名>]命令功能:設(shè)置指定數(shù)據(jù)庫(kù)為當(dāng)前數(shù)據(jù)庫(kù)。說(shuō)明:如果省略<數(shù)據(jù)庫(kù)文件名>,則沒(méi)有設(shè)置當(dāng)前數(shù)據(jù)庫(kù)。2.非當(dāng)前數(shù)據(jù)庫(kù)的引用非當(dāng)前數(shù)據(jù)庫(kù)表的引用格式:<非當(dāng)前數(shù)據(jù)庫(kù)文件名>!<表文件名>說(shuō)明:其中<非當(dāng)前數(shù)據(jù)庫(kù)文件名>為<表文件>所在的數(shù)據(jù)庫(kù)文件名。664.5.5刪除數(shù)據(jù)庫(kù)命令格式:DELETEDATABASE<數(shù)據(jù)庫(kù)文件名>[DELETETABLES]命令功能:當(dāng)使用DELETETABLES子句時(shí),將數(shù)據(jù)庫(kù)及其中的表一并刪除,否則僅刪除數(shù)據(jù)庫(kù)文件,并將其中的表變?yōu)樽杂杀?。?yīng)該注意的是,若要?jiǎng)h除數(shù)據(jù)庫(kù),必須先關(guān)閉它。674.5.6數(shù)據(jù)庫(kù)表的關(guān)聯(lián)永久關(guān)系建立的前提是相關(guān)聯(lián)的兩個(gè)表在關(guān)聯(lián)字段上已建立索引。如果兩個(gè)表之間是一對(duì)多的關(guān)系,則對(duì)父表的關(guān)聯(lián)字段必須是主索引或候選主索引,而子表的關(guān)聯(lián)字段可以是任何類型的索引,但通常是普通索引。若是一對(duì)一關(guān)系,則子表的關(guān)聯(lián)字段必須也是主索引或候選索引。1.建立關(guān)聯(lián)關(guān)系2.刪除關(guān)聯(lián)關(guān)系3.編輯關(guān)聯(lián)關(guān)系684.5.7參照完整性設(shè)置對(duì)于彼此相關(guān)的數(shù)據(jù)庫(kù)表,在更新、插入或刪除記錄時(shí),如果只改其一不改其二,將會(huì)影響相關(guān)數(shù)據(jù)的一致性和完整性。而當(dāng)數(shù)據(jù)庫(kù)表之間建立了永久關(guān)系之后,可以通過(guò)設(shè)置參照完整性規(guī)則來(lái)建立必要的制約機(jī)制,以保證相關(guān)數(shù)據(jù)的完整性。1.打開(kāi)參照完整性生成器2.參照完整性生成器界面694.6數(shù)據(jù)庫(kù)表的特有設(shè)置

所謂數(shù)據(jù)完整性,主要是指數(shù)據(jù)的正確性和相容性。無(wú)論單用戶或多用戶數(shù)據(jù)庫(kù),用戶在操作中難免發(fā)生差錯(cuò)。如果對(duì)數(shù)據(jù)操作缺乏經(jīng)驗(yàn)及必要的約束,就難以保證數(shù)據(jù)的有效性。在VisualFoxPro中,對(duì)于向數(shù)據(jù)庫(kù)表中輸入的數(shù)據(jù)允許設(shè)置三級(jí)驗(yàn)證,即字段級(jí)驗(yàn)證、記錄級(jí)驗(yàn)證和表間驗(yàn)證。其中前兩級(jí)屬于表內(nèi)檢驗(yàn),其規(guī)則一般在表設(shè)計(jì)器窗口中進(jìn)行設(shè)置;最后一級(jí)屬于表間檢驗(yàn),其規(guī)則可通過(guò)參照完整性生成器進(jìn)行設(shè)置。704.6.1字段級(jí)設(shè)置1.設(shè)置顯示屬性(1)格式:用以確定當(dāng)前字段在瀏覽窗口、表單或報(bào)表中的顯示格式。例如,使用格式碼“!”,則當(dāng)前字段在瀏覽窗口輸出時(shí)全部字母均為大寫;若換為格式碼“L”,則表示輸出數(shù)值型數(shù)據(jù)時(shí),用0填滿前導(dǎo)空格。常用的格式碼參考書中描述712.設(shè)置字段有效性規(guī)則

字段有效性規(guī)則用來(lái)檢驗(yàn)對(duì)當(dāng)前字段輸入的數(shù)據(jù)是否有效??稍谖谋究蛑兄苯虞斎氡磉_(dá)式,也可單擊其右邊的按鈕,在【表達(dá)式生成器】中生成表達(dá)式。(1)規(guī)則:當(dāng)前字段的有效性檢驗(yàn)表達(dá)式,對(duì)于在該字段輸入的數(shù)據(jù),

溫馨提示

  • 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)論