




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
VisualFoxpro6.0程序設(shè)計基礎(chǔ)重慶工商大學(xué)計算機學(xué)院計算機基礎(chǔ)教研室VisualFoxpro6.0程序設(shè)計基礎(chǔ)重慶工商大學(xué)計1數(shù)據(jù)表的分類排序
命令格式sortto<文件名>on<字段1>[/a][/d][/c]……產(chǎn)生的表是關(guān)閉的(教科書P73)數(shù)據(jù)表的分類排序命令格式sortto<文件名分類排序有什么缺點數(shù)據(jù)冗余無法自動更新分類排序有什么缺點數(shù)據(jù)冗余無法自動更新數(shù)據(jù)表的索引排序
索引是按索引關(guān)鍵字表達(dá)式的值使數(shù)據(jù)表中的記錄有序排列的一種技術(shù),在VisualFoxPro系統(tǒng)中是借助于索引文件實現(xiàn)的。1、什么是索引索引關(guān)鍵字的值、記錄號(教科書P74)數(shù)據(jù)表的索引排序索引是按索引關(guān)鍵字表達(dá)式的值使數(shù)VisualFoxPro系統(tǒng)提供了四種不同的索引類型,它們分別是:2、索引的類型VisualFoxPro系統(tǒng)提供了四種不同的索引主索引:僅適用于數(shù)據(jù)庫表,不允許關(guān)鍵字段有重復(fù)值,一個數(shù)據(jù)表只能建一個主索引。候選索引:不允許索引關(guān)鍵字段有重復(fù)值普通索引:最常用的索引類型,無任何限制唯一索引:允許索引關(guān)鍵字段有重復(fù)值
主索引:僅適用于數(shù)據(jù)庫表,不允許關(guān)鍵字段有重復(fù)值,一個數(shù)據(jù)表VisualFoxPro系統(tǒng)支持單索引文件(.idx)和復(fù)合索引文件(.cdx)。3、索引文件的類型3、索引文件的類型(1)單索引文件(略)
單索引文件是每個索引存放在一個獨立的文件(.idx)中。(2)結(jié)構(gòu)化復(fù)合索引文件
結(jié)構(gòu)化復(fù)合索引文件(.cdx)可以在同一個文件中包含多個索引,其中每個索引稱為索引標(biāo)識。
(1)單索引文件(略)(2)結(jié)構(gòu)化復(fù)合索引文件更重要的是,對于結(jié)構(gòu)復(fù)合索引,無論何時打開表文件,該索引都會自動打開。
其文件名與表名相同,一個表文件只產(chǎn)生一個結(jié)構(gòu)化復(fù)合索引文件。(3)獨立復(fù)合索引文件(略)更重要的是,對于結(jié)構(gòu)復(fù)合索引,無論何時打開表文件,該4、索引的建立(教科書P75)Indexon<索引關(guān)鍵字表達(dá)式>tag<索引標(biāo)識名>[ascending|descending]……自動產(chǎn)生與表同名的.CDX文件結(jié)構(gòu)化復(fù)合索引文件的建立(命令方式)4、索引的建立(教科書P75)Indexon<索引特別注意:
建立索引時,當(dāng)<索引關(guān)鍵字表達(dá)式>涉及到兩個或兩個以上的不同類型的字段時:1)順序若相同,則將非字符型轉(zhuǎn)換為字符型,然后用“+”連接成一個字符表達(dá)式。特別注意:2)順序若不同,則以字符型字段的順序為準(zhǔn),若數(shù)字型字段的順序與字符型不同,則用一個較大數(shù)減去該字段,再轉(zhuǎn)化為字符型;若日期型字段的順序與字符型不同,則用一個較大的日期減去該字段,再轉(zhuǎn)化為字符型,然后用“+”連接成一個字符表達(dá)式。2)順序若不同,則以字符型字段的順序為準(zhǔn),若數(shù)字型字段的順序【例】就學(xué)生表建立結(jié)構(gòu)復(fù)合索引文件,其中包含2個索引:(1)按學(xué)號的升序排列,編號相同的記錄只顯示第一條。(2)先按性別升序,性別相同再按入學(xué)成績降序排列。
USE學(xué)生INDEXON學(xué)號TAGsy1UNIQUEINDEXON性別+STR(1000-入學(xué)成績)TAGsy2【例】就學(xué)生表建立結(jié)構(gòu)復(fù)合索引文件,其中包含2個索引:在表設(shè)計器中建立索引表設(shè)計器中的“索引”選項卡在表設(shè)計器中建立索引表設(shè)計器中的“索引”選項卡5、索引的使用一個表文件可以建立多個索引,在操作中可以同時打開多個索引,但是任何時候只有一個索引起作用。
索引依賴于表文件而存在,它隨表的關(guān)閉而自動關(guān)閉。5、索引的使用一個表文件可以建立多個索引,在操作中可
當(dāng)前起作用的索引標(biāo)識稱為主控索引。
要使用索引必須滿足以下條件:
打開表;確定主控索引;
當(dāng)前起作用的索引標(biāo)識稱為主控索引。
setorderto[[tag]<索引標(biāo)識名>](1)確定主控索引命令格式:(教科書P77)(2)刪除索引deletetagall|<索引標(biāo)識1>……(3)索引更新自動更新setorderto[[tag]<索引標(biāo)識使用索引文件后,雖然表中各記錄的物理順序并未改變。但記錄指針不再按物理順序移動,而是按主控索引文件中記錄的邏輯順序移動,于是整個表中的記錄是按索引關(guān)鍵表達(dá)式值排序的效果。使用索引文件時,還要特別注意以下幾點:
(1)在使用GO命令時,GO<數(shù)值表達(dá)式>使記錄指針指向具體的物理記錄號,而與索引無關(guān),而GOTOP|BOTTOM將使記錄指針指向邏輯首或邏輯尾記錄,這時GOTOP不再等同于GO1。(2)SKIP命令按邏輯順序移動記錄指針。(3)表被打開后,記錄指針位于TOP位置。使用索引文件后,雖然表中各記錄的物理順序并未改變【例】當(dāng)索引起作用時,分析記錄指針的移動規(guī)律。
USE學(xué)生INDEXON入學(xué)成績TAGsy3GO6?RECNO(),姓名&&顯示6李勤奮SKIP?RECNO(),姓名&&顯示5歐陽天地【例】當(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)的升序,上機成績(N,6,2)的降序建立索引,正確的命令是()。A.INDEXON姓名-上機成績TAGCJIDXB.INDEXON姓名+STR(-上機成績,6,2)TAGCJIDXC.INDEXON姓名+STR(1000-上機成績)TAGCJIDXD.INDEXON姓名/A,上機成績/DTAGCJIDX某數(shù)據(jù)表有字段:學(xué)號/C、生日/D、成績/N等。要建立學(xué)號、成績、生日的組合索引,其索引關(guān)鍵字表達(dá)式是()。A)學(xué)號+成績+生日B)"學(xué)號"+"成績"+"生日"C)學(xué)號+STR(成績,5,1)+STR(生日,8)D)學(xué)號+STR(成績,5,1)+DTOC(生日,1)復(fù)合結(jié)構(gòu)索引文件的類型名稱是()不允許字段值出現(xiàn)重多表操作
若要使用多個表,就要使用多個工作區(qū)。一個工作區(qū)是一個編號區(qū)域,它標(biāo)識一個已打開的表。在應(yīng)用程序中通常通過使用工作區(qū)號和工作區(qū)別名來標(biāo)識。
(教科書P82)多表操作若要使用多個表,就要使用多個工作區(qū)。一個工1、工作區(qū)號
VisualfoxPro提供了32767個工作區(qū),編號從1到32767。
每個工作區(qū)只允許打開一個表,一個表只能在一個工作區(qū)打開,系統(tǒng)默認(rèn)的工作區(qū)為1號工作區(qū)。
1、工作區(qū)號2、別名(1)前十個工作區(qū)除了可用1~10來標(biāo)識外,還可用A~J來表示工作區(qū)的別名。(2)定義別名use<文件名>alias<別名>格式:2、別名use<文件名>alias<別名>格式:3、選擇當(dāng)前工作區(qū)select<工作區(qū)號>|<別名>如沒有給表定義別名,則可以用數(shù)據(jù)表名作為別名。
sele0表示選定當(dāng)前未使用的最小號工作區(qū)。use<表名>in<工作區(qū)號>|<別名>不改變當(dāng)前工作區(qū)3、選擇當(dāng)前工作區(qū)select<工作區(qū)號>|<別名>如【例】在不同的工作區(qū)分別打開學(xué)生.dbf、選課.dbf和課程.dbf3個表,命令序列如下:CLOSEALL&&關(guān)閉所有打開的文件SELECT2USE學(xué)生&&選擇2號工作區(qū)打開學(xué)生表SELECTCUSE課程&&選擇3號工作區(qū)打開課程表USE選課IN5&&在5號工作區(qū)打開選課表【例】在不同的工作區(qū)分別打開學(xué)生.dbf、選課.dbf和課引用非當(dāng)前工作區(qū)表的字段必須冠以別名,引用格式為:
別名.字段名別名->字段名引用非當(dāng)前工作區(qū)表的字段必須冠以別名,引用格式【例】在1號工作區(qū)打開學(xué)生表,在2號工作區(qū)打開選課表;當(dāng)前工作區(qū)為1號,顯示選課表中當(dāng)前記錄的學(xué)號、姓名、課程號和成績字段的值。命令序列如下:(演示,并移動指針)CLOSEALL&&關(guān)閉所有打開的文件SELECT1USE學(xué)生&&選擇1號工作區(qū)打開學(xué)生表USE選課IN2&&在2號工作區(qū)打開選課表,當(dāng)前工作區(qū)為1號?學(xué)號,姓名,選課.課程號,選課->成績【例】在1號工作區(qū)打開學(xué)生表,在2號工作區(qū)打開選課表;當(dāng)前工學(xué)生管理數(shù)據(jù)庫中的表學(xué)生管理數(shù)據(jù)庫中的表
bof(<工作區(qū)>):文件開始的測試函數(shù)
eof(<工作區(qū)>):文件結(jié)束的測試函數(shù)
recno(<工作區(qū)>):返回當(dāng)前記錄號
sele():返回當(dāng)前工作區(qū)區(qū)號4、工作區(qū)常用函數(shù)bof(<工作區(qū)>):文件開始的測試函數(shù)4、工作區(qū)常用函數(shù)建立表間的關(guān)聯(lián)關(guān)系
(臨時關(guān)系)
要在兩個或兩個以上的表之間進行數(shù)據(jù)操作時,通常有關(guān)聯(lián)和連接兩種方法。建立表間的關(guān)聯(lián)關(guān)系
(臨時關(guān)系)要在兩個或兩個以1、關(guān)聯(lián)的概念每個工作區(qū)打開的表中都存在一個記錄指針,指針指向的記錄是當(dāng)前記錄,如果表之間沒有關(guān)系,則各個表的記錄指針相互獨立,即當(dāng)前工作區(qū)指針移動時,其他工作區(qū)的指針不移動。所謂關(guān)聯(lián),就是讓不同工作區(qū)數(shù)據(jù)表的記錄指針建立一種臨時的聯(lián)動關(guān)系。使一個表的記錄指針移動時,能帶動另一個表的記錄指針按一定的條件作相應(yīng)地移動。前者稱為關(guān)聯(lián)表(主動表、父表),后者稱為被關(guān)聯(lián)表(被動表、子表)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ù)值多多父表子表主動被動關(guān)鍵字為唯一值關(guān)鍵字為唯一值一一關(guān)鍵建立表間的關(guān)聯(lián)建立數(shù)據(jù)庫文件中表間關(guān)聯(lián),一是要保證建立關(guān)系的表具有相同的字段值(關(guān)鍵字值);二是子表要以該字段建立索引。建立表間的關(guān)聯(lián)建立兩個表之間的“一對一”和“多對一”關(guān)聯(lián)的步驟:①找到兩個表中能夠建立關(guān)聯(lián)的字段(字段名可以不同,類型、寬度、小數(shù)位數(shù)必須相同)②根據(jù)關(guān)鍵字值確定父表,再確定子表;③先打開子表,建立索引;④最后打開父表建立關(guān)聯(lián)。有重復(fù)值為父表建立兩個表之間的“一對一”和“多對一”關(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②子表必須對關(guān)聯(lián)字段索引③<表達(dá)式>是關(guān)聯(lián)的關(guān)鍵字
不同名的字段只要類型和數(shù)值相同也可建立關(guān)聯(lián)。④關(guān)聯(lián)后,父表指針移動帶動子表指針移動;而如果當(dāng)前工作區(qū)是子表,其指針移動,父表指針不會移動。實驗指導(dǎo)書P35實驗15任務(wù)1(1)②子表必須對關(guān)聯(lián)字段索引實驗指導(dǎo)書P35實驗15任務(wù)1(1⑤[additive]一般用于三個或三個以上的表之間建立多重關(guān)聯(lián),第2、3…個關(guān)聯(lián)使用該選項。⑥關(guān)聯(lián)后,當(dāng)前工作區(qū)字段名可以直接使用,子表的字段在使用時要加“別名.字段名”。⑦setrelatorecn()+Ninto<別名>把記錄號作關(guān)鍵字建立關(guān)聯(lián)。⑧關(guān)閉或重新打開數(shù)據(jù)表,關(guān)聯(lián)就會消失。(故稱為臨時關(guān)系)⑤[additive]一般用于三個或三個以上的表之間建立多BBAASele1UseAAindeon字段tagzdSele2UseBBSetrelato字段intoA(或AA)字段BBAASelesele0useAAindexon字段tagzdsele0useBBsetrelationto字段intoAAsele0AABBCC或BBAACC字段1字段2字段13個表建關(guān)聯(lián)?字段2(見實驗書第16頁任務(wù)1)AABBsetskipto[<別名1>[,<別名2>]…]一般不用用在setrelation命令之后,說明已建關(guān)聯(lián)的性質(zhì)為一對多關(guān)系。建立表間的一對多關(guān)系setskipto[<別名1>[,<別名2>]原則:
一般建立“多對一”或“一對一”的關(guān)聯(lián);一般如果要求顯示的結(jié)果是按照某個字段值的順序排列,則包含該字段的表應(yīng)作父表。原則:例:在學(xué)生表和選課表中,顯示成績<80分的學(xué)生的學(xué)號、姓名、所學(xué)課程的課程號和成績。例:在學(xué)生表和選課表中,顯示成績<80分的學(xué)生的學(xué)號、姓名學(xué)生管理數(shù)據(jù)庫中的表學(xué)生管理數(shù)據(jù)庫中的表setsafetyoffcloseallclearselect1use學(xué)生aliasxsindexon學(xué)號tagxhselect2use選課setrelationto學(xué)號intoxs系統(tǒng)環(huán)境設(shè)置表環(huán)境設(shè)置setsafetyoff系統(tǒng)環(huán)境設(shè)置表環(huán)境設(shè)置listfor成績<80fields學(xué)號,xs.姓名,課程號,成績closeallsetsafetyoncancel數(shù)據(jù)處理恢復(fù)系統(tǒng)環(huán)境listfor成績<80fields學(xué)號,xs.姓名主索引與永久關(guān)系
有些數(shù)據(jù)表格和其他數(shù)據(jù)表格之間存在著某些關(guān)系,我們需要將這些有關(guān)系的數(shù)據(jù)表格納入同一個數(shù)據(jù)庫中,并建立其彼此之間的關(guān)系,使用者才能更好的運用數(shù)據(jù)表格,更容易達(dá)到數(shù)據(jù)管理的目的。主索引與永久關(guān)系有些數(shù)據(jù)表格和其他數(shù)1)主索引的建立
注意:只能為數(shù)據(jù)庫表建立主索引,不能為自由表創(chuàng)建主索引。當(dāng)從數(shù)據(jù)庫中移走有主索引的表而成為自由表時,他們的主關(guān)鍵字將會隨之消失。1)主索引的建立注意:只能為數(shù)據(jù)庫表建立主索引,不能為自由表2)永久關(guān)系和臨時關(guān)系
永久性關(guān)系建立在數(shù)據(jù)庫本身,只要數(shù)據(jù)庫存在,永久關(guān)系就存在,不會因其他命令的執(zhí)行而消失。2)永久關(guān)系和臨時關(guān)系永久性關(guān)系建立在數(shù)據(jù)庫本身,只在“數(shù)據(jù)庫設(shè)計器”窗口中,兩個數(shù)據(jù)表格之間的連線,就是“永久性關(guān)系”。
(見教科書90頁圖5.3)
字段之間的關(guān)系(不管是永久性的還是臨時性的),都是要靠索引來達(dá)成的,也就是說,某個字段欲建立關(guān)系,需先以此字段的內(nèi)容建立索引,再利用此索引建立關(guān)系。
在“數(shù)據(jù)庫設(shè)計器”窗口中,兩個數(shù)據(jù)表格之間的連線,就表之間的關(guān)系表之間的關(guān)系注意:建立“永久性關(guān)系”的父表必須以關(guān)鍵字建立主索引或侯選索引,而子表則可以以關(guān)鍵字建立任意類型的索引(一對一或一對多)。 而建立“臨時關(guān)系”的父表可以不需建立索引,只需子表以關(guān)鍵字建立任意類型的索引即可(一對一或多對一)。注意:建立“永久性關(guān)系”的父表必須以關(guān)鍵字建立主索引或侯選索永久關(guān)系連線的作用是在數(shù)據(jù)表格作“更新”、“刪除”、“新增”等動作時,對表格做一個檢查的動作,以符合某些規(guī)則。(而存儲這些規(guī)則的地方就是所謂的“參考完整性”(RI)。)永久關(guān)系連線的作用是在數(shù)據(jù)表格作“更新”、“刪除”
在數(shù)據(jù)庫中的表建立永久關(guān)系后,可以設(shè)置管理相關(guān)記錄的規(guī)則。這些規(guī)則可以控制相關(guān)表中記錄的插入、刪除或更新操作。見書P91表5.5
設(shè)置參照完整性(見教科書90-91頁)在數(shù)據(jù)庫中的表建立永久關(guān)系后,可以設(shè)置管理相關(guān)記錄數(shù)據(jù)庫表之間創(chuàng)建的永久關(guān)系保存在()中。A)數(shù)據(jù)庫表B)數(shù)據(jù)庫C)表設(shè)計器D)數(shù)據(jù)環(huán)境設(shè)計器命令SELECT0的功能是()A)隨機選擇一個空閑工作區(qū) B)選擇區(qū)號最大的空閑工作區(qū)C)選擇當(dāng)前工作區(qū)號加1的工作區(qū) D)選擇區(qū)號最小的空閑工作區(qū)建立兩個數(shù)據(jù)庫表的永久關(guān)系,要求()A)兩個表都必須索引 B)兩個表都不要索引C)只有父表必須索引,子表可以不需要索引D)只有子表必須索引,父表可以不需要索引下列敘述中,正確的是()。A)一個工作區(qū)中只能打開一個表文件,打開新的表文件后,原來所打開的表文件自動關(guān)閉B)一個表文件可以在不同的工作區(qū)同時打開,并且表別名也相同C)一個工作區(qū)中可以同時打開多個表文件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號工作區(qū)Closeall關(guān)閉所有文件職工工資數(shù)據(jù)表按基本工資字段建立降序索引,然后執(zhí)行GOTOP命令,此時當(dāng)前記錄指針指向的記錄是()。A)1號記錄 B)基本工資最少的記錄C)基本工資最多的記錄 D)不能確定下次課課前用于復(fù)習(xí)回顧如果在表之間的聯(lián)系中設(shè)置了參照完整性規(guī)則,并在刪除規(guī)則中選擇了“限制”,則當(dāng)刪除父表中的記錄時,系統(tǒng)將如何處理?()(A)不做參照完整性檢查(B)不準(zhǔn)刪除父表中的記錄(C)自動刪除子表中所有相關(guān)的記錄(D)若子表中有相關(guān)記錄,則禁止刪除父表中記錄數(shù)據(jù)庫表之間創(chuàng)建的永久關(guān)系保存在()中。命令SELEVisualFoxpro6.0程序設(shè)計基礎(chǔ)重慶工商大學(xué)計算機學(xué)院計算機基礎(chǔ)教研室VisualFoxpro6.0程序設(shè)計基礎(chǔ)重慶工商大學(xué)計56數(shù)據(jù)表的分類排序
命令格式sortto<文件名>on<字段1>[/a][/d][/c]……產(chǎn)生的表是關(guān)閉的(教科書P73)數(shù)據(jù)表的分類排序命令格式sortto<文件名分類排序有什么缺點數(shù)據(jù)冗余無法自動更新分類排序有什么缺點數(shù)據(jù)冗余無法自動更新數(shù)據(jù)表的索引排序
索引是按索引關(guān)鍵字表達(dá)式的值使數(shù)據(jù)表中的記錄有序排列的一種技術(shù),在VisualFoxPro系統(tǒng)中是借助于索引文件實現(xiàn)的。1、什么是索引索引關(guān)鍵字的值、記錄號(教科書P74)數(shù)據(jù)表的索引排序索引是按索引關(guān)鍵字表達(dá)式的值使數(shù)VisualFoxPro系統(tǒng)提供了四種不同的索引類型,它們分別是:2、索引的類型VisualFoxPro系統(tǒng)提供了四種不同的索引主索引:僅適用于數(shù)據(jù)庫表,不允許關(guān)鍵字段有重復(fù)值,一個數(shù)據(jù)表只能建一個主索引。候選索引:不允許索引關(guān)鍵字段有重復(fù)值普通索引:最常用的索引類型,無任何限制唯一索引:允許索引關(guān)鍵字段有重復(fù)值
主索引:僅適用于數(shù)據(jù)庫表,不允許關(guān)鍵字段有重復(fù)值,一個數(shù)據(jù)表VisualFoxPro系統(tǒng)支持單索引文件(.idx)和復(fù)合索引文件(.cdx)。3、索引文件的類型3、索引文件的類型(1)單索引文件(略)
單索引文件是每個索引存放在一個獨立的文件(.idx)中。(2)結(jié)構(gòu)化復(fù)合索引文件
結(jié)構(gòu)化復(fù)合索引文件(.cdx)可以在同一個文件中包含多個索引,其中每個索引稱為索引標(biāo)識。
(1)單索引文件(略)(2)結(jié)構(gòu)化復(fù)合索引文件更重要的是,對于結(jié)構(gòu)復(fù)合索引,無論何時打開表文件,該索引都會自動打開。
其文件名與表名相同,一個表文件只產(chǎn)生一個結(jié)構(gòu)化復(fù)合索引文件。(3)獨立復(fù)合索引文件(略)更重要的是,對于結(jié)構(gòu)復(fù)合索引,無論何時打開表文件,該4、索引的建立(教科書P75)Indexon<索引關(guān)鍵字表達(dá)式>tag<索引標(biāo)識名>[ascending|descending]……自動產(chǎn)生與表同名的.CDX文件結(jié)構(gòu)化復(fù)合索引文件的建立(命令方式)4、索引的建立(教科書P75)Indexon<索引特別注意:
建立索引時,當(dāng)<索引關(guān)鍵字表達(dá)式>涉及到兩個或兩個以上的不同類型的字段時:1)順序若相同,則將非字符型轉(zhuǎn)換為字符型,然后用“+”連接成一個字符表達(dá)式。特別注意:2)順序若不同,則以字符型字段的順序為準(zhǔn),若數(shù)字型字段的順序與字符型不同,則用一個較大數(shù)減去該字段,再轉(zhuǎn)化為字符型;若日期型字段的順序與字符型不同,則用一個較大的日期減去該字段,再轉(zhuǎn)化為字符型,然后用“+”連接成一個字符表達(dá)式。2)順序若不同,則以字符型字段的順序為準(zhǔn),若數(shù)字型字段的順序【例】就學(xué)生表建立結(jié)構(gòu)復(fù)合索引文件,其中包含2個索引:(1)按學(xué)號的升序排列,編號相同的記錄只顯示第一條。(2)先按性別升序,性別相同再按入學(xué)成績降序排列。
USE學(xué)生INDEXON學(xué)號TAGsy1UNIQUEINDEXON性別+STR(1000-入學(xué)成績)TAGsy2【例】就學(xué)生表建立結(jié)構(gòu)復(fù)合索引文件,其中包含2個索引:在表設(shè)計器中建立索引表設(shè)計器中的“索引”選項卡在表設(shè)計器中建立索引表設(shè)計器中的“索引”選項卡5、索引的使用一個表文件可以建立多個索引,在操作中可以同時打開多個索引,但是任何時候只有一個索引起作用。
索引依賴于表文件而存在,它隨表的關(guān)閉而自動關(guān)閉。5、索引的使用一個表文件可以建立多個索引,在操作中可
當(dāng)前起作用的索引標(biāo)識稱為主控索引。
要使用索引必須滿足以下條件:
打開表;確定主控索引;
當(dāng)前起作用的索引標(biāo)識稱為主控索引。
setorderto[[tag]<索引標(biāo)識名>](1)確定主控索引命令格式:(教科書P77)(2)刪除索引deletetagall|<索引標(biāo)識1>……(3)索引更新自動更新setorderto[[tag]<索引標(biāo)識使用索引文件后,雖然表中各記錄的物理順序并未改變。但記錄指針不再按物理順序移動,而是按主控索引文件中記錄的邏輯順序移動,于是整個表中的記錄是按索引關(guān)鍵表達(dá)式值排序的效果。使用索引文件時,還要特別注意以下幾點:
(1)在使用GO命令時,GO<數(shù)值表達(dá)式>使記錄指針指向具體的物理記錄號,而與索引無關(guān),而GOTOP|BOTTOM將使記錄指針指向邏輯首或邏輯尾記錄,這時GOTOP不再等同于GO1。(2)SKIP命令按邏輯順序移動記錄指針。(3)表被打開后,記錄指針位于TOP位置。使用索引文件后,雖然表中各記錄的物理順序并未改變【例】當(dāng)索引起作用時,分析記錄指針的移動規(guī)律。
USE學(xué)生INDEXON入學(xué)成績TAGsy3GO6?RECNO(),姓名&&顯示6李勤奮SKIP?RECNO(),姓名&&顯示5歐陽天地【例】當(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)的升序,上機成績(N,6,2)的降序建立索引,正確的命令是()。A.INDEXON姓名-上機成績TAGCJIDXB.INDEXON姓名+STR(-上機成績,6,2)TAGCJIDXC.INDEXON姓名+STR(1000-上機成績)TAGCJIDXD.INDEXON姓名/A,上機成績/DTAGCJIDX某數(shù)據(jù)表有字段:學(xué)號/C、生日/D、成績/N等。要建立學(xué)號、成績、生日的組合索引,其索引關(guān)鍵字表達(dá)式是()。A)學(xué)號+成績+生日B)"學(xué)號"+"成績"+"生日"C)學(xué)號+STR(成績,5,1)+STR(生日,8)D)學(xué)號+STR(成績,5,1)+DTOC(生日,1)復(fù)合結(jié)構(gòu)索引文件的類型名稱是()不允許字段值出現(xiàn)重多表操作
若要使用多個表,就要使用多個工作區(qū)。一個工作區(qū)是一個編號區(qū)域,它標(biāo)識一個已打開的表。在應(yīng)用程序中通常通過使用工作區(qū)號和工作區(qū)別名來標(biāo)識。
(教科書P82)多表操作若要使用多個表,就要使用多個工作區(qū)。一個工1、工作區(qū)號
VisualfoxPro提供了32767個工作區(qū),編號從1到32767。
每個工作區(qū)只允許打開一個表,一個表只能在一個工作區(qū)打開,系統(tǒng)默認(rèn)的工作區(qū)為1號工作區(qū)。
1、工作區(qū)號2、別名(1)前十個工作區(qū)除了可用1~10來標(biāo)識外,還可用A~J來表示工作區(qū)的別名。(2)定義別名use<文件名>alias<別名>格式:2、別名use<文件名>alias<別名>格式:3、選擇當(dāng)前工作區(qū)select<工作區(qū)號>|<別名>如沒有給表定義別名,則可以用數(shù)據(jù)表名作為別名。
sele0表示選定當(dāng)前未使用的最小號工作區(qū)。use<表名>in<工作區(qū)號>|<別名>不改變當(dāng)前工作區(qū)3、選擇當(dāng)前工作區(qū)select<工作區(qū)號>|<別名>如【例】在不同的工作區(qū)分別打開學(xué)生.dbf、選課.dbf和課程.dbf3個表,命令序列如下:CLOSEALL&&關(guān)閉所有打開的文件SELECT2USE學(xué)生&&選擇2號工作區(qū)打開學(xué)生表SELECTCUSE課程&&選擇3號工作區(qū)打開課程表USE選課IN5&&在5號工作區(qū)打開選課表【例】在不同的工作區(qū)分別打開學(xué)生.dbf、選課.dbf和課引用非當(dāng)前工作區(qū)表的字段必須冠以別名,引用格式為:
別名.字段名別名->字段名引用非當(dāng)前工作區(qū)表的字段必須冠以別名,引用格式【例】在1號工作區(qū)打開學(xué)生表,在2號工作區(qū)打開選課表;當(dāng)前工作區(qū)為1號,顯示選課表中當(dāng)前記錄的學(xué)號、姓名、課程號和成績字段的值。命令序列如下:(演示,并移動指針)CLOSEALL&&關(guān)閉所有打開的文件SELECT1USE學(xué)生&&選擇1號工作區(qū)打開學(xué)生表USE選課IN2&&在2號工作區(qū)打開選課表,當(dāng)前工作區(qū)為1號?學(xué)號,姓名,選課.課程號,選課->成績【例】在1號工作區(qū)打開學(xué)生表,在2號工作區(qū)打開選課表;當(dāng)前工學(xué)生管理數(shù)據(jù)庫中的表學(xué)生管理數(shù)據(jù)庫中的表
bof(<工作區(qū)>):文件開始的測試函數(shù)
eof(<工作區(qū)>):文件結(jié)束的測試函數(shù)
recno(<工作區(qū)>):返回當(dāng)前記錄號
sele():返回當(dāng)前工作區(qū)區(qū)號4、工作區(qū)常用函數(shù)bof(<工作區(qū)>):文件開始的測試函數(shù)4、工作區(qū)常用函數(shù)建立表間的關(guān)聯(lián)關(guān)系
(臨時關(guān)系)
要在兩個或兩個以上的表之間進行數(shù)據(jù)操作時,通常有關(guān)聯(lián)和連接兩種方法。建立表間的關(guān)聯(lián)關(guān)系
(臨時關(guān)系)要在兩個或兩個以1、關(guān)聯(lián)的概念每個工作區(qū)打開的表中都存在一個記錄指針,指針指向的記錄是當(dāng)前記錄,如果表之間沒有關(guān)系,則各個表的記錄指針相互獨立,即當(dāng)前工作區(qū)指針移動時,其他工作區(qū)的指針不移動。所謂關(guān)聯(lián),就是讓不同工作區(qū)數(shù)據(jù)表的記錄指針建立一種臨時的聯(lián)動關(guān)系。使一個表的記錄指針移動時,能帶動另一個表的記錄指針按一定的條件作相應(yīng)地移動。前者稱為關(guān)聯(lián)表(主動表、父表),后者稱為被關(guān)聯(lián)表(被動表、子表)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ù)值多多父表子表主動被動關(guān)鍵字為唯一值關(guān)鍵字為唯一值一一關(guān)鍵建立表間的關(guān)聯(lián)建立數(shù)據(jù)庫文件中表間關(guān)聯(lián),一是要保證建立關(guān)系的表具有相同的字段值(關(guān)鍵字值);二是子表要以該字段建立索引。建立表間的關(guān)聯(lián)建立兩個表之間的“一對一”和“多對一”關(guān)聯(lián)的步驟:①找到兩個表中能夠建立關(guān)聯(lián)的字段(字段名可以不同,類型、寬度、小數(shù)位數(shù)必須相同)②根據(jù)關(guān)鍵字值確定父表,再確定子表;③先打開子表,建立索引;④最后打開父表建立關(guān)聯(lián)。有重復(fù)值為父表建立兩個表之間的“一對一”和“多對一”關(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②子表必須對關(guān)聯(lián)字段索引③<表達(dá)式>是關(guān)聯(lián)的關(guān)鍵字
不同名的字段只要類型和數(shù)值相同也可建立關(guān)聯(lián)。④關(guān)聯(lián)后,父表指針移動帶動子表指針移動;而如果當(dāng)前工作區(qū)是子表,其指針移動,父表指針不會移動。實驗指導(dǎo)書P35實驗15任務(wù)1(1)②子表必須對關(guān)聯(lián)字段索引實驗指導(dǎo)書P35實驗15任務(wù)1(1⑤[additive]一般用于三個或三個以上的表之間建立多重關(guān)聯(lián),第2、3…個關(guān)聯(lián)使用該選項。⑥關(guān)聯(lián)后,當(dāng)前工作區(qū)字段名可以直接使用,子表的字段在使用時要加“別名.字段名”。⑦setrelatorecn()+Ninto<別名>把記錄號作關(guān)鍵字建立關(guān)聯(lián)。⑧關(guān)閉或重新打開數(shù)據(jù)表,關(guān)聯(lián)就會消失。(故稱為臨時關(guān)系)⑤[additive]一般用于三個或三個以上的表之間建立多BBAASele1UseAAindeon字段tagzdSele2UseBBSetrelato字段intoA(或AA)字段BBAASelesele0useAAindexon字段tagzdsele0useBBsetrelationto字段intoAAsele0AABBCC或BBAACC字段1字段2字段13個表建關(guān)聯(lián)?字段2(見實驗書第16頁任務(wù)1)AABBsetskipto[<別名1>[,<別名2>]…]一般不用用在setrelation命令之后,說明已建關(guān)聯(lián)的性質(zhì)為一對多關(guān)系。建立表間的一對多關(guān)系setskipto[<別名1>[,<別名2>]原則:
一般建立“多對一”或“一對一”的關(guān)聯(lián);一般如果要求顯示的結(jié)果是按照某個字段值的順序排列,則包含該字段的表應(yīng)作父表。原則:例:在學(xué)生表和選課表中,顯示成績<80分的學(xué)生的學(xué)號、姓名、所學(xué)課程的課程號和成績。例:在學(xué)生表和選課表中,顯示成績<80分的學(xué)生的學(xué)號、姓名學(xué)生管理數(shù)據(jù)庫中的表學(xué)生管理數(shù)據(jù)庫中的表setsafetyoffcloseallclearselect1use學(xué)生aliasxsindexon學(xué)號tagxhselect2use選課setrelationto學(xué)號intoxs系統(tǒng)環(huán)境設(shè)置表環(huán)境設(shè)置setsafetyoff系統(tǒng)環(huán)境設(shè)置表環(huán)境設(shè)置listfor成績<80fields學(xué)號,xs.姓名,課程號,成績closeallsetsafetyoncancel數(shù)據(jù)處理恢復(fù)系統(tǒng)環(huán)境listfor成績<80fields學(xué)號,xs.姓名主索引與永久關(guān)系
有些數(shù)據(jù)表格和其他數(shù)據(jù)表格之間存在著
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)業(yè)園區(qū)入駐合同協(xié)議
- 關(guān)于推進跨部門合作項目的工作計劃
- 關(guān)于采購流程的往來文書說明
- 商務(wù)會議溝通要點及會議紀(jì)要模板
- 健康管理平臺的構(gòu)建及運營規(guī)劃
- 機器人智能化生產(chǎn)線建設(shè)委托代理合同
- 交通物流調(diào)度管理系統(tǒng)建設(shè)方案
- 房屋預(yù)約買賣合同
- 木材原木購銷合同
- 2025年版《認(rèn)識大熊貓》課件發(fā)布
- 2025年安徽水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫(含答案)
- 山東省青島市市北區(qū)2024-2025學(xué)年七年級上學(xué)期期末考試英語試題(含答案+解析)
- 餐飲及食品安全管理制度
- 湖北省襄陽市襄州區(qū)2024-2025學(xué)年九年級上學(xué)期期末語文試題(含答案)
- 2025年安徽電氣工程職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案1套
- 2025年房屋交易代持策劃協(xié)議書
- 課題申報參考:“四新”建設(shè)背景下教育創(chuàng)新與課程數(shù)字化實踐研究
- 2025年煙臺汽車工程職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年江蘇農(nóng)牧科技職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2024年長沙衛(wèi)生職業(yè)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2024年度國網(wǎng)營銷安全(用電檢查)安全準(zhǔn)入客觀題備考試題庫(附答案)
評論
0/150
提交評論