版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VisualFoxpro6.0程序設(shè)計(jì)基礎(chǔ)重慶工商大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)基礎(chǔ)教研室VisualFoxpro6.0程序設(shè)計(jì)基礎(chǔ)重慶工商大學(xué)計(jì)1數(shù)據(jù)表的分類排序
命令格式sortto<文件名>on<字段1>[/a][/d][/c]……產(chǎn)生的表是關(guān)閉的(教科書P73)數(shù)據(jù)表的分類排序命令格式sortto<文件名分類排序有什么缺點(diǎn)數(shù)據(jù)冗余無法自動(dòng)更新分類排序有什么缺點(diǎn)數(shù)據(jù)冗余無法自動(dòng)更新數(shù)據(jù)表的索引排序
索引是按索引關(guān)鍵字表達(dá)式的值使數(shù)據(jù)表中的記錄有序排列的一種技術(shù),在VisualFoxPro系統(tǒng)中是借助于索引文件實(shí)現(xiàn)的。1、什么是索引索引關(guān)鍵字的值、記錄號(hào)(教科書P74)數(shù)據(jù)表的索引排序索引是按索引關(guān)鍵字表達(dá)式的值使數(shù)VisualFoxPro系統(tǒng)提供了四種不同的索引類型,它們分別是:2、索引的類型VisualFoxPro系統(tǒng)提供了四種不同的索引主索引:僅適用于數(shù)據(jù)庫(kù)表,不允許關(guān)鍵字段有重復(fù)值,一個(gè)數(shù)據(jù)表只能建一個(gè)主索引。候選索引:不允許索引關(guān)鍵字段有重復(fù)值普通索引:最常用的索引類型,無任何限制唯一索引:允許索引關(guān)鍵字段有重復(fù)值
主索引:僅適用于數(shù)據(jù)庫(kù)表,不允許關(guān)鍵字段有重復(fù)值,一個(gè)數(shù)據(jù)表VisualFoxPro系統(tǒng)支持單索引文件(.idx)和復(fù)合索引文件(.cdx)。3、索引文件的類型3、索引文件的類型(1)單索引文件(略)
單索引文件是每個(gè)索引存放在一個(gè)獨(dú)立的文件(.idx)中。(2)結(jié)構(gòu)化復(fù)合索引文件
結(jié)構(gòu)化復(fù)合索引文件(.cdx)可以在同一個(gè)文件中包含多個(gè)索引,其中每個(gè)索引稱為索引標(biāo)識(shí)。
(1)單索引文件(略)(2)結(jié)構(gòu)化復(fù)合索引文件更重要的是,對(duì)于結(jié)構(gòu)復(fù)合索引,無論何時(shí)打開表文件,該索引都會(huì)自動(dòng)打開。
其文件名與表名相同,一個(gè)表文件只產(chǎn)生一個(gè)結(jié)構(gòu)化復(fù)合索引文件。(3)獨(dú)立復(fù)合索引文件(略)更重要的是,對(duì)于結(jié)構(gòu)復(fù)合索引,無論何時(shí)打開表文件,該4、索引的建立(教科書P75)Indexon<索引關(guān)鍵字表達(dá)式>tag<索引標(biāo)識(shí)名>[ascending|descending]……自動(dòng)產(chǎn)生與表同名的.CDX文件結(jié)構(gòu)化復(fù)合索引文件的建立(命令方式)4、索引的建立(教科書P75)Indexon<索引特別注意:
建立索引時(shí),當(dāng)<索引關(guān)鍵字表達(dá)式>涉及到兩個(gè)或兩個(gè)以上的不同類型的字段時(shí):1)順序若相同,則將非字符型轉(zhuǎn)換為字符型,然后用“+”連接成一個(gè)字符表達(dá)式。特別注意:2)順序若不同,則以字符型字段的順序?yàn)闇?zhǔn),若數(shù)字型字段的順序與字符型不同,則用一個(gè)較大數(shù)減去該字段,再轉(zhuǎn)化為字符型;若日期型字段的順序與字符型不同,則用一個(gè)較大的日期減去該字段,再轉(zhuǎn)化為字符型,然后用“+”連接成一個(gè)字符表達(dá)式。2)順序若不同,則以字符型字段的順序?yàn)闇?zhǔn),若數(shù)字型字段的順序【例】就學(xué)生表建立結(jié)構(gòu)復(fù)合索引文件,其中包含2個(gè)索引:(1)按學(xué)號(hào)的升序排列,編號(hào)相同的記錄只顯示第一條。(2)先按性別升序,性別相同再按入學(xué)成績(jī)降序排列。
USE學(xué)生INDEXON學(xué)號(hào)TAGsy1UNIQUEINDEXON性別+STR(1000-入學(xué)成績(jī))TAGsy2【例】就學(xué)生表建立結(jié)構(gòu)復(fù)合索引文件,其中包含2個(gè)索引:在表設(shè)計(jì)器中建立索引表設(shè)計(jì)器中的“索引”選項(xiàng)卡在表設(shè)計(jì)器中建立索引表設(shè)計(jì)器中的“索引”選項(xiàng)卡5、索引的使用一個(gè)表文件可以建立多個(gè)索引,在操作中可以同時(shí)打開多個(gè)索引,但是任何時(shí)候只有一個(gè)索引起作用。
索引依賴于表文件而存在,它隨表的關(guān)閉而自動(dòng)關(guān)閉。5、索引的使用一個(gè)表文件可以建立多個(gè)索引,在操作中可
當(dāng)前起作用的索引標(biāo)識(shí)稱為主控索引。
要使用索引必須滿足以下條件:
打開表;確定主控索引;
當(dāng)前起作用的索引標(biāo)識(shí)稱為主控索引。
setorderto[[tag]<索引標(biāo)識(shí)名>](1)確定主控索引命令格式:(教科書P77)(2)刪除索引deletetagall|<索引標(biāo)識(shí)1>……(3)索引更新自動(dòng)更新setorderto[[tag]<索引標(biāo)識(shí)使用索引文件后,雖然表中各記錄的物理順序并未改變。但記錄指針不再按物理順序移動(dòng),而是按主控索引文件中記錄的邏輯順序移動(dòng),于是整個(gè)表中的記錄是按索引關(guān)鍵表達(dá)式值排序的效果。使用索引文件時(shí),還要特別注意以下幾點(diǎn):
(1)在使用GO命令時(shí),GO<數(shù)值表達(dá)式>使記錄指針指向具體的物理記錄號(hào),而與索引無關(guān),而GOTOP|BOTTOM將使記錄指針指向邏輯首或邏輯尾記錄,這時(shí)GOTOP不再等同于GO1。(2)SKIP命令按邏輯順序移動(dòng)記錄指針。(3)表被打開后,記錄指針位于TOP位置。使用索引文件后,雖然表中各記錄的物理順序并未改變【例】當(dāng)索引起作用時(shí),分析記錄指針的移動(dòng)規(guī)律。
USE學(xué)生INDEXON入學(xué)成績(jī)TAGsy3GO6?RECNO(),姓名&&顯示6李勤奮SKIP?RECNO(),姓名&&顯示5歐陽天地【例】當(dāng)索引起作用時(shí),分析記錄指針的移動(dòng)規(guī)律。復(fù)合結(jié)構(gòu)索引文件的類型名稱是()A)PJT B)PRG C)CDX D)MEM不允許字段值出現(xiàn)重復(fù)的索引是()。
A)侯選索引和主索引
B)普通索引和惟一索引C)惟一索引和主索引
D)惟一索引自由表gz.dbf有姓名/C/8、出生年月/D、基本工資/N/6/2等字段,要建立以“姓名、基本工資”兩字段的組合索引,其索引關(guān)鍵字表達(dá)式是()。姓名+基本工資(B)“姓名”+“基本工資”(C)“姓名”+基本工資(D)姓名+str(基本工資,6,2)有數(shù)據(jù)表文件CJ.DBF,按姓名(C,8)的升序,上機(jī)成績(jī)(N,6,2)的降序建立索引,正確的命令是()。A.INDEXON姓名-上機(jī)成績(jī)TAGCJIDXB.INDEXON姓名+STR(-上機(jī)成績(jī),6,2)TAGCJIDXC.INDEXON姓名+STR(1000-上機(jī)成績(jī))TAGCJIDXD.INDEXON姓名/A,上機(jī)成績(jī)/DTAGCJIDX某數(shù)據(jù)表有字段:學(xué)號(hào)/C、生日/D、成績(jī)/N等。要建立學(xué)號(hào)、成績(jī)、生日的組合索引,其索引關(guān)鍵字表達(dá)式是()。A)學(xué)號(hào)+成績(jī)+生日B)"學(xué)號(hào)"+"成績(jī)"+"生日"C)學(xué)號(hào)+STR(成績(jī),5,1)+STR(生日,8)D)學(xué)號(hào)+STR(成績(jī),5,1)+DTOC(生日,1)復(fù)合結(jié)構(gòu)索引文件的類型名稱是()不允許字段值出現(xiàn)重多表操作
若要使用多個(gè)表,就要使用多個(gè)工作區(qū)。一個(gè)工作區(qū)是一個(gè)編號(hào)區(qū)域,它標(biāo)識(shí)一個(gè)已打開的表。在應(yīng)用程序中通常通過使用工作區(qū)號(hào)和工作區(qū)別名來標(biāo)識(shí)。
(教科書P82)多表操作若要使用多個(gè)表,就要使用多個(gè)工作區(qū)。一個(gè)工1、工作區(qū)號(hào)
VisualfoxPro提供了32767個(gè)工作區(qū),編號(hào)從1到32767。
每個(gè)工作區(qū)只允許打開一個(gè)表,一個(gè)表只能在一個(gè)工作區(qū)打開,系統(tǒng)默認(rèn)的工作區(qū)為1號(hào)工作區(qū)。
1、工作區(qū)號(hào)2、別名(1)前十個(gè)工作區(qū)除了可用1~10來標(biāo)識(shí)外,還可用A~J來表示工作區(qū)的別名。(2)定義別名use<文件名>alias<別名>格式:2、別名use<文件名>alias<別名>格式:3、選擇當(dāng)前工作區(qū)select<工作區(qū)號(hào)>|<別名>如沒有給表定義別名,則可以用數(shù)據(jù)表名作為別名。
sele0表示選定當(dāng)前未使用的最小號(hào)工作區(qū)。use<表名>in<工作區(qū)號(hào)>|<別名>不改變當(dāng)前工作區(qū)3、選擇當(dāng)前工作區(qū)select<工作區(qū)號(hào)>|<別名>如【例】在不同的工作區(qū)分別打開學(xué)生.dbf、選課.dbf和課程.dbf3個(gè)表,命令序列如下:CLOSEALL&&關(guān)閉所有打開的文件SELECT2USE學(xué)生&&選擇2號(hào)工作區(qū)打開學(xué)生表SELECTCUSE課程&&選擇3號(hào)工作區(qū)打開課程表USE選課IN5&&在5號(hào)工作區(qū)打開選課表【例】在不同的工作區(qū)分別打開學(xué)生.dbf、選課.dbf和課引用非當(dāng)前工作區(qū)表的字段必須冠以別名,引用格式為:
別名.字段名別名->字段名引用非當(dāng)前工作區(qū)表的字段必須冠以別名,引用格式【例】在1號(hào)工作區(qū)打開學(xué)生表,在2號(hào)工作區(qū)打開選課表;當(dāng)前工作區(qū)為1號(hào),顯示選課表中當(dāng)前記錄的學(xué)號(hào)、姓名、課程號(hào)和成績(jī)字段的值。命令序列如下:(演示,并移動(dòng)指針)CLOSEALL&&關(guān)閉所有打開的文件SELECT1USE學(xué)生&&選擇1號(hào)工作區(qū)打開學(xué)生表USE選課IN2&&在2號(hào)工作區(qū)打開選課表,當(dāng)前工作區(qū)為1號(hào)?學(xué)號(hào),姓名,選課.課程號(hào),選課->成績(jī)【例】在1號(hào)工作區(qū)打開學(xué)生表,在2號(hào)工作區(qū)打開選課表;當(dāng)前工學(xué)生管理數(shù)據(jù)庫(kù)中的表學(xué)生管理數(shù)據(jù)庫(kù)中的表
bof(<工作區(qū)>):文件開始的測(cè)試函數(shù)
eof(<工作區(qū)>):文件結(jié)束的測(cè)試函數(shù)
recno(<工作區(qū)>):返回當(dāng)前記錄號(hào)
sele():返回當(dāng)前工作區(qū)區(qū)號(hào)4、工作區(qū)常用函數(shù)bof(<工作區(qū)>):文件開始的測(cè)試函數(shù)4、工作區(qū)常用函數(shù)建立表間的關(guān)聯(lián)關(guān)系
(臨時(shí)關(guān)系)
要在兩個(gè)或兩個(gè)以上的表之間進(jìn)行數(shù)據(jù)操作時(shí),通常有關(guān)聯(lián)和連接兩種方法。建立表間的關(guān)聯(lián)關(guān)系
(臨時(shí)關(guān)系)要在兩個(gè)或兩個(gè)以1、關(guān)聯(lián)的概念每個(gè)工作區(qū)打開的表中都存在一個(gè)記錄指針,指針指向的記錄是當(dāng)前記錄,如果表之間沒有關(guān)系,則各個(gè)表的記錄指針相互獨(dú)立,即當(dāng)前工作區(qū)指針移動(dòng)時(shí),其他工作區(qū)的指針不移動(dòng)。所謂關(guān)聯(lián),就是讓不同工作區(qū)數(shù)據(jù)表的記錄指針建立一種臨時(shí)的聯(lián)動(dòng)關(guān)系。使一個(gè)表的記錄指針移動(dòng)時(shí),能帶動(dòng)另一個(gè)表的記錄指針按一定的條件作相應(yīng)地移動(dòng)。前者稱為關(guān)聯(lián)表(主動(dòng)表、父表),后者稱為被關(guān)聯(lián)表(被動(dòng)表、子表)1、關(guān)聯(lián)的概念所謂關(guān)聯(lián),就是讓不同工作區(qū)數(shù)據(jù)表的記錄指針建立關(guān)鍵字為唯一值關(guān)鍵字為唯一值一一關(guān)鍵字為重復(fù)值關(guān)鍵字為唯一值多一關(guān)鍵字為唯一值關(guān)鍵字為重復(fù)值一多關(guān)鍵字為重復(fù)值關(guān)鍵字為重復(fù)值多多父表子表主動(dòng)被動(dòng)關(guān)鍵字為唯一值關(guān)鍵字為唯一值一一關(guān)鍵建立表間的關(guān)聯(lián)建立數(shù)據(jù)庫(kù)文件中表間關(guān)聯(lián),一是要保證建立關(guān)系的表具有相同的字段值(關(guān)鍵字值);二是子表要以該字段建立索引。建立表間的關(guān)聯(lián)建立兩個(gè)表之間的“一對(duì)一”和“多對(duì)一”關(guān)聯(lián)的步驟:①找到兩個(gè)表中能夠建立關(guān)聯(lián)的字段(字段名可以不同,類型、寬度、小數(shù)位數(shù)必須相同)②根據(jù)關(guān)鍵字值確定父表,再確定子表;③先打開子表,建立索引;④最后打開父表建立關(guān)聯(lián)。有重復(fù)值為父表建立兩個(gè)表之間的“一對(duì)一”和“多對(duì)一”關(guān)聯(lián)的步驟:有setrelato[<表達(dá)式1>into<別名1>,…,<表達(dá)式N>into<別名N>][additive]說明:①發(fā)出關(guān)聯(lián)命令所在工作區(qū)的表是父表建立關(guān)聯(lián)的命令(教科書P83)setrelato[<表達(dá)式1>into②子表必須對(duì)關(guān)聯(lián)字段索引③<表達(dá)式>是關(guān)聯(lián)的關(guān)鍵字
不同名的字段只要類型和數(shù)值相同也可建立關(guān)聯(lián)。④關(guān)聯(lián)后,父表指針移動(dòng)帶動(dòng)子表指針移動(dòng);而如果當(dāng)前工作區(qū)是子表,其指針移動(dòng),父表指針不會(huì)移動(dòng)。實(shí)驗(yàn)指導(dǎo)書P35實(shí)驗(yàn)15任務(wù)1(1)②子表必須對(duì)關(guān)聯(lián)字段索引實(shí)驗(yàn)指導(dǎo)書P35實(shí)驗(yàn)15任務(wù)1(1⑤[additive]一般用于三個(gè)或三個(gè)以上的表之間建立多重關(guān)聯(lián),第2、3…個(gè)關(guān)聯(lián)使用該選項(xiàng)。⑥關(guān)聯(lián)后,當(dāng)前工作區(qū)字段名可以直接使用,子表的字段在使用時(shí)要加“別名.字段名”。⑦setrelatorecn()+Ninto<別名>把記錄號(hào)作關(guān)鍵字建立關(guān)聯(lián)。⑧關(guān)閉或重新打開數(shù)據(jù)表,關(guān)聯(lián)就會(huì)消失。(故稱為臨時(shí)關(guān)系)⑤[additive]一般用于三個(gè)或三個(gè)以上的表之間建立多BBAASele1UseAAindeon字段tagzdSele2UseBBSetrelato字段intoA(或AA)字段BBAASelesele0useAAindexon字段tagzdsele0useBBsetrelationto字段intoAAsele0AABBCC或BBAACC字段1字段2字段13個(gè)表建關(guān)聯(lián)?字段2(見實(shí)驗(yàn)書第16頁任務(wù)1)AABBsetskipto[<別名1>[,<別名2>]…]一般不用用在setrelation命令之后,說明已建關(guān)聯(lián)的性質(zhì)為一對(duì)多關(guān)系。建立表間的一對(duì)多關(guān)系setskipto[<別名1>[,<別名2>]原則:
一般建立“多對(duì)一”或“一對(duì)一”的關(guān)聯(lián);一般如果要求顯示的結(jié)果是按照某個(gè)字段值的順序排列,則包含該字段的表應(yīng)作父表。原則:例:在學(xué)生表和選課表中,顯示成績(jī)<80分的學(xué)生的學(xué)號(hào)、姓名、所學(xué)課程的課程號(hào)和成績(jī)。例:在學(xué)生表和選課表中,顯示成績(jī)<80分的學(xué)生的學(xué)號(hào)、姓名學(xué)生管理數(shù)據(jù)庫(kù)中的表學(xué)生管理數(shù)據(jù)庫(kù)中的表setsafetyoffcloseallclearselect1use學(xué)生aliasxsindexon學(xué)號(hào)tagxhselect2use選課setrelationto學(xué)號(hào)intoxs系統(tǒng)環(huán)境設(shè)置表環(huán)境設(shè)置setsafetyoff系統(tǒng)環(huán)境設(shè)置表環(huán)境設(shè)置listfor成績(jī)<80fields學(xué)號(hào),xs.姓名,課程號(hào),成績(jī)closeallsetsafetyoncancel數(shù)據(jù)處理恢復(fù)系統(tǒng)環(huán)境listfor成績(jī)<80fields學(xué)號(hào),xs.姓名主索引與永久關(guān)系
有些數(shù)據(jù)表格和其他數(shù)據(jù)表格之間存在著某些關(guān)系,我們需要將這些有關(guān)系的數(shù)據(jù)表格納入同一個(gè)數(shù)據(jù)庫(kù)中,并建立其彼此之間的關(guān)系,使用者才能更好的運(yùn)用數(shù)據(jù)表格,更容易達(dá)到數(shù)據(jù)管理的目的。主索引與永久關(guān)系有些數(shù)據(jù)表格和其他數(shù)1)主索引的建立
注意:只能為數(shù)據(jù)庫(kù)表建立主索引,不能為自由表創(chuàng)建主索引。當(dāng)從數(shù)據(jù)庫(kù)中移走有主索引的表而成為自由表時(shí),他們的主關(guān)鍵字將會(huì)隨之消失。1)主索引的建立注意:只能為數(shù)據(jù)庫(kù)表建立主索引,不能為自由表2)永久關(guān)系和臨時(shí)關(guān)系
永久性關(guān)系建立在數(shù)據(jù)庫(kù)本身,只要數(shù)據(jù)庫(kù)存在,永久關(guān)系就存在,不會(huì)因其他命令的執(zhí)行而消失。2)永久關(guān)系和臨時(shí)關(guān)系永久性關(guān)系建立在數(shù)據(jù)庫(kù)本身,只在“數(shù)據(jù)庫(kù)設(shè)計(jì)器”窗口中,兩個(gè)數(shù)據(jù)表格之間的連線,就是“永久性關(guān)系”。
(見教科書90頁圖5.3)
字段之間的關(guān)系(不管是永久性的還是臨時(shí)性的),都是要靠索引來達(dá)成的,也就是說,某個(gè)字段欲建立關(guān)系,需先以此字段的內(nèi)容建立索引,再利用此索引建立關(guān)系。
在“數(shù)據(jù)庫(kù)設(shè)計(jì)器”窗口中,兩個(gè)數(shù)據(jù)表格之間的連線,就表之間的關(guān)系表之間的關(guān)系注意:建立“永久性關(guān)系”的父表必須以關(guān)鍵字建立主索引或侯選索引,而子表則可以以關(guān)鍵字建立任意類型的索引(一對(duì)一或一對(duì)多)。 而建立“臨時(shí)關(guān)系”的父表可以不需建立索引,只需子表以關(guān)鍵字建立任意類型的索引即可(一對(duì)一或多對(duì)一)。注意:建立“永久性關(guān)系”的父表必須以關(guān)鍵字建立主索引或侯選索永久關(guān)系連線的作用是在數(shù)據(jù)表格作“更新”、“刪除”、“新增”等動(dòng)作時(shí),對(duì)表格做一個(gè)檢查的動(dòng)作,以符合某些規(guī)則。(而存儲(chǔ)這些規(guī)則的地方就是所謂的“參考完整性”(RI)。)永久關(guān)系連線的作用是在數(shù)據(jù)表格作“更新”、“刪除”
在數(shù)據(jù)庫(kù)中的表建立永久關(guān)系后,可以設(shè)置管理相關(guān)記錄的規(guī)則。這些規(guī)則可以控制相關(guān)表中記錄的插入、刪除或更新操作。見書P91表5.5
設(shè)置參照完整性(見教科書90-91頁)在數(shù)據(jù)庫(kù)中的表建立永久關(guān)系后,可以設(shè)置管理相關(guān)記錄數(shù)據(jù)庫(kù)表之間創(chuàng)建的永久關(guān)系保存在()中。A)數(shù)據(jù)庫(kù)表B)數(shù)據(jù)庫(kù)C)表設(shè)計(jì)器D)數(shù)據(jù)環(huán)境設(shè)計(jì)器命令SELECT0的功能是()A)隨機(jī)選擇一個(gè)空閑工作區(qū) B)選擇區(qū)號(hào)最大的空閑工作區(qū)C)選擇當(dāng)前工作區(qū)號(hào)加1的工作區(qū) D)選擇區(qū)號(hào)最小的空閑工作區(qū)建立兩個(gè)數(shù)據(jù)庫(kù)表的永久關(guān)系,要求()A)兩個(gè)表都必須索引 B)兩個(gè)表都不要索引C)只有父表必須索引,子表可以不需要索引D)只有子表必須索引,父表可以不需要索引下列敘述中,正確的是()。A)一個(gè)工作區(qū)中只能打開一個(gè)表文件,打開新的表文件后,原來所打開的表文件自動(dòng)關(guān)閉B)一個(gè)表文件可以在不同的工作區(qū)同時(shí)打開,并且表別名也相同C)一個(gè)工作區(qū)中可以同時(shí)打開多個(gè)表文件D)命令USE可以關(guān)閉所有工作區(qū)打開的表文件Use關(guān)閉當(dāng)前工作區(qū)的數(shù)據(jù)表Clearall關(guān)閉所有工作區(qū)的數(shù)據(jù)表,清除內(nèi)存變量,并將當(dāng)前工作區(qū)置為1號(hào)工作區(qū)Closeall關(guān)閉所有文件職工工資數(shù)據(jù)表按基本工資字段建立降序索引,然后執(zhí)行GOTOP命令,此時(shí)當(dāng)前記錄指針指向的記錄是()。A)1號(hào)記錄 B)基本工資最少的記錄C)基本工資最多的記錄 D)不能確定下次課課前用于復(fù)習(xí)回顧如果在表之間的聯(lián)系中設(shè)置了參照完整性規(guī)則,并在刪除規(guī)則中選擇了“限制”,則當(dāng)刪除父表中的記錄時(shí),系統(tǒng)將如何處理?()(A)不做參照完整性檢查(B)不準(zhǔn)刪除父表中的記錄(C)自動(dòng)刪除子表中所有相關(guān)的記錄(D)若子表中有相關(guān)記錄,則禁止刪除父表中記錄數(shù)據(jù)庫(kù)表之間創(chuàng)建的永久關(guān)系保存在()中。命令SELEVisualFoxpro6.0程序設(shè)計(jì)基礎(chǔ)重慶工商大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)基礎(chǔ)教研室VisualFoxpro6.0程序設(shè)計(jì)基礎(chǔ)重慶工商大學(xué)計(jì)56數(shù)據(jù)表的分類排序
命令格式sortto<文件名>on<字段1>[/a][/d][/c]……產(chǎn)生的表是關(guān)閉的(教科書P73)數(shù)據(jù)表的分類排序命令格式sortto<文件名分類排序有什么缺點(diǎn)數(shù)據(jù)冗余無法自動(dòng)更新分類排序有什么缺點(diǎn)數(shù)據(jù)冗余無法自動(dòng)更新數(shù)據(jù)表的索引排序
索引是按索引關(guān)鍵字表達(dá)式的值使數(shù)據(jù)表中的記錄有序排列的一種技術(shù),在VisualFoxPro系統(tǒng)中是借助于索引文件實(shí)現(xiàn)的。1、什么是索引索引關(guān)鍵字的值、記錄號(hào)(教科書P74)數(shù)據(jù)表的索引排序索引是按索引關(guān)鍵字表達(dá)式的值使數(shù)VisualFoxPro系統(tǒng)提供了四種不同的索引類型,它們分別是:2、索引的類型VisualFoxPro系統(tǒng)提供了四種不同的索引主索引:僅適用于數(shù)據(jù)庫(kù)表,不允許關(guān)鍵字段有重復(fù)值,一個(gè)數(shù)據(jù)表只能建一個(gè)主索引。候選索引:不允許索引關(guān)鍵字段有重復(fù)值普通索引:最常用的索引類型,無任何限制唯一索引:允許索引關(guān)鍵字段有重復(fù)值
主索引:僅適用于數(shù)據(jù)庫(kù)表,不允許關(guān)鍵字段有重復(fù)值,一個(gè)數(shù)據(jù)表VisualFoxPro系統(tǒng)支持單索引文件(.idx)和復(fù)合索引文件(.cdx)。3、索引文件的類型3、索引文件的類型(1)單索引文件(略)
單索引文件是每個(gè)索引存放在一個(gè)獨(dú)立的文件(.idx)中。(2)結(jié)構(gòu)化復(fù)合索引文件
結(jié)構(gòu)化復(fù)合索引文件(.cdx)可以在同一個(gè)文件中包含多個(gè)索引,其中每個(gè)索引稱為索引標(biāo)識(shí)。
(1)單索引文件(略)(2)結(jié)構(gòu)化復(fù)合索引文件更重要的是,對(duì)于結(jié)構(gòu)復(fù)合索引,無論何時(shí)打開表文件,該索引都會(huì)自動(dòng)打開。
其文件名與表名相同,一個(gè)表文件只產(chǎn)生一個(gè)結(jié)構(gòu)化復(fù)合索引文件。(3)獨(dú)立復(fù)合索引文件(略)更重要的是,對(duì)于結(jié)構(gòu)復(fù)合索引,無論何時(shí)打開表文件,該4、索引的建立(教科書P75)Indexon<索引關(guān)鍵字表達(dá)式>tag<索引標(biāo)識(shí)名>[ascending|descending]……自動(dòng)產(chǎn)生與表同名的.CDX文件結(jié)構(gòu)化復(fù)合索引文件的建立(命令方式)4、索引的建立(教科書P75)Indexon<索引特別注意:
建立索引時(shí),當(dāng)<索引關(guān)鍵字表達(dá)式>涉及到兩個(gè)或兩個(gè)以上的不同類型的字段時(shí):1)順序若相同,則將非字符型轉(zhuǎn)換為字符型,然后用“+”連接成一個(gè)字符表達(dá)式。特別注意:2)順序若不同,則以字符型字段的順序?yàn)闇?zhǔn),若數(shù)字型字段的順序與字符型不同,則用一個(gè)較大數(shù)減去該字段,再轉(zhuǎn)化為字符型;若日期型字段的順序與字符型不同,則用一個(gè)較大的日期減去該字段,再轉(zhuǎn)化為字符型,然后用“+”連接成一個(gè)字符表達(dá)式。2)順序若不同,則以字符型字段的順序?yàn)闇?zhǔn),若數(shù)字型字段的順序【例】就學(xué)生表建立結(jié)構(gòu)復(fù)合索引文件,其中包含2個(gè)索引:(1)按學(xué)號(hào)的升序排列,編號(hào)相同的記錄只顯示第一條。(2)先按性別升序,性別相同再按入學(xué)成績(jī)降序排列。
USE學(xué)生INDEXON學(xué)號(hào)TAGsy1UNIQUEINDEXON性別+STR(1000-入學(xué)成績(jī))TAGsy2【例】就學(xué)生表建立結(jié)構(gòu)復(fù)合索引文件,其中包含2個(gè)索引:在表設(shè)計(jì)器中建立索引表設(shè)計(jì)器中的“索引”選項(xiàng)卡在表設(shè)計(jì)器中建立索引表設(shè)計(jì)器中的“索引”選項(xiàng)卡5、索引的使用一個(gè)表文件可以建立多個(gè)索引,在操作中可以同時(shí)打開多個(gè)索引,但是任何時(shí)候只有一個(gè)索引起作用。
索引依賴于表文件而存在,它隨表的關(guān)閉而自動(dòng)關(guān)閉。5、索引的使用一個(gè)表文件可以建立多個(gè)索引,在操作中可
當(dāng)前起作用的索引標(biāo)識(shí)稱為主控索引。
要使用索引必須滿足以下條件:
打開表;確定主控索引;
當(dāng)前起作用的索引標(biāo)識(shí)稱為主控索引。
setorderto[[tag]<索引標(biāo)識(shí)名>](1)確定主控索引命令格式:(教科書P77)(2)刪除索引deletetagall|<索引標(biāo)識(shí)1>……(3)索引更新自動(dòng)更新setorderto[[tag]<索引標(biāo)識(shí)使用索引文件后,雖然表中各記錄的物理順序并未改變。但記錄指針不再按物理順序移動(dòng),而是按主控索引文件中記錄的邏輯順序移動(dòng),于是整個(gè)表中的記錄是按索引關(guān)鍵表達(dá)式值排序的效果。使用索引文件時(shí),還要特別注意以下幾點(diǎn):
(1)在使用GO命令時(shí),GO<數(shù)值表達(dá)式>使記錄指針指向具體的物理記錄號(hào),而與索引無關(guān),而GOTOP|BOTTOM將使記錄指針指向邏輯首或邏輯尾記錄,這時(shí)GOTOP不再等同于GO1。(2)SKIP命令按邏輯順序移動(dòng)記錄指針。(3)表被打開后,記錄指針位于TOP位置。使用索引文件后,雖然表中各記錄的物理順序并未改變【例】當(dāng)索引起作用時(shí),分析記錄指針的移動(dòng)規(guī)律。
USE學(xué)生INDEXON入學(xué)成績(jī)TAGsy3GO6?RECNO(),姓名&&顯示6李勤奮SKIP?RECNO(),姓名&&顯示5歐陽天地【例】當(dāng)索引起作用時(shí),分析記錄指針的移動(dòng)規(guī)律。復(fù)合結(jié)構(gòu)索引文件的類型名稱是()A)PJT B)PRG C)CDX D)MEM不允許字段值出現(xiàn)重復(fù)的索引是()。
A)侯選索引和主索引
B)普通索引和惟一索引C)惟一索引和主索引
D)惟一索引自由表gz.dbf有姓名/C/8、出生年月/D、基本工資/N/6/2等字段,要建立以“姓名、基本工資”兩字段的組合索引,其索引關(guān)鍵字表達(dá)式是()。姓名+基本工資(B)“姓名”+“基本工資”(C)“姓名”+基本工資(D)姓名+str(基本工資,6,2)有數(shù)據(jù)表文件CJ.DBF,按姓名(C,8)的升序,上機(jī)成績(jī)(N,6,2)的降序建立索引,正確的命令是()。A.INDEXON姓名-上機(jī)成績(jī)TAGCJIDXB.INDEXON姓名+STR(-上機(jī)成績(jī),6,2)TAGCJIDXC.INDEXON姓名+STR(1000-上機(jī)成績(jī))TAGCJIDXD.INDEXON姓名/A,上機(jī)成績(jī)/DTAGCJIDX某數(shù)據(jù)表有字段:學(xué)號(hào)/C、生日/D、成績(jī)/N等。要建立學(xué)號(hào)、成績(jī)、生日的組合索引,其索引關(guān)鍵字表達(dá)式是()。A)學(xué)號(hào)+成績(jī)+生日B)"學(xué)號(hào)"+"成績(jī)"+"生日"C)學(xué)號(hào)+STR(成績(jī),5,1)+STR(生日,8)D)學(xué)號(hào)+STR(成績(jī),5,1)+DTOC(生日,1)復(fù)合結(jié)構(gòu)索引文件的類型名稱是()不允許字段值出現(xiàn)重多表操作
若要使用多個(gè)表,就要使用多個(gè)工作區(qū)。一個(gè)工作區(qū)是一個(gè)編號(hào)區(qū)域,它標(biāo)識(shí)一個(gè)已打開的表。在應(yīng)用程序中通常通過使用工作區(qū)號(hào)和工作區(qū)別名來標(biāo)識(shí)。
(教科書P82)多表操作若要使用多個(gè)表,就要使用多個(gè)工作區(qū)。一個(gè)工1、工作區(qū)號(hào)
VisualfoxPro提供了32767個(gè)工作區(qū),編號(hào)從1到32767。
每個(gè)工作區(qū)只允許打開一個(gè)表,一個(gè)表只能在一個(gè)工作區(qū)打開,系統(tǒng)默認(rèn)的工作區(qū)為1號(hào)工作區(qū)。
1、工作區(qū)號(hào)2、別名(1)前十個(gè)工作區(qū)除了可用1~10來標(biāo)識(shí)外,還可用A~J來表示工作區(qū)的別名。(2)定義別名use<文件名>alias<別名>格式:2、別名use<文件名>alias<別名>格式:3、選擇當(dāng)前工作區(qū)select<工作區(qū)號(hào)>|<別名>如沒有給表定義別名,則可以用數(shù)據(jù)表名作為別名。
sele0表示選定當(dāng)前未使用的最小號(hào)工作區(qū)。use<表名>in<工作區(qū)號(hào)>|<別名>不改變當(dāng)前工作區(qū)3、選擇當(dāng)前工作區(qū)select<工作區(qū)號(hào)>|<別名>如【例】在不同的工作區(qū)分別打開學(xué)生.dbf、選課.dbf和課程.dbf3個(gè)表,命令序列如下:CLOSEALL&&關(guān)閉所有打開的文件SELECT2USE學(xué)生&&選擇2號(hào)工作區(qū)打開學(xué)生表SELECTCUSE課程&&選擇3號(hào)工作區(qū)打開課程表USE選課IN5&&在5號(hào)工作區(qū)打開選課表【例】在不同的工作區(qū)分別打開學(xué)生.dbf、選課.dbf和課引用非當(dāng)前工作區(qū)表的字段必須冠以別名,引用格式為:
別名.字段名別名->字段名引用非當(dāng)前工作區(qū)表的字段必須冠以別名,引用格式【例】在1號(hào)工作區(qū)打開學(xué)生表,在2號(hào)工作區(qū)打開選課表;當(dāng)前工作區(qū)為1號(hào),顯示選課表中當(dāng)前記錄的學(xué)號(hào)、姓名、課程號(hào)和成績(jī)字段的值。命令序列如下:(演示,并移動(dòng)指針)CLOSEALL&&關(guān)閉所有打開的文件SELECT1USE學(xué)生&&選擇1號(hào)工作區(qū)打開學(xué)生表USE選課IN2&&在2號(hào)工作區(qū)打開選課表,當(dāng)前工作區(qū)為1號(hào)?學(xué)號(hào),姓名,選課.課程號(hào),選課->成績(jī)【例】在1號(hào)工作區(qū)打開學(xué)生表,在2號(hào)工作區(qū)打開選課表;當(dāng)前工學(xué)生管理數(shù)據(jù)庫(kù)中的表學(xué)生管理數(shù)據(jù)庫(kù)中的表
bof(<工作區(qū)>):文件開始的測(cè)試函數(shù)
eof(<工作區(qū)>):文件結(jié)束的測(cè)試函數(shù)
recno(<工作區(qū)>):返回當(dāng)前記錄號(hào)
sele():返回當(dāng)前工作區(qū)區(qū)號(hào)4、工作區(qū)常用函數(shù)bof(<工作區(qū)>):文件開始的測(cè)試函數(shù)4、工作區(qū)常用函數(shù)建立表間的關(guān)聯(lián)關(guān)系
(臨時(shí)關(guān)系)
要在兩個(gè)或兩個(gè)以上的表之間進(jìn)行數(shù)據(jù)操作時(shí),通常有關(guān)聯(lián)和連接兩種方法。建立表間的關(guān)聯(lián)關(guān)系
(臨時(shí)關(guān)系)要在兩個(gè)或兩個(gè)以1、關(guān)聯(lián)的概念每個(gè)工作區(qū)打開的表中都存在一個(gè)記錄指針,指針指向的記錄是當(dāng)前記錄,如果表之間沒有關(guān)系,則各個(gè)表的記錄指針相互獨(dú)立,即當(dāng)前工作區(qū)指針移動(dòng)時(shí),其他工作區(qū)的指針不移動(dòng)。所謂關(guān)聯(lián),就是讓不同工作區(qū)數(shù)據(jù)表的記錄指針建立一種臨時(shí)的聯(lián)動(dòng)關(guān)系。使一個(gè)表的記錄指針移動(dòng)時(shí),能帶動(dòng)另一個(gè)表的記錄指針按一定的條件作相應(yīng)地移動(dòng)。前者稱為關(guān)聯(lián)表(主動(dòng)表、父表),后者稱為被關(guān)聯(lián)表(被動(dòng)表、子表)1、關(guān)聯(lián)的概念所謂關(guān)聯(lián),就是讓不同工作區(qū)數(shù)據(jù)表的記錄指針建立關(guān)鍵字為唯一值關(guān)鍵字為唯一值一一關(guān)鍵字為重復(fù)值關(guān)鍵字為唯一值多一關(guān)鍵字為唯一值關(guān)鍵字為重復(fù)值一多關(guān)鍵字為重復(fù)值關(guān)鍵字為重復(fù)值多多父表子表主動(dòng)被動(dòng)關(guān)鍵字為唯一值關(guān)鍵字為唯一值一一關(guān)鍵建立表間的關(guān)聯(lián)建立數(shù)據(jù)庫(kù)文件中表間關(guān)聯(lián),一是要保證建立關(guān)系的表具有相同的字段值(關(guān)鍵字值);二是子表要以該字段建立索引。建立表間的關(guān)聯(lián)建立兩個(gè)表之間的“一對(duì)一”和“多對(duì)一”關(guān)聯(lián)的步驟:①找到兩個(gè)表中能夠建立關(guān)聯(lián)的字段(字段名可以不同,類型、寬度、小數(shù)位數(shù)必須相同)②根據(jù)關(guān)鍵字值確定父表,再確定子表;③先打開子表,建立索引;④最后打開父表建立關(guān)聯(lián)。有重復(fù)值為父表建立兩個(gè)表之間的“一對(duì)一”和“多對(duì)一”關(guān)聯(lián)的步驟:有setrelato[<表達(dá)式1>into<別名1>,…,<表達(dá)式N>into<別名N>][additive]說明:①發(fā)出關(guān)聯(lián)命令所在工作區(qū)的表是父表建立關(guān)聯(lián)的命令(教科書P83)setrelato[<表達(dá)式1>into②子表必須對(duì)關(guān)聯(lián)字段索引③<表達(dá)式>是關(guān)聯(lián)的關(guān)鍵字
不同名的字段只要類型和數(shù)值相同也可建立關(guān)聯(lián)。④關(guān)聯(lián)后,父表指針移動(dòng)帶動(dòng)子表指針移動(dòng);而如果當(dāng)前工作區(qū)是子表,其指針移動(dòng),父表指針不會(huì)移動(dòng)。實(shí)驗(yàn)指導(dǎo)書P35實(shí)驗(yàn)15任務(wù)1(1)②子表必須對(duì)關(guān)聯(lián)字段索引實(shí)驗(yàn)指導(dǎo)書P35實(shí)驗(yàn)15任務(wù)1(1⑤[additive]一般用于三個(gè)或三個(gè)以上的表之間建立多重關(guān)聯(lián),第2、3…個(gè)關(guān)聯(lián)使用該選項(xiàng)。⑥關(guān)聯(lián)后,當(dāng)前工作區(qū)字段名可以直接使用,子表的字段在使用時(shí)要加“別名.字段名”。⑦setrelatorecn()+Ninto<別名>把記錄號(hào)作關(guān)鍵字建立關(guān)聯(lián)。⑧關(guān)閉或重新打開數(shù)據(jù)表,關(guān)聯(lián)就會(huì)消失。(故稱為臨時(shí)關(guān)系)⑤[additive]一般用于三個(gè)或三個(gè)以上的表之間建立多BBAASele1UseAAindeon字段tagzdSele2UseBBSetrelato字段intoA(或AA)字段BBAASelesele0useAAindexon字段tagzdsele0useBBsetrelationto字段intoAAsele0AABBCC或BBAACC字段1字段2字段13個(gè)表建關(guān)聯(lián)?字段2(見實(shí)驗(yàn)書第16頁任務(wù)1)AABBsetskipto[<別名1>[,<別名2>]…]一般不用用在setrelation命令之后,說明已建關(guān)聯(lián)的性質(zhì)為一對(duì)多關(guān)系。建立表間的一對(duì)多關(guān)系setskipto[<別名1>[,<別名2>]原則:
一般建立“多對(duì)一”或“一對(duì)一”的關(guān)聯(lián);一般如果要求顯示的結(jié)果是按照某個(gè)字段值的順序排列,則包含該字段的表應(yīng)作父表。原則:例:在學(xué)生表和選課表中,顯示成績(jī)<80分的學(xué)生的學(xué)號(hào)、姓名、所學(xué)課程的課程號(hào)和成績(jī)。例:在學(xué)生表和選課表中,顯示成績(jī)<80分的學(xué)生的學(xué)號(hào)、姓名學(xué)生管理數(shù)據(jù)庫(kù)中的表學(xué)生管理數(shù)據(jù)庫(kù)中的表setsafetyoffcloseallclearselect1use學(xué)生aliasxsindexon學(xué)號(hào)tagxhselect2use選課setrelationto學(xué)號(hào)intoxs系統(tǒng)環(huán)境設(shè)置表環(huán)境設(shè)置setsafetyoff系統(tǒng)環(huán)境設(shè)置表環(huán)境設(shè)置listfor成績(jī)<80fields學(xué)號(hào),xs.姓名,課程號(hào),成績(jī)closeallsetsafetyoncancel數(shù)據(jù)處理恢復(fù)系統(tǒng)環(huán)境listfor成績(jī)<80fields學(xué)號(hào),xs.姓名主索引與永久關(guān)系
有些數(shù)據(jù)表格和其他數(shù)據(jù)表格之間存在著
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 糕點(diǎn)店裝修粉刷施工協(xié)議
- 建筑設(shè)計(jì)科技合同管理辦法
- 公路隧道照明工程合同范本
- 農(nóng)業(yè)大棚外保溫施工合同
- 電視連續(xù)劇演員招聘合同
- 2025年度VOC廢氣處理設(shè)備定期檢查與維修合同3篇
- 農(nóng)田水利招投標(biāo)監(jiān)管與優(yōu)化
- 青年旅社施工合同
- 礦山夢(mèng)想鋼管架施工合同
- 高新技術(shù)產(chǎn)業(yè)投標(biāo)響應(yīng)范本
- 南京理工大學(xué)物理化學(xué)試題庫(kù)(含答案)
- 醫(yī)院紀(jì)檢監(jiān)察室工作總結(jié)暨述職報(bào)告課件
- 貴州省銅仁市2022-2023學(xué)年高二上學(xué)期1月期末質(zhì)量監(jiān)測(cè)數(shù)學(xué)試題(含答案詳解)
- 正常分娩產(chǎn)婦護(hù)理查房
- 降低會(huì)陰側(cè)切率的PDCA
- 商業(yè)道德規(guī)范行為準(zhǔn)則
- 人格心理學(xué)配套題庫(kù)
- 制造業(yè)中的生物多樣性和可持續(xù)性
- 保險(xiǎn)公司分公司開業(yè)驗(yàn)收統(tǒng)計(jì)與信息化細(xì)化項(xiàng)目表doc
- 提升國(guó)家語言能力的若干思考
- 四年級(jí)語文硬筆書法比賽方案
評(píng)論
0/150
提交評(píng)論