3、VF數(shù)據(jù)庫及其操作_第1頁
3、VF數(shù)據(jù)庫及其操作_第2頁
3、VF數(shù)據(jù)庫及其操作_第3頁
3、VF數(shù)據(jù)庫及其操作_第4頁
3、VF數(shù)據(jù)庫及其操作_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、二級輔導(dǎo)VFP數(shù)據(jù)庫程序設(shè)計全國計算機等級考試第三章Visual FoxPro數(shù)據(jù)庫及其操作本章學(xué)習(xí)目標:了解并掌握Visual FoxPro數(shù)據(jù)庫的建立和操作等內(nèi)容,包括建立和管理數(shù)據(jù)庫,建立和使用表,以及索引和完整性等方面的內(nèi)容。重點:表的建立及使用,索引。難點:索引。3.1 VF數(shù)據(jù)庫及其建立一、基本概念數(shù)據(jù)庫表文件:.dbf文件數(shù)據(jù)庫文件:.dbc文件數(shù)據(jù)庫備注文件:.dct文件數(shù)據(jù)庫索引文件:.dcx文件二、建立數(shù)據(jù)庫常用的建立數(shù)據(jù)庫的方法有三種: 在項目管理器中建立數(shù)據(jù)庫; 在“新建”對話框建立數(shù)據(jù)庫; 用命令交互建立數(shù)據(jù)庫。1、在項目管理器中建立數(shù)據(jù)庫在項目管理中建立數(shù)據(jù)庫的界面

2、如圖3.1所示:圖3.1 項目管理器中的“數(shù)據(jù)”選項卡2、從“新建”對話框中建立數(shù)據(jù)庫單擊工具欄上的“新建”按鈕或選擇菜單“文件新建“對話框 (如圖3.2所示):圖3.2 新建對話框3、用命令交互建立數(shù)據(jù)庫建立數(shù)據(jù)庫的命令格式: create database databasename | ? 使用命令建立數(shù)據(jù)庫后不打開數(shù)據(jù)庫設(shè)計器,只是數(shù)據(jù)庫處于打開狀態(tài),要進入設(shè)計器,就需執(zhí)行修改數(shù)據(jù)庫的命令: modify database databasename三、使用數(shù)據(jù)庫在數(shù)據(jù)庫中建立表或使用數(shù)據(jù)庫中的表時,都必須首先打開數(shù)據(jù)庫,常用的打開數(shù)據(jù)庫的方法有三種: 在項目管理器中建立數(shù)據(jù)庫; 在“打開

3、”對話框建立數(shù)據(jù)庫; 用命令打開數(shù)據(jù)庫。打開數(shù)據(jù)庫的命令是open database,具體語法格式如下: open database filename | ? exclusive | shared *獨占或共享 noupdate *只讀 validate *指定系統(tǒng)檢查 數(shù)據(jù)庫中的對象是否合法注意: 這里的noupdate選項并不起作用,如果需要使數(shù)據(jù)庫中的表是只讀的,需要在用use命令打開表時使用noupdate選項;數(shù)據(jù)庫打開,數(shù)據(jù)庫中的所有表都可以使用,但是這些表不會自動打開,使用時需要用use命令;用use命令打開一個表時,VF首先在當(dāng)前數(shù)據(jù)庫中查找該表,如果沒有,VF會在數(shù)據(jù)庫外繼續(xù)

4、查找并打開。在同一時刻可以打開多個數(shù)據(jù)庫,但在同一時刻只有一個當(dāng)前數(shù)據(jù)庫,所謂當(dāng)前數(shù)據(jù)庫即所有作用于數(shù)據(jù)庫的命令或函數(shù)都是對當(dāng)前數(shù)據(jù)庫而言的。 指定當(dāng)前數(shù)據(jù)庫的命令: set database to databasename 如果不指定參數(shù)(數(shù)據(jù)庫名),即輸入命令: set database to 此時使得所有打開的數(shù)據(jù)都不是當(dāng)前數(shù)據(jù)庫(注意:所有數(shù)據(jù)庫都沒有關(guān)閉,只是不是當(dāng)前數(shù)據(jù)庫)四、修改數(shù)據(jù)庫在VF中修改數(shù)據(jù)庫實際上是打開數(shù)據(jù)庫設(shè)計器,用戶可以在設(shè)計器中完成各種數(shù)據(jù)庫對象的建立、修改和刪除等操作,用一下三種方法可以打開數(shù)據(jù)庫設(shè)計器: 從項目管理器中打開數(shù)據(jù)庫設(shè)計器; 在“打開”對話框打開

5、數(shù)據(jù)庫設(shè)計器; 用命令打開數(shù)據(jù)庫設(shè)計器。 命令格式: modify database databasename | ? nowaitnoedit五、刪除數(shù)據(jù)庫刪除數(shù)據(jù)庫文件的方法 從項目管理器中刪除數(shù)據(jù)庫(不能刪除表); 移去:從項目管理器中刪除數(shù)據(jù)庫; 刪除:從項目管理器中刪除數(shù)據(jù)庫,并從磁 盤上刪除。 用命令方式刪除數(shù)據(jù)庫(數(shù)據(jù)庫必須處于關(guān)閉狀態(tài)); 命令格式是: delete database databasename | ? deletetables recycle3.2 建立數(shù)據(jù)庫表一、在數(shù)據(jù)庫中建立表 一個數(shù)據(jù)庫中數(shù)據(jù)就是由表的集合構(gòu)成的,一般一個表對應(yīng)于磁盤上的一個擴展名為.db

6、f的文件,如果有備注或通用型字段則磁盤上還會有一個對應(yīng)擴展名為.fpt的文件(文件主名和表文件主名相同)。打開數(shù)據(jù)庫設(shè)計器后利用菜單或設(shè)計器中的工具箱按鈕新建表,執(zhí)行命令后,出現(xiàn)下面的對話框(如圖3.3所示): 圖3.3 選擇新建表給表文件命名及確定保存路徑,隨之會打開表設(shè)計器即設(shè)計表的結(jié)構(gòu)(如圖3.4)所示: 圖3.4 建立表的界面建立表結(jié)構(gòu)就是確定表文件中每一個字段的字段名、字段類型、字段寬度、小數(shù)位數(shù)以及允許是否為空。(1)字段名(Field Name) 字段名是以漢字、字母或下劃線開頭,后面可以是漢字、字母、數(shù)字或下劃線組成,但不可以有空格,自由表的長度不超過10個字符。(2). 字段

7、類型(Type) 字段類型對應(yīng)于二維表格欄目填寫內(nèi)容的類型,是字段變量的類型。(3).字段寬度(Width) 字段寬度用以表明該字段存放數(shù)據(jù)所需的寬度。用戶在建立表時,只有字符型、數(shù)值型、浮點型需要用戶輸入所需的寬度,其他類型字段的寬度由系統(tǒng)自動確定。(4). 小數(shù)位(Dec) 只有數(shù)值型和浮點型字段才有小數(shù)位, 小數(shù)位的寬度是015位。(5).是否允許為空 表示是否允許該字段接受空值(NULL),關(guān)鍵字的字段不能為空。 二、修改表結(jié)構(gòu) 在VF中,表結(jié)構(gòu)可以任意修改:可以增加、刪除字段,可以修改字段名、字段類型、字段的寬度,可以建立、修改或刪除索引,可以建立、修改或刪除有效性規(guī)則等。 如果表在

8、當(dāng)前數(shù)據(jù)庫中,直接用鼠標右擊要修改的表,然后從彈出菜單中選擇”修改“則會打開相應(yīng)的表設(shè)計器,在表設(shè)計器中完成修改。 如果表沒有在當(dāng)前數(shù)據(jù)庫中(即自由表),需要執(zhí)行下面的命令: use 表名 (打開表) modify structure (修改表結(jié)構(gòu)) 表一旦建立起來以后,自然就需要對它進行相應(yīng)的操作。例如,向表中添加新紀錄、刪除無用的紀錄、修改有問題的紀錄、查看紀錄等,對表的操作的命令都是對當(dāng)前表進行操作,即都需要首先用use命令打開要操作的表3.3 表的基本操作一、 使用瀏覽器操作表 如果交互對表中的數(shù)據(jù)進行操作,最簡單、方便的方法是使用Browse瀏覽器,即打開表的數(shù)據(jù)編輯界面,常用的方法

9、有: (1)、利用項目管理器 (2)、利用數(shù)據(jù)庫設(shè)計器 (3)、利用命令,在命令窗口輸入: use browse在編輯界面下,可以查看紀錄、修改紀錄、追加紀錄、刪除紀錄。二、增加紀錄的命令 1、append命令(在表尾追加) 命令格式: append blank 2、insert命令 (在當(dāng)前紀錄之前或之后) 命令格式: insert beforeblank三、刪除紀錄的命令 1、置刪除標記的命令(邏輯刪除) 命令格式: delete for 條件表達式 2、恢復(fù)紀錄的命令 (去掉刪除標記) 命令格式: recall for 條件表達式 3、物理刪除有刪除標記的紀錄(徹底刪除) 命令格式: p

10、ack 4、物理刪除表中的全部紀錄 命令格式: zap四、 修改紀錄的命令 1、交互修改的edit和change命令(默認編輯當(dāng)前紀錄) 命令格式: edit | change 2、直接修改的replace(替換)命令 命令格式: replace 字段名1 with 表達式1 ,字段名2,with 表達式2 for 條件表達式 例 將當(dāng)前表中所有學(xué)生的年齡加1. replace all 年齡 with 年齡+1五、顯示紀錄的命令命令格式List / display fields 字段名表 for 條件 to printerprompt | to file 文件名無條件或范圍時 List 是連續(xù)

11、顯示所有紀錄;Display是顯示當(dāng)前紀錄。 有條件或范圍時List是連續(xù)顯示滿足條件的紀錄;Display是分屏顯示滿足條件的紀錄。 例 顯示當(dāng)前表中所有男生的紀錄。 list for 性別=“男”六、查詢定位命令 1、用goto命令直接定位(絕對定位) 命令格式: goto 記錄號 | top | bottom goto和go命令是等價的,注意不能寫成go to. 2、skip命令(相對定位) 命令格式: skip nrecords 其中nrecords可以是正整數(shù)或負整數(shù),默認是1。 注意:skip是按邏輯順序定位,即如果使用索引時,是按索引項的順序定位的。 3、用locate命令定位(

12、查詢定位) 命令格式: locate for 條件表達式 如果要使指針指向下一條滿足條件的紀錄,用continue命令。七、表的復(fù)制命令 1、復(fù)制表的結(jié)構(gòu) 命令格式: copy structure to fields 2、復(fù)制表的紀錄 命令格式: copy to fieldsfor 重要補充: 四個函數(shù): 表頭測試函數(shù)bof() 表尾測試函數(shù)eof() 紀錄號測試函數(shù)recno() 紀錄個數(shù)測試函數(shù)reccount() 一個命令: set default to e:vfp (設(shè)置默認目錄)3.4 表的排序與索引排序與索引的概念及二者的區(qū)別。重點:索引及其使用一、 表的排序 排序(SORT):對

13、表中的記錄進行物理排序。 格式: SORT TO ON /A|/D/C,/A|/D/C ASCENDING|DESCENDINGFORWHILE FIELDS 功能:按給定的字段名值由大到小或由小到大的順序?qū)Ξ?dāng)前表文件重新排列,并生成一個新的表文件。 例 把stud.dbf中入學(xué)成績大于520的,按入學(xué)成績從高到低排序,保存在strxcj.dbf中。 use studSort to strxcj on 入學(xué)成績/d for 入學(xué)成績480use strxcjlist例 把stud.dbf表按入學(xué)成績(升序)、性別、姓名均按降序排列,保存在strxcj2.dbf中。 use studSort t

14、o strxcj2 on 入學(xué)成績/a,性別,姓名 descuse strxcj2list二、索引概述 1索引的概念 索引(INDEX):對表中的記錄進行邏輯排序。即另外形成一個索引關(guān)鍵表達式值與記錄號之間的對照表,這個對照表就是索引文件。 索引文件是一個二維表,其中僅有二列數(shù)據(jù):關(guān)鍵字值和記錄的物理位置。關(guān)鍵字值是包含有字段的排序規(guī)則表達式,記錄的物理位置指向關(guān)鍵字值在表中所在的物理位置。 例如,在表3-1的Stud表中,根據(jù)入學(xué)成績的高低來建立索引文件。建立好的索引文件如表3-2所示。記錄號 學(xué)號 姓名 性別出生日期 入學(xué)成績 103083101王文 男 09-20-81 510 2020

15、83106李道 男 01-15-83 520 302083103鄧軒斌男 11-28-78 524 402093108王瑞姝 女 01-01-84 522502093105劉光輝 男 11-06-80 526表3-1 Stud表中的記錄 關(guān)鍵字(入學(xué)成績)值 記錄的物理位置 52655243 5101 52025224表3-2 根據(jù)入學(xué)成績字段建立的索引文件 注意:索引并未改變表中記錄的物理位置,僅僅改變了表中記錄的邏輯排序。但是,當(dāng)用戶將建立好的索引文件打開以后,記錄的顯示順序或讀取處理記錄的順序?qū)凑账饕募帕械挠涗涰樞蜻M行。這樣大大提高了記錄的檢索速度。 可以為一個表同時建立多個索引

16、文件,每個索引文件表示處理記錄的不同順序。2.索引文件的種類單一索引文件 (.IDX)復(fù)合索引文件 (.CDX)索引文件結(jié)構(gòu)復(fù)合索引文件(與相關(guān)表文件同名)非結(jié)構(gòu)復(fù)合索引文件(與相關(guān)表文件不同名) 復(fù)合索引文件的內(nèi)部結(jié)構(gòu)如圖3.5所示。復(fù)合索引文件的擴展名為.CDX。 圖3.5 復(fù)合索引文件結(jié)構(gòu) 11-28-7806-09-8301-01-84關(guān)鍵字值2135物理位置1354物理位置2510520526關(guān)鍵字值1 03083101 0208310602083103關(guān)鍵字值 n1 23物理位置n 索引標識1 索引標識2 索引標識n 從圖中可以看到復(fù)合索引文件可以由多個關(guān)鍵字值和其對應(yīng)的多個記錄的

17、物理位置構(gòu)成。每一個關(guān)鍵字值和其對應(yīng)的記錄的物理位置構(gòu)成了一個索引標識(TagName)。在復(fù)合索引文件中,每一個索引標識等價于一個單一索引文件。換句話說,復(fù)合索引文件等價于多個單一索引文件。 結(jié)構(gòu)復(fù)合索引文件的文件名稱與相關(guān)的表同名,另外結(jié)構(gòu)復(fù)合索引文件將隨著相關(guān)表的打開而自動打開。 非結(jié)構(gòu)復(fù)合索引文件的文件名稱與相關(guān)的表不同名,另外非結(jié)構(gòu)復(fù)合索引文件不會隨著相關(guān)表的打開而自動打開,要由用戶自行打開。 索引與排序的不同點: 生成的文件不是.dbf文件,不需占用單獨的工作區(qū); 索引不改變原表文件中各記錄的物理順序。 索引文件占用空間?。?.索引的類型索引可分為4種類型:索引主索引 候選索引不允

18、許在指定字段和表達式中出現(xiàn)重復(fù)值的索引。一個表可以建立多個候選索引。不允許在指定字段和表達式中出現(xiàn)重復(fù)值的索引。只有數(shù)據(jù)表才能建立。惟一索引只在索引文件中保留第一次出現(xiàn)的索引關(guān)鍵字值。普通索引存儲在.cdx結(jié)構(gòu)復(fù)合索引文件中,與表文件同時打開和關(guān)閉??纱鎯υ?cdx獨立復(fù)合索引文件和.idx單索引文件中4 建立索引文件 VFP中,為表建立索引可以采用兩種方法來完成:一、菜單方式:在表設(shè)計器中通過直觀的操作來建立索引二、命令方式:使用INDEX命令來建立索引格式: INDEX ON TO 功能:對當(dāng)前表建立一個索引文件或增加索引標識。TAG OF FOR COMPACT ASENDING|DES

19、CENDING UNIQUECANDIDATEADDITIVE說明:(1)若給出TO 子句,則建立一個單索引文件。 若給出TAG OF ,則建立一個結(jié)構(gòu)復(fù)合索引文件,或為已建立并打開的復(fù)合索引文件增加索引標識。 OF 選項用于指定非結(jié)構(gòu)復(fù)合索引文件的名字,省略此選項時,表示建立結(jié)構(gòu)復(fù)合索引文件。(2)COMPACT 參數(shù)僅在建立單一索引文件時使用。該參數(shù)用于為單一索引文件獲得壓縮處理快速存取索引文件技術(shù)的支持,從而大大提高單一索引文件的使用效率。(3)ASCENDING|DESCENDING 參數(shù)用于指定復(fù)合索引文件的某一索引標識是按照升序(ASCENDING)還是降序(DESCENDING)

20、方式進行排序。(4)UNIQUE 參數(shù)用于建立唯一索引。也就是說對于擁有相同關(guān)鍵鍵值的若干條記錄而言,只有第一條記錄才會列入該索引文件中,其他具有此關(guān)鍵值的所有記錄都將被排除在該索引文件之外。(5)CANDIDATE 參數(shù)用于建立候選索引。(6)ADDITIVE 參數(shù)用于在建立新的索引文件時,已打開的其他索引文件仍保持打開狀態(tài)。【例】對stud表按入學(xué)成績升序建立索引文件 Use stud index on 入學(xué)成績 to cja List Use stud index on -入學(xué)成績 to cjd List【例】對stud表按入學(xué)成績降序建立索引文件 建立單一索引文件 單一索引文件只能按照

21、升序方式進行排列。 建立結(jié)構(gòu)復(fù)合索引(在INDEX命令中使用 TAG 標識名 參數(shù) )【例】對stud.DBF: 用學(xué)號作關(guān)鍵字,建立結(jié)構(gòu)復(fù)合索引文件,標識名為xhUse studIndex on 學(xué)號 tag xh 用姓名作關(guān)鍵字,建立結(jié)構(gòu)索引文件,標記名為xmUse studIndex on 姓名 tag xm 在建立復(fù)合索引文件時,可使用ASCENDINGDESCENDING參數(shù)指定某一索引標識是按照升序(ASCENDING)還是降序(DESCENDING)方式進行排序。【例】 若要為 Stud表根據(jù)入學(xué)成績字段建立結(jié)構(gòu)復(fù)合索引文件,索引標識為Et,并且希望按降序方式排列,那么應(yīng)執(zhí)行的命

22、令為:USE StudINDEX ON 入學(xué)成績 TAG Et DESCENDING【例】對stud.DBF,用入學(xué)成績, 出生日期, 姓名作關(guān)鍵字,建立結(jié)構(gòu)索引文件,標記為strcx。Use studIndex on str(入學(xué)成績) +dtoc(出生日期)+姓名 tag strcx上述操作相當(dāng)于鍵入如下命令:Use studIndex on 入學(xué)成績 tag rxcj additiveIndex on 出生日期 tag csrq additiveIndex on 姓名 tag xm additive【例】對stud表按學(xué)號建立非結(jié)構(gòu)復(fù)合索引文件,文件名為scxh.CDX,索引標識為xh。

23、Use stud index on 學(xué)號 tag xh of scxh 建立非結(jié)構(gòu)復(fù)合索引(在INDEX命令中使用 TAG OF參數(shù))【例】若要為Stud表根據(jù)入學(xué)成績字段建立單一索引文件(單一索引文件名為en1.IDX),希望只有滿足入學(xué)成績大于520這一條件的記錄才會出現(xiàn)在索引文件的索引關(guān)鍵字值列表中,那么應(yīng)執(zhí)行命令:Use stud INDEX ON 入學(xué)成績 TO En1.IDX FOR 入學(xué)成績520 設(shè)置有條件的索引【例】若要為Stud表根據(jù)出生日期字段建立單一索引文件(單一索引文件名為 nl.IDX),并且該索引文件是唯一索引,那么應(yīng)執(zhí)行的命令:Use stud INDEX ON

24、 出生日期 TO nl.IDX unique 設(shè)置惟一索引【例】若要為Stud表根據(jù)學(xué)號字段建立結(jié)構(gòu)復(fù)合索引文件(索引標識為stuid),并且該索引標識為候選索引,那么應(yīng)執(zhí)行命令:Use stud INDEX ON 學(xué)號 Tag stuid candidate 設(shè)置候選索引5、索引文件的使用 命令格式:USE INDEX ORDER TAG 標記名 OF ASCENDING | DESCENDING IN 1.打開索引文件 (1) 打開表文件的同時打開索引文件功能:打開指定的表及其索引文件?!纠?已知stud.DBF有scxh.cdx(標記名有xh,xm) 、cja.idx 和 nl.idx

25、 等索引文件。Use stud index cja, nl, scxh 打開表文件時打開所有索引文件,并以cja.idx作為主索引文件,命令是:Use stud index nl,cja,scxh order cja或:Use stud index cja, scxh, nl order tag xm of scxh 打開表文件時打開所有索引文件,并以scxh.cdx作為主索引文件,標記名為xm,命令是:【例】 已知stud.DBF有scxh.cdx(標記名有xh,xm) 、cja.idx 和 nl.idx 等索引文件。 命令格式:SET INDEX TO 索引文件名表 ADDITIVE (2

26、) 在打開表后再打開索引文件 除結(jié)構(gòu)復(fù)合索引能隨著表文件的打開而打開外,其他索引文件必須用索引文件的打開命令來打開。功能:在已打開表文件的前提下,打開指定的索引文件。ORDER |TAG 標記名 OF ASCENDING|DESCENDINGUse stud 打開索引文件cja.idx和nl.idx,并用nl作為主控制索引(主索引)。命令為:Set index to nl, cja 【例】 已知stud.DBF有scxh.cdx(標記名有xh,xm) 、cja.idx 和 nl.idx 等索引文件。命令格式:SET ORDER TO | TAG 索引標記名 OF 2.確定主控索引 功能:指定表

27、的主控索引文件或主控索引標識。注:命令 SET ORDER TO 可以取消主控索引。Use stud index cjaSet order to xh 【例】 已知stud.DBF有結(jié)構(gòu)復(fù)合索引文件(標記名有xh,xm) 、單索引文件cja.idx 和 nl.idx 等,現(xiàn)要使用這些索引對stud表進行操作。listlistSet order to xm listSet order tolistUse stud index cja? recno( ) 【例】 分析在已打開索引文件情況下記錄指針的移動。Go 3skip? Recno( ) Go top? Recno( )Go bottom? R

28、ecno( )3. 關(guān)閉索引文件 當(dāng)關(guān)閉表文件時,同時關(guān)閉同一工作區(qū)中所有已打開的索引文件。此外,還有下列關(guān)閉索引文件的命令:格式1 : SET INDEX TO格式2 : CLOSE INDEX 功能:關(guān)閉當(dāng)前工作區(qū)中除結(jié)構(gòu)索引文件外的所有索引文件。(1)刪除索引文件 若用索引文件命令來刪除索引文件,須遵循先關(guān)閉后刪除的原則。命令格式: DELETE file 功能: 刪除打開的單索引文件。4.刪除索引 (2)刪除索引標識 命令格式: DELETE TAG ALL | 功能: 刪除打開的復(fù)合索引文件的所有(或指定)索引標識。5. 使用索引快速定位 SEEK是利用索引快速定位的命令,格式如下:

29、 SEEK eExpression ORDER nIndexnumber | tag tagname Ascending | Descending 在數(shù)據(jù)庫中數(shù)據(jù)完整性是指保證數(shù)據(jù)正確的特性。數(shù)據(jù)完整性一般包括實體完整性、域完整性和參照完整性。3.5 數(shù)據(jù)完整性一、 實體完整性與主關(guān)鍵字 實體完整性事保證表中記錄惟一的特性,即不允許有重復(fù)的紀錄,在VF中利用主關(guān)鍵字或候選關(guān)鍵字來保證表中的紀錄惟一,即保證實體惟一性。 如果一個字段的值或幾個字段的值能惟一標識表中的一條記錄,則這樣的字段稱為候選關(guān)鍵字。在一個表中,候選關(guān)鍵字可能有多個,可從中選擇一個作為主關(guān)鍵字,表中最多只有一個主關(guān)鍵字。 二、

30、 域完整性與約束規(guī)則 域完整性:限制數(shù)據(jù)的范圍。 約束規(guī)則:字段有效性規(guī)則 1、規(guī)則 2、信息 3、默認值三、 參照完整性與表之間的關(guān)聯(lián) 參照完整性:當(dāng)插入、刪除或修改一個表中的數(shù)據(jù)時,通過參照引用相互關(guān)聯(lián)的另一個表中的數(shù)據(jù),來檢查對表的數(shù)據(jù)操作是否正確。其設(shè)置與表的關(guān)聯(lián)有關(guān)。 有三個規(guī)則: 1、更新:(對應(yīng)可有三個選擇) 級聯(lián):當(dāng)更改父表中某一紀錄時,子表中相應(yīng)紀錄將會改變。 限制:當(dāng)更改父表中某一紀錄時,若子表中有相應(yīng)紀錄,則禁止該操作。 忽略:兩表更新操作將互不影響。 2、刪除:(對應(yīng)可有三個選擇) 級聯(lián):當(dāng)刪除父表中某一紀錄時,將刪除子表中相應(yīng)紀錄。 限制:當(dāng)刪除父表中某一紀錄時,若子

31、表中有相應(yīng)紀錄,則禁止該操作。 忽略:兩表刪除操作將互不影響。3、插入:(對應(yīng)可有兩個個選擇) 限制:當(dāng)在子表中插入某一紀錄時,若父表中沒有相應(yīng)紀錄,則禁止該操作。 忽略:兩表插入操作將互不影響。表之間的關(guān)聯(lián) 在數(shù)據(jù)庫設(shè)計器中設(shè)計表之間的聯(lián)系時,要在父表中建立主索引,在子表中建立普通索引,然后通過父表的主索引和子表的普通索引建立兩個表之間的聯(lián)系。在數(shù)據(jù)庫中,建立聯(lián)系的兩個表一般具有相同的字段。建立參照完整性 在建立參照完整性之前必須首先清理數(shù)據(jù)庫。3.6 自由表自由表的概念: 不屬于數(shù)據(jù)庫中的表就是自由表。 一、 數(shù)據(jù)庫表與自由表 兩者之間的關(guān)系: 1、可以將自由表添加到數(shù)據(jù)庫中,使之成為數(shù)據(jù)

32、庫表,也可以將數(shù)據(jù)庫表從數(shù)據(jù)庫中移出,使之成為自由表。 2、當(dāng)沒有數(shù)據(jù)庫打開時,建立的表就是自由表。 建立自由表的方法: 1、項目管理器中建立 2、確認沒有數(shù)據(jù)庫打開時,選擇:“文件-新建”菜單。 3、確認沒有數(shù)據(jù)庫打開時,使用create命令,格式如下: create tablename | ?二、 將自由表添加到數(shù)據(jù)庫 1、在項目管理器中添加。 2、在數(shù)據(jù)庫設(shè)計器中添加。 3、使用命令添加。 add table tablename | ?name longtablename 注意:一個自由表只能添加到一個數(shù)據(jù)庫。 三、 從數(shù)據(jù)庫中移出表 1、在項目管理器中移出。 2、在數(shù)據(jù)庫設(shè)計器中移出。

33、 3、使用命令移出。 remove table tablename | ?delete recycle 注意:一個自由表只能添加到一個數(shù)據(jù)庫。 3.7 多個表的同時使用1、工作區(qū)的概念 工作區(qū)是用來保存表及其相關(guān)信息的一片內(nèi)存空間。在每個工作區(qū)中只能打開一個表文件,但可以同時打開與表相關(guān)的其他文件。有了工作區(qū)的概念,就可以同時打開多個表,但在任何一個時刻用戶只能選中一個工作區(qū)進行操作。當(dāng)前正在操作的工作區(qū)稱為當(dāng)前工作區(qū)。 2、工作區(qū)號與別名 不同工作區(qū)可以用其編號或別名來加以區(qū)分。 Visual FoxPro提供了32,767個工作區(qū),系統(tǒng)以132 767作為各工作區(qū)的編號。 工作區(qū)的別名有兩

34、種:一種是系統(tǒng)定義的別名,另一種是用戶定義的別名。 3. 工作區(qū)的選擇 格式:SELECT 工作區(qū)號別名|0 功能:該命令選擇一個工作區(qū)為當(dāng)前工作區(qū),以便打開一個表或把該工作區(qū)中已打開的表作為當(dāng)前表進行操作。 4. 工作區(qū)的互訪 在當(dāng)前工作區(qū)中可以訪問其他工作區(qū)中的表的數(shù)據(jù),但要在非當(dāng)前表的字段名前加上別名和連接符,引用格式為:別名.字段名或別名-字段名5、表的關(guān)聯(lián) 建立數(shù)據(jù)庫文件中的表間關(guān)聯(lián),一是要保障建立關(guān)聯(lián)的表具有相同屬性的字段;二是每個表都要以該字段建立索引。在這一前提下,以其中一個表中的字段(主鍵)與另一表中的同名字段(外鍵)建立關(guān)聯(lián),兩個表間就具有了一定的關(guān)系。(1)、 一對一的關(guān)聯(lián) 格式:SET RELATION TO 關(guān)聯(lián)表達式1 INTO 工作區(qū)號1別名1,關(guān)聯(lián)表達式2 INTO 工作區(qū)號2別名2 ADDITIVE功能:該命令使當(dāng)前表與INTO子句所

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論