數(shù)據(jù)庫、表的基本操作(18學(xué)時)
一、【教學(xué)目標(biāo)】 1. 理解并掌握數(shù)據(jù)庫的創(chuàng)建 2. 理解并掌握數(shù)據(jù)庫表屬性的設(shè)置 3. 掌握數(shù)據(jù)庫的操作 二、【重點和難點】 重點 1. 數(shù)據(jù)庫的操作。 2. 數(shù)據(jù)庫表的操作。 3. 建立排序和索引。自由表的操作。 4. 使用不同工作區(qū)表的操作。 難點 1. 數(shù)據(jù)庫表的操作。 2. 索引的建立和使用。 3. 數(shù)據(jù)完整性的設(shè)置。 三、【學(xué)法指導(dǎo)】 1. 數(shù)據(jù)庫和數(shù)據(jù)表的建立是本章基礎(chǔ)。 2. 編輯表中的數(shù)據(jù)、記錄修改與刪除,表的索引等操作,是后續(xù)章節(jié)的基礎(chǔ)。 3. 本章學(xué)習(xí)的要點是多做上機(jī)練習(xí),熟練掌握數(shù)據(jù)庫和數(shù)據(jù)表的操作。 四、【教學(xué)要點】 本章主要介紹數(shù)據(jù)庫、數(shù)據(jù)表的基本概念;數(shù)據(jù)庫和數(shù)據(jù)表的建立、編輯表中的數(shù)據(jù)、記錄修改與刪除,表的索引等有關(guān)操作。 2.1 VFP數(shù)據(jù)庫及其建立 數(shù)據(jù)庫管理系統(tǒng)是一種極為重要的程序設(shè)計語言,它與其他語言的主要差異在于它先天具備組織管理和高效率訪問大批量數(shù)據(jù)的功能。設(shè)計一個功能齊全、結(jié)構(gòu)優(yōu)化的數(shù)據(jù)庫,是設(shè)計數(shù)據(jù)庫管理系統(tǒng)必不可少的一個重要環(huán)節(jié)。VFP中文版為我們提供兩個功能強(qiáng)大的數(shù)據(jù)庫設(shè)計工具——數(shù)據(jù)庫向?qū)Ш蛿?shù)據(jù)庫設(shè)計器。數(shù)據(jù)庫向?qū)軒椭鯇W(xué)者在很短的時間內(nèi)設(shè)計出一個數(shù)據(jù)庫。而數(shù)據(jù)庫設(shè)計器能設(shè)計出滿足用戶實際需要的較為復(fù)雜的數(shù)據(jù)庫。它們不僅能設(shè)計建立數(shù)據(jù)庫,而且還提供了一套完善的數(shù)據(jù)庫管理和維護(hù)功能。 1.數(shù)據(jù)庫的概念 一定要注意,在VISUAL FOXPRO 中數(shù)據(jù)庫與表是兩個不同的概念,數(shù)據(jù)庫文件是各項與數(shù)據(jù)庫相關(guān)信息的匯集處,數(shù)據(jù)庫可以管理表,查詢,視圖等數(shù)據(jù)實體,又可提供了數(shù)據(jù)字典,各種數(shù)據(jù)保護(hù)及數(shù)據(jù)管理功能。 在建立數(shù)據(jù)庫時,相應(yīng)的數(shù)據(jù)庫名稱實際是擴(kuò)展名為DBC的文件,與之相關(guān)的還會自動建立一個擴(kuò)展名DCT的數(shù)據(jù)庫備注文件和一個擴(kuò)展名為DCX的數(shù)據(jù)庫索引文件. 數(shù)據(jù)庫建立好后,還只是一空庫,它沒有任何數(shù)據(jù),需要建立或添加數(shù)據(jù)庫表才能實現(xiàn)對數(shù)據(jù)的統(tǒng)一的管理。 2.表的概念 VFP作為關(guān)系型數(shù)據(jù)庫系統(tǒng),是用來管理數(shù)據(jù)的,而數(shù)據(jù)以記錄和字段的形式存儲在數(shù)據(jù)庫中,數(shù)據(jù)庫就是一個關(guān)于某一特定主題或目標(biāo)的信息集合。表是從簡單數(shù)據(jù)處理到創(chuàng)建關(guān)系型數(shù)據(jù)庫,再到設(shè)計應(yīng)用程序的過程中所用到的基本單位,它是數(shù)據(jù)庫的基礎(chǔ),可以說,表是關(guān)系數(shù)據(jù)庫系統(tǒng)中的基本結(jié)構(gòu)。如果要保存數(shù)據(jù),就應(yīng)為所需記錄的信息創(chuàng)建一個表。數(shù)據(jù)表是由行和列組成的,每一行稱為一條記錄,每一列稱為一個字段。 每條記錄可以有若干個字段,而且每條記錄具有相同結(jié)構(gòu)的字段。相同結(jié)構(gòu)的含義是具有相同的字段名、字段類型和字段順序。 數(shù)據(jù)庫的建立 建立數(shù)據(jù)庫的常用方法有以下三種: l 在項目管理器中建立數(shù)據(jù)庫. l 通過”新建”工具或”文件”菜單的”新建”一項實現(xiàn). l 使用命令CREATE DATABASE建立. 1.在項目管理器中建立數(shù)據(jù)庫 在項目管理器中建立數(shù)據(jù)庫首先要打開相應(yīng)的項目, 在”數(shù)據(jù)”選項卡中選擇”數(shù)據(jù)庫”,再單擊”新建”按鈕并選擇”新建數(shù)據(jù)庫”(如圖2.1),
接著通過創(chuàng)建對話框提示用戶輸入數(shù)據(jù)庫的名稱(名稱由用戶自己命名), 如果未命名,則系統(tǒng)默認(rèn)文件名為”數(shù)據(jù)1”(如圖2.2),相應(yīng)的擴(kuò)展名為.DBC.
2.通過”新建”對話框建立數(shù)據(jù)庫
單擊工具欄上的”新建”按鈕或者選擇”文件”菜單下的”新建”,打開如圖2.3所示的”新建”對話框.首先在”文件類型”組框中選擇”數(shù)據(jù)庫”,然后單擊”新建文件”按鈕建立數(shù)據(jù)庫,然后的操作和步驟與在項目管理器中建立數(shù)據(jù)庫相同,使用這種方法建立的數(shù)據(jù)庫同樣處于打開狀態(tài),同時打開相應(yīng)的數(shù)據(jù)庫設(shè)計器.如圖2.4
3.使用命令建立數(shù)據(jù)庫. 建立數(shù)據(jù)庫的命令格式是: CREATE DATABASE [DatabaseName|?] DatabaseName為用戶要建立的數(shù)據(jù)庫名稱. 如不輸入名稱或使用”?”將出現(xiàn)提示用戶輸入名稱對話框.如圖2.5
使用該命令所建立的數(shù)據(jù)庫處于打開狀態(tài),不過相應(yīng)的數(shù)據(jù)庫設(shè)計器并沒有打開,這是與上面兩種方法不同的地方。 總之,使用以上三種方法都可以建立一個新的數(shù)據(jù)庫。如果指定的數(shù)據(jù)庫已經(jīng)存在,很可能會覆蓋掉已經(jīng)存在的數(shù)據(jù)庫。如果系統(tǒng)環(huán)境參數(shù)SAFETY被設(shè)置為OFF狀態(tài)會直接覆蓋,否則會出現(xiàn)警告對話核框請用戶確認(rèn)因此,為安全起見可能先執(zhí)行SET SATETY ON。 1.數(shù)據(jù)庫的打開 建立數(shù)據(jù)庫的目的是管理表中的數(shù)據(jù),在使用之前,必須先打開數(shù)據(jù)庫,常用的數(shù)據(jù)庫打開方法有如下三種: ①通過“文件”菜單的“打開”功能項打開相應(yīng)的數(shù)據(jù)庫。如圖2.6所示,這里要注意“文件類型”下拉列表選擇“數(shù)據(jù)庫(*.dbc).
在“打開”對話框中還有“以只讀方式”和“獨占”兩個復(fù)選框可供選擇,它們的功能將在命令格式中加以介紹。 ②在項目管理器中打開數(shù)據(jù)庫。 先打開數(shù)據(jù)庫所在的項目,再選擇相應(yīng)的已存在的數(shù)據(jù)庫名稱。這時數(shù)據(jù)庫自動打開,用戶不必再執(zhí)行手工打開數(shù)據(jù)庫操作。 ③使用命令方式打開數(shù)據(jù)庫 打開數(shù)據(jù)庫的命令格式為: OPEN DATABASE [Filename|?][EXCLUSIVE|][NOUPDATE] 參數(shù)說明: Filename為要打開的數(shù)據(jù)庫名稱 EXCLUSIVE以獨占方式打開數(shù)據(jù)庫,即在同一時刻不允許多個用戶同時使用。 SHARED以共享方式打開數(shù)據(jù)庫,等同于“打開”對話框中的不選擇“獨占”復(fù)選項。 NOUPDATE指定數(shù)據(jù)庫按只讀方式打開,等效于在“打開” 對話框中選擇復(fù)選項“以只讀方式打開”,即不允許對數(shù)據(jù)庫庫進(jìn)行寫操作。數(shù)據(jù)庫文件打開默認(rèn)的方式是可讀寫方式。 2.數(shù)據(jù)庫的修改 在VISUAL FOXPRO中數(shù)據(jù)庫的修改要通過“數(shù)據(jù)庫設(shè)計器”來實現(xiàn),所以要想修改數(shù)據(jù)庫,必須先打開“數(shù)據(jù)庫設(shè)計器”,通過“數(shù)據(jù)庫設(shè)計器”來完成對數(shù)據(jù)庫的建立,修改和刪除等操作。 我們前面講過,數(shù)據(jù)庫一旦打開,“數(shù)據(jù)庫設(shè)計器”便隨之自動打開,所以我們先要打開要修改的數(shù)據(jù)庫。 如果是通過“項目管理器”打開的數(shù)據(jù)庫,如圖2.7所示,點擊“修改”按鈕,便打開了“數(shù)據(jù)庫設(shè)計器”。
在命令窗口中打開數(shù)據(jù)庫設(shè)計器或修改數(shù)據(jù)庫的命令格式為: MODIFY DATABASE[Databasename|?][NOWAIT][NOEDIT] 說明: Databasename為要打開的數(shù)據(jù)庫名稱。 如果使用“?”或不使用Databasename系統(tǒng)將出現(xiàn)提示“打開”對話框,要求用戶選擇要打開的數(shù)據(jù)庫。 NOWAIT該選項只在程序方式中使用,在命令窗口無效。 NOEDIT表示允許打開數(shù)據(jù)庫,但不允許修改。 3、數(shù)據(jù)庫的刪除 在使用中,如果某個數(shù)據(jù)庫不再有用,我們可以將其從項目管理器或磁盤上清除。 從項目管理器中刪除 打開項目管理器,選擇“移去”按鈕,出現(xiàn)如圖2.8所示對話框。
這時有三個選項,這三個選項的功能如下: 移去:只從項目管理器中刪除數(shù)據(jù)庫,并沒有真正從磁盤中刪除數(shù)據(jù)庫文件。 刪除:真正從磁盤中刪除數(shù)據(jù)庫文件,這時項目管理器中也一定不存在該文件。 取消:取消當(dāng)前操作,不對數(shù)據(jù)庫進(jìn)行刪除。 使用這種方式刪除數(shù)據(jù)庫,并沒有將數(shù)據(jù)庫中的表,視圖等數(shù)據(jù)庫對象從磁盤中刪除,因為表,視圖等對象是以文件的形式獨立存在于磁盤上的,要想在刪除數(shù)據(jù)庫的同時,刪除相應(yīng)的表等文件,可以使用命令格式。 刪除數(shù)據(jù)庫的命令格式為: DELETE DATABASE Databasename|?[DELETETABLES][RECYCLE] 說明:Databasename為要刪除數(shù)據(jù)庫的名稱。如果未指定名稱,系統(tǒng)將提示用戶打開相應(yīng)的數(shù)據(jù)庫。 DELETETABLES表示在刪除數(shù)據(jù)庫的同時,刪除數(shù)據(jù)中的數(shù)據(jù)庫表。 RECYCLE將刪除的數(shù)據(jù)庫和數(shù)據(jù)庫表等文件放入WINDOWS的回收站,需要時可以再還原。 2.2建立數(shù)據(jù)庫表 上節(jié)介紹了數(shù)據(jù)庫的基本操作,數(shù)據(jù)庫實際是對數(shù)據(jù)庫表等對象進(jìn)行管理,沒有表,數(shù)據(jù)庫的存在也就沒有多大的意義了。下面介紹如何建立表和數(shù)據(jù)庫表。 1.應(yīng)用“文件”菜單的“新建”功能項創(chuàng)建表 單擊“文件”菜單的“新建”選項,在“文件類型”對話框中選擇“表”,再選擇“新建文件”按鈕,輸入要創(chuàng)建的表的名稱,出現(xiàn)如圖2.9所示對話框。
2.應(yīng)用項目管理器創(chuàng)建表 打開相應(yīng)的項目管理器及數(shù)據(jù)庫,如圖所示,選擇“表”及“新建”,填入相應(yīng)的表的名稱,即出現(xiàn)如圖所示對話框,這時所建的表為數(shù)據(jù)庫表。如果在項目管理器中直接選擇“自由表”一項,建立的表就是自由表。
這里對表設(shè)計器中涉及到的一些基本內(nèi)容和概念作一解釋。
1.字段名 記錄中的每一個字段都是有名稱的,但在命名字段時,要遵守如下規(guī)則: (1)字段名必須以字母或漢字開頭。 (2)字段名可以由字母、漢字、下劃線和數(shù)字組成。 (3)數(shù)據(jù)庫表字段名最大長度不能超過128個字符。 (4)自由表字段名最大長度不能超過10個字符。 (5)字段名中不能有空格。 2.字段類型 字段可以使用的數(shù)據(jù)類型有如下幾種,下面對這幾種數(shù)據(jù)類型分別給予介紹。 字符型(Character)。字符型字段通常用于存儲文本數(shù)據(jù)。如字母、漢字、數(shù)字、空格、符號以及標(biāo)點符號等。字符型字段的寬度最大為254個字符。 貨幣型(Currency)。貨幣單位,如貨物的價格。 數(shù)值型(NumeriC)。數(shù)值型字段用來存儲數(shù)值數(shù)據(jù)。它可以包含數(shù)字0~9,也可以帶正、負(fù)號或小數(shù)點。 浮點型(Float)。浮點型字段在功能上等價于數(shù)值型字段。其長度在表中最長可達(dá)20位。 日期型(Date)。日期型用于存儲由年、月、日組成的日期數(shù)據(jù)。 日期時間型(DateTime)。日期時間型用于存儲包含有年、月、日、時、分、秒的日期和時間數(shù)據(jù)。 雙精度型(Double)。雙精度型用于存儲精度要求較高、位數(shù)固定的數(shù)值,或真正的浮點數(shù)值。 備注型(Memo)。備注型用于存儲不定長度的文本數(shù)據(jù)。當(dāng)文本數(shù)據(jù)長度不定且長度可能大于254,無法使用字符型字段存儲時,例如個人簡歷。備注型字段的字際內(nèi)容存儲在以.FPT為擴(kuò)展名的文件中.在內(nèi)存中占四個字節(jié)。主文件名與表的主文件名相同。 通用型(General)。通用型用于存儲OLE 對象數(shù)據(jù)。通常由字段的鏈接與嵌入實現(xiàn)。字段寬度固定為4個字節(jié),用于存儲一個4個字節(jié)的指針,指向該字段的實際內(nèi)容。通用型字段的實際內(nèi)容存儲在擴(kuò)展名為.FPT文件中。如EXCEL電子表格、WORD字處理文檔、圖像或其他多媒體對象等。通用字段存儲數(shù)據(jù)的大小,取決于相關(guān)對象的OLE服務(wù)程序,并受可用磁盤空間大小的限制。 整形(Integer)。整形用于存儲整數(shù)型數(shù)據(jù),字段寬度固定為4個字節(jié)。字符型(二進(jìn)制)(Character Binary)。字符型(二進(jìn)制)用于存儲不需要系統(tǒng)代碼頁頁維護(hù)的字符數(shù)據(jù)。其他字段特性同字符型字段。 備注型(二進(jìn)制)(Memo Binary)。備注型(二進(jìn)制)用于存儲不需要系統(tǒng)代碼頁維護(hù)的備注字段數(shù)據(jù)。其他字段特性同備注型字段。 3.字段寬度 每一種數(shù)據(jù)類型都有其規(guī)定寬度。 字符型字段的最大寬度為254。 貨幣型字側(cè)面寬度固定為8個字節(jié)。 數(shù)據(jù)型字段的最大寬度為20個字節(jié),小數(shù)位數(shù)最大為19。 浮點型字段在功能上等價于數(shù)值型字段。 日期型字段寬度固定為8個字節(jié)。 日期時間型字段寬度固定為8個字節(jié)。 雙精度型字段寬度固定為8個字節(jié)。 備注型字段寬度固定為4個字節(jié),用于存儲一個4個字節(jié)的指針,指向存儲的FPT文件中真正的備注內(nèi)容。備注字段存儲文本長度僅受可用磁盤空間大小的限制。 通用型字段寬度固定為4個字節(jié),用于存儲一個4個字節(jié)的指針,指向該字段的實際內(nèi)容。 整型字段寬度固定為4個字節(jié)。 小數(shù)位數(shù) 當(dāng)字段類型為“Numeric”或“Float”,應(yīng)在“小數(shù)位數(shù)”欄中設(shè)置小數(shù)的位數(shù)。 4.空值 是否允許為空(NULL)如果允許字段接受“NULL”欄所在框,則應(yīng)選中“NULL”欄所在框,否則,不選中該欄,表的字段不允許為NULL值。 5.字段的顯示屬性 格式:控制字段在瀏覽窗口、表單、報表等顯示時的樣式。 輸入掩碼:控制輸入該字段的數(shù)據(jù)的格式。如:商品編號的格式由一個字母和一個五位數(shù)字組成,則掩碼可以定義為S99999 。 標(biāo)題:若表結(jié)構(gòu)中字段名用的是英文,則可以在標(biāo)題中輸入漢字,這樣顯示該字段值時就比較直觀了。沒有設(shè)置標(biāo)題,則將表結(jié)構(gòu)中的字段名作為字段的標(biāo)題。 6.字段有效性 規(guī)則:限制該字段的數(shù)據(jù)的有效范圍。在規(guī)則中輸入:性別="男".OR.性別="女"。這樣當(dāng)給“性別”字段輸入記錄值時就只能輸入“男”或“女”。 訂購數(shù)量的有效性規(guī)則可以設(shè)為:訂購數(shù)量>=0 .and.訂購數(shù)量<=1000。 信息:當(dāng)向設(shè)置了規(guī)則的字段輸入不符合規(guī)則的數(shù)據(jù)時,就會將所設(shè)置的信息顯示出。 默認(rèn)值:當(dāng)往表中添加記錄時,系統(tǒng)向該字段預(yù)置的值。在“性別”字段中輸入默認(rèn)值為“男”。輸入記錄時只有女生才需要改變默認(rèn)值,可以減少輸入。字段有效性的設(shè)置如圖2.11所示。 在VFP中,表結(jié)構(gòu)可以任意修改:可以增加、刪除字段,可以修改字段的寬度,可以建立、修改、刪除有效性規(guī)則、索引等。 1.以項目管理器方式修改: 在項目管理器窗口中選擇“數(shù)據(jù)”選項卡,選定“表”,再單擊“修改”按鈕。 修改表結(jié)構(gòu)和建立表的表設(shè)計器界面完全一樣。 2.在當(dāng)前的數(shù)據(jù)庫設(shè)計器中,右擊要修改的表,然后從彈出的捷菜單中選擇修改。 3.在命令窗口中使用命令 命令格式:MODIFY STRUCTURE 修改表結(jié)構(gòu)和建立表的表設(shè)計器界面是完全一樣的,目前可以做的修改包括: ①修改已有的字段 ②增加新字段 ③刪除不用的字段 2.3表的基本操作 如果交互對表中的數(shù)據(jù)進(jìn)行操作,那么最簡單,方便的方法就是使用Browse瀏覽器,打開瀏覽器的方法有多種,常用的方法有: ①在項目管理器中將數(shù)據(jù)庫展開至表,并且選擇要操作的表,然后單擊“瀏覽”按扭(如圖2.12所示)。
②在數(shù)據(jù)庫設(shè)計器中選擇要操作的表,然后從“數(shù)據(jù)庫”菜單中選擇“瀏覽”;或者右鍵單擊要操作的表,然后從彈出菜單中選擇“瀏覽”。 ③在命令方式下,首先用USE命令打開要操作的表,然后鍵入BROWSE命令。 以上各種方式打開的BROWSE瀏覽器的界面如圖2.13所示,在該界面中可以瀏覽,添加,刪除和修改記錄等。
1. APPEND命令 APPEND命令是在表的尾部增加的記錄,它有兩種格式:APPEND或APPEND BLANK。 使用APPEND命令需要立刻交互輸入新的記錄值,界面如圖3.14所示,一次可以連續(xù)輸入多條新的記錄,然后用Ctrl+Esc鍵結(jié)束輸入新記錄。 而APPEND BLANK是在表的尾部增加一條空白記錄,然后再用EDIT,CHANGE或BROWSE命令交互輸入(修改)空白記錄的值,或用REPLACE命令直接修改空白記錄值。 2. INSERT命令 INSERT命令可以在表的任意位置插入新的記錄,命令格是: INSER[BEFORE][BLANK] 如果不指定BEFORE,則在當(dāng)前記錄之后插入一條新記錄,否則在當(dāng)前記錄之前插入一條新記錄。 如果不指定BLANK,則直接出現(xiàn)編輯界面,并交互輸入記錄的值;否則在當(dāng)前極力之后(或之前)插入一條空記錄,然后再用EDIT,CHANGE或BROWSE命令交互輸入(修改)空白記錄的值,或用REPLACE命令直接修改該空白記錄值。 1.置刪除標(biāo)記的命令 邏輯刪除或置刪除標(biāo)記的命令是DELETE,常用格式如下: DELETE[FORlExpressionl] 如果不用FOR短語指定邏輯條件,則只邏輯刪除當(dāng)前一條記錄;如果用FOR短語指定了邏輯表達(dá)式lExpressionl,則邏輯刪除使該邏輯表達(dá)式為真的所有記錄。 例2.1 邏輯刪除當(dāng)前表商品名稱為夾心餅干的記錄。 Dele for 商品名稱="夾心餅干"
2.恢復(fù)記錄的命令 被邏輯刪除的記錄可以恢復(fù),恢復(fù)記錄的命令是RECALL,常用格式如下: RECALL[FORlExpressionl] 如果不用FOR短語指定邏輯條件,則只恢復(fù)當(dāng)前一條記錄(如果當(dāng)前記錄沒有刪除標(biāo)記,則該命令什么都不做);如果用FOR短語指定了邏輯表達(dá)式lExpressionl,則恢復(fù)使該邏輯表達(dá)式為真的所有記錄。 例2.2 將當(dāng)前表中已經(jīng)刪除的夾心餅干恢復(fù)。 Recall for商品名稱="夾心餅干" 3.物理刪除有刪除標(biāo)記的記錄 物理刪除有刪除標(biāo)記記錄的命令是PACK,執(zhí)行該命令后所有有刪除標(biāo)記的記錄將從表中被物理地刪除,并且不可能再恢復(fù)。 例2.3 將當(dāng)前表中有刪除標(biāo)記的記錄物理刪除. Pack 4.物理刪除表中的全部記錄 使用ZAP命令可以物理刪除表中的全部記錄(不管是否有刪除標(biāo)記),該命令只是刪除全部記錄,并沒有刪除表,執(zhí)行完該命令后表結(jié)構(gòu)依然存在。 1.交互修改的命令 EDIT和CHANGE均用于交互對當(dāng)前的表的記錄進(jìn)行編輯、修改,可通過鼠標(biāo)操作快速定位到要修改的記錄,然后直接在原有的基礎(chǔ)上修改。 2.直接修改的REPLACE命令 可以使用命令直接用指定表達(dá)式或值修改記錄, REPLACE命令的常用格式為: 【格式】REPLACE <字段名1> WITH <表達(dá)式1> [FOR <邏輯表達(dá)式1>] 【功能】用指定表達(dá)式的值替換當(dāng)前表中滿足條件記錄的指定字段的值。 說明:該命令適合對當(dāng)前庫進(jìn)行成批地、有規(guī)律地修改。缺省范圍、條件時,僅替換當(dāng)前記錄, 該命令回車后,數(shù)據(jù)修改自動完成。 例2.4 求出訂購單表中的金額 Replace all 金額 with 單價*訂購數(shù)量 【格式】LIST | DISPLAY [FIELDS <字段名表>][<范圍>] [FOR<條件表達(dá)式>] 【功能】將當(dāng)前表文件的記錄按照指定的選項進(jìn)行顯示。 【說明】DISPLAY命令與LIST命令的功能相似,當(dāng)表文件的數(shù)據(jù)記錄較多時,用DISPLAY命令較為方便。 如果同時缺省<范圍>和 <條件>子句,DISPLAY命令只顯示當(dāng)前的一條記錄,而LIST命令則是取默認(rèn)值ALL而顯示全部記錄。 FIELDS <字段名表>:用來指定顯示的字段。FOR<條件表達(dá)式>:指定對表文件中指定范圍內(nèi)滿足條件的記錄進(jìn)行操作。 <范圍>:用來指定顯示哪些記錄。 “范圍”有以下四種表示方法: · ● ALL:所有記錄。 ● ·NEXT N:從當(dāng)前記錄開始,后面的N條記錄(包括當(dāng)前記錄) ·RECORD N:第N條記錄。 ·REST:當(dāng)前記錄后的全部記錄(包括當(dāng)前記錄)。 例2.5 顯示最后一個字為“酒”的記錄 List for right(商品名稱,2)= "酒" 1.絕對定位 GO[to][record][<物理記錄號>|<內(nèi)存變量表達(dá)式>]|[top]|[bottom] 【功能】將記錄指針移動到指定的位置 2.相對定位 skip[±記錄數(shù)] 【功能】從當(dāng)前記錄開始向前或向后移動記錄指針。 3.用LOCATE命令定位 【格式】LOCATE [<范圍>] [FOR <條件>] 【功能】按順序搜索表,從而找到滿足指定邏輯表達(dá)式的第一個記錄。 參數(shù)描述: [<范圍>]:指定要定位的記錄范圍。只有在范圍內(nèi)的記錄才被定位。LOCATE命令的默認(rèn)范圍是ALL。 [FOR <條件>]:LOCATE命令按順序搜索當(dāng)前表以找到滿足邏輯表達(dá)式的第一個記錄。如果讓指針指向下一條滿足條件的記錄上,使用CONTINUE命令。 例2.6使指針指向煙酒類的記錄 LOCATE FOR 類別="煙酒" CONTINUE 2.4索引和排序 數(shù)據(jù)庫表記錄一般是按照其輸入的順序進(jìn)行顯示的。在處理表記錄的過程中,通常是按照表中記錄的存儲順序進(jìn)行。當(dāng)數(shù)據(jù)庫表中記錄的數(shù)據(jù)很多時,按照這種方法顯示就不便于用戶查找自己需要的信息。特別是當(dāng)需要按照另外的順序處理時,可以使用索引來改變記錄的順序。 由于索引文件中存儲的是按照某一字段的值排列的一組記錄號,每條記錄號指向一個待處理的記錄,所以實際上索引可以理解為根據(jù)某一字段的值進(jìn)行邏輯排序的一組指針。在按照索引重新排列的數(shù)據(jù)庫表中顯示的記錄,VFP將按照指針排列的順序分別讀取每一條記錄,而這些記錄在數(shù)據(jù)庫中的實際存儲位置并未改變。 1.索引的結(jié)構(gòu) VFP中有三種索引:結(jié)構(gòu)復(fù)合索引(.CDX)、非結(jié)構(gòu)復(fù)合索引(.CDX)、獨立索引(.IDX)。其中結(jié)構(gòu)復(fù)合索引是所有索引中最重要的索引。本書中大多是結(jié)構(gòu)復(fù)合索引,它的特點是: 在表打開時自動打開。 在同一個索引文件中可以有多種排序方式,具有多個索引關(guān)鍵字。 在對表進(jìn)行添加、更改、刪除時索引文件自動維護(hù)。 2.索引的類型 在數(shù)據(jù)庫中,把用來確定索引順序的字段稱為關(guān)鍵字字段。在VFP中,可以根據(jù)關(guān)鍵字字段建立下列四各類型索引:主索引、候選索引、普通索引及惟一索引。 主索引:可以確保字段中輸入值的惟一性并決定了處理記錄的順序。在創(chuàng)建數(shù)據(jù)時,除了紐帶表以外,一般應(yīng)根據(jù)主關(guān)鍵字字段給每一個表建立主索引。但不能給自由表建立主索引。 候選索引:同主索引一樣也能確保字段值的惟一性,也能根據(jù)候選索引決定處理記錄的順序。與主索引不同的是,自由表可以建立候選索引。在數(shù)據(jù)表中,主索引只能有一個,但候選索引可以有多個。在創(chuàng)建數(shù)據(jù)庫時,應(yīng)根據(jù)主關(guān)鍵字字段以外的其他字段建立候選索引。 普通索引:也可以決定記錄的處理順序,但其最大的特點是允許字段中的值可以重復(fù)。在創(chuàng)建數(shù)據(jù)庫時,應(yīng)在位于一對多關(guān)系的多端的表中建立一個普通索引。這樣,在根據(jù)普通索引排序或查詢記錄時,系統(tǒng)將列出所有符合條件的記錄。在一個表中可以加入多個普通索引。 惟一索引:為了保證與以前版本的兼容性,VFP中可以使用惟一索引。惟一索引允許出現(xiàn)重復(fù),但惟一索引只存儲索引文件中重復(fù)值第一次出現(xiàn)的記錄。“惟一”指索引文件對每一個特定的關(guān)鍵字只存儲一次,而忽略了重復(fù)值第二次及以后的記錄。 對于表,可以對一個字段或一個表達(dá)式建立索引。為了使索引更為有效,對于那些經(jīng)常用于對表、視圖或報表建立過濾器的字段最好建立索引。如果用戶對不經(jīng)常用于過濾或查詢的字段建立索引,它有可能降低運行效率。建立索引的操作步驟如下: ①在“項目管理器”中,選擇想要加入字段的“表”,然后選擇“修改”按鈕。在所顯示的“表設(shè)計器”中,選擇“索引”,。 ②在“索引名”框中,輸入索引名。 ③在“類型”處,選擇索引類型。 ④在“表達(dá)式”框中,輸入“索引表達(dá)式”,或單擊右側(cè)“…”按鈕,系統(tǒng)進(jìn)入“表達(dá)式生成器”對話框,來定義表達(dá)式。 ⑤如果想要選擇記錄,可以在“篩選”框右側(cè),單擊“ … ”按鈕,系統(tǒng)進(jìn)入“表達(dá)式生成器”對話框,建立過濾器。單擊“確定”按鈕,完成索引的創(chuàng)建。 如果在表中建立一個主索引或候選索引,輸入記錄時,系統(tǒng)還可以自動驗證輸入的記錄是否有重復(fù)。如果出現(xiàn)重復(fù)值,系統(tǒng)將警告輸入的數(shù)據(jù)違背了惟一性規(guī)定。這時需要對出現(xiàn)的重復(fù)記錄進(jìn)行修改,或者還原記錄的原有內(nèi)容。 雖然利用索引可以提供數(shù)據(jù)的排序和查找速度,但是,如果建立很多不常使用的索引,不但不能提高程序的執(zhí)行速度,相反只能起到負(fù)面作用。 使用索引應(yīng)遵循的原則 按照工作性質(zhì)的不同,用戶可以應(yīng)用不同的索引,索引的使用最好遵循以下原則:為了提高顯示、查詢、打印的速度,用“普通索引”、“候選索引”或“主索引”。為了控制字段的重復(fù)值或記錄進(jìn)行排序,對數(shù)據(jù)庫“表”用“主索引”或“候選索引”,對于“自由表”,用“候選索引”。 【格式】INDEX ON <索引關(guān)鍵表達(dá)式> TO <索引文件名>/[ TAG] <索引標(biāo)記名> [UNIQUE] FOR <條件>[ADDITIVE] 【功能】對當(dāng)前表中滿足條件的記錄,按<索引表達(dá)式>的值建立一個索引文件,并打開此索引文件,其缺省的文件擴(kuò)展名為.IDX。 <索引關(guān)鍵表達(dá)式>: 用以指定記錄重新排序的字段或表達(dá)式。 例2.7給商品表按建立索引 INDEX ON 商品編號 TAG商品編號 1.打開索引文件 ①在打開表時打開索引文件 格式:USE <表文件名> INDEX <索引文件名表> [ORDER <數(shù)值表達(dá)式>/ <單索引文件名> [OF <復(fù)合索引文件名>]] [ASCENDING/ DESCENDING] ②在打開表后打開索引文件 格式:SET INDEX TO [<索引文件名表>/?] [ORDER <索引號>/<復(fù)合索引文件名>/[TAG] <索引標(biāo)記> [OF <復(fù)合索引文件名>]] [ASCENDING/DESCENDING] [ADDITIVE] 2.設(shè)置主控索引 格式:SET ORDER TO [<數(shù)值表達(dá)式>/<單索引文件名>/[TAG] <索引標(biāo)記> [OF <復(fù)合索引文件名>] [ASCENDING/DESCEN-DING] 3.使用索引快速定位 格式:SEEK <表達(dá)式> [ORDER <索引號>/<單索引文件名>/ [TAG] <索引標(biāo)記> [OF <復(fù)合索引文件名>] [ASCENDING/ DESCENDING]] 例2.8 假設(shè)當(dāng)前使用商品表,將指針定位在商品編號為S10003的記錄上 SEEK "S10003" ORDER 商品編號 4.刪除索引 DELETE TAG 索引名 分類將關(guān)鍵字段值相同的記錄按順序存放在一起,生成一個新的表文件。 格式:SORT TO <表文件名> ON <字段名1> [/A | /D] [/C] [,<字段名2> [/A | /D] [/C] ...] [ASCENDING|DESCENDING] [<范圍>] [FOR <邏輯表達(dá)式>] <表文件名>:指定經(jīng)過排序后所生成的新表的表文件名。 ON <字段名1>:在當(dāng)前選定的、要排序的表中指定關(guān)鍵字段,字段的內(nèi)容和數(shù)據(jù)類型決定了記錄在新表中的順序。 [/A | /D] [/C]:指定排序順序(升序或降序)。/A指定為按升序排序,/D指定按降序排序。如果在字符型字段名后面包含/C,則忽略大小寫??梢园?span lang=EN-US>/C選項與/A或/D選項組合起來。 [ASCENDING]:將所有不帶/D的字段指定為升序排列。 [DESCENDING]:將所有不帶/A的字段指定為降序排列。如果省略ASCENDING 和DESCENDING參數(shù),則排序默認(rèn)為升序。 [<范圍>]:指定需要排序記錄的范圍。默認(rèn)范圍為ALL。 [FOR <邏輯表達(dá)式>] :在當(dāng)前表中指定排序中只包含邏輯條件為“真”的記錄。 例2.9 把類別表按類別排序 SORT TO 商品1 ON 商品編號 2.5數(shù)據(jù)完整性 實體完整性是保證表中記錄唯一的特征,即在一個表中不允許有重復(fù)記錄。在VFP中利用主關(guān)鍵字或候選關(guān)鍵字來保證表中記錄的唯一,即保證實體唯一性。 如果一個 字段的值或幾個字段的值能夠唯一標(biāo)識表中的一條記錄,則這樣的字段稱為候選主關(guān)鍵字。在一個表中可能有幾個具有這種特征字段或字段的組合,這時從中選擇一個座位主關(guān)鍵字。 在VFP中將主關(guān)鍵字稱為主索引,將候選關(guān)鍵字稱為候選索引。 域完整性應(yīng)該是我們最熟悉的了,以前我們所熟知的數(shù)據(jù)類型的定義都是域完整性的范疇。如對于數(shù)值型字段,通過制定不同的寬度說明不同范圍的數(shù)據(jù)類型,從而可以限定字段的取值類型和取值范圍。但這些對域完整性還遠(yuǎn)遠(yuǎn)不夠,我們還可以用一些域約束規(guī)則來進(jìn)一步保證域完整性。域約束規(guī)則也稱作字段的有效性規(guī)則,在插入或修改字段值時被激活,主要用于數(shù)據(jù)輸入正確性的檢驗。 建立字段有效性規(guī)則比較簡單直接的方法仍然是在表設(shè)計器中建立,在表設(shè)計器的“字段”選項卡中有一組定義字段有效性的項目,它們是規(guī)則、信息、默認(rèn)值三項。具體操作步驟是: ①首先單擊選擇要定義字段的有效性規(guī)則的字段。 ②然后分別輸入和編輯規(guī)則、信息及默認(rèn)值等項目。 字段有效性規(guī)則的項目可以直接輸入,也可以單擊輸入旁的按鈕打開表達(dá)式生成器對話框編輯、生成相應(yīng)的表達(dá)式。 以商品進(jìn)貨銷售系統(tǒng)數(shù)據(jù)庫中的訂購單為例,設(shè)訂購單的訂購數(shù)量有效性規(guī)則在100至200之間,當(dāng)輸入的訂購數(shù)量不再此范圍內(nèi)時給出出錯提示:訂購數(shù)量的默認(rèn)值是100。 為此,在“規(guī)則”框中(或表達(dá)式生成器)輸入表達(dá)式: 訂購數(shù)量>=100.AND.訂購數(shù)量<=200 在“信息”框中(表達(dá)式生成器)輸入表達(dá)式: “訂購數(shù)量輸入錯誤,應(yīng)該在100—200之間” 在“默認(rèn)值”框中(或表達(dá)式生成器)輸入表達(dá)式:100 參照完整性與表之間的關(guān)聯(lián)有關(guān),它的大概含義是:當(dāng)插入、刪除或修改一個表中的數(shù)據(jù)時,通過參照引用相互關(guān)聯(lián)的另一個表中的數(shù)據(jù),來檢查對表的數(shù)據(jù)操作是否正確。假如銷售單記錄有商品編號字段構(gòu)成,當(dāng)插入一條這樣的記錄時,如果沒有參照完整性檢查,則可能會插入一個并不存在的商品記錄,這時插入的記錄肯定是錯誤的,進(jìn)行參照完整性檢查,則可以保證插入記錄的合法性。 參照完整性是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的一個很重要的功能。在Visual FoxPro中為了建立參照完整性,必須首先建立表之間的聯(lián)系(在中文版Visual FoxPro中稱為關(guān)系)。 在數(shù)據(jù)庫設(shè)計器中設(shè)計表之間的聯(lián)系時,要在父表中建立主索引,在子表中建立普通索引,然后通過父表的主索引和子表的普通索引建立起兩個表之間的聯(lián)系。
圖2.15顯示了數(shù)據(jù)庫設(shè)計器中已經(jīng)建立好的3個表。在這3個表中,商品和訂購單之間有一個一對多的聯(lián)系,連接字段是商品編號;在供應(yīng)商和訂購單之間有一個一對多的聯(lián)系,連接字段是供應(yīng)商號。 我們先建立商品和訂購單之間的一對多聯(lián)系,具體方法是:在圖2.15所示的數(shù)據(jù)庫設(shè)計器中用鼠標(biāo)單擊選中商品表中的主索引商品編號,按住鼠標(biāo)左鍵,并拖動鼠標(biāo)到訂購單表的商品編號索引上(鼠標(biāo)箭頭會變成小矩形狀),最后釋放鼠標(biāo)聯(lián)系就建立好了。用同樣的方法可以建立供應(yīng)商和訂購單之間的聯(lián)系。
建立好聯(lián)系的表如圖2.16所示(觀察連接表的符號,這時默認(rèn)的是一對多的聯(lián)系)。如果在建立聯(lián)系時操作有誤,隨時可以通過編輯修改聯(lián)系。方法是用鼠標(biāo)右擊要修改的聯(lián)系,然后從彈出的菜單中選擇“編輯關(guān)系”打開“編輯關(guān)系”對話框,如圖2.17所示。
到目前為止,只是建立了表之間的聯(lián)系,Visual FoxPro默認(rèn)沒有建立任何參照完整性約束。 在建立參照完整性之前必須首先清理數(shù)據(jù)庫,這時可以在“數(shù)據(jù)庫”(只要打開數(shù)據(jù)庫設(shè)計器就會有該菜單項)菜單中選擇“清理數(shù)據(jù)庫”。 在清理完整數(shù)據(jù)庫后,用鼠標(biāo)右擊表之間的聯(lián)系并從彈出菜單選擇“編輯參照完整性”,打開的參照完整性生成器如圖2.18所示(注意:不管單擊哪個聯(lián)系,所有聯(lián)系將都出現(xiàn)在參照完整性生成器中)。 參照完整性規(guī)則完整性規(guī)則包括更新規(guī)則、刪除規(guī)則、插入規(guī)則。
2.6自由表 1.建立數(shù)據(jù)庫表 要將已建好的自由表添加至某數(shù)據(jù)庫中,可以先打開“數(shù)據(jù)庫設(shè)計器”,點擊右鍵,選擇“添加表”一項,如圖所示。再從出現(xiàn)的窗口中找到相應(yīng)的表名即可。
這時該表即成為指定數(shù)據(jù)庫的數(shù)據(jù)庫表,出現(xiàn)在數(shù)據(jù)庫設(shè)計器中。如下圖所示。
也可以在建表時,直接建立數(shù)據(jù)庫表。 打開項目管理器,選擇相應(yīng)數(shù)據(jù)庫,如圖2.21所示。點擊右側(cè)“新建”按鈕,再一次出現(xiàn)上述重復(fù)畫面,這是所建的表是數(shù)據(jù)庫1的數(shù)據(jù)庫表。
2、將數(shù)據(jù)庫表轉(zhuǎn)化為自由表 打開數(shù)據(jù)庫設(shè)計器,如圖所示,選擇要成為自由表的表,點擊右鍵,選擇“刪除”,出現(xiàn)如圖2.22所示對話框,
移去:將表從數(shù)據(jù)庫中移去,成為自由表。 刪除:將表從盤上永久刪除,不再可恢復(fù)。 取消:取消當(dāng)前操作。
2.7多個表同時使用 多表(工作區(qū))的同時使用 迄今所講述的對表的操作都是在一個工作區(qū)進(jìn)行的,每個工作區(qū)最多只能打開一個表文件,用USE命令打開一個新的表,同時也就關(guān)閉了前面已打開的表。在實際應(yīng)用中,用戶常常需要同時打開多個表文件,以便對多個表文件的數(shù)據(jù)進(jìn)行操作。為了解決這一問題,Visual FoxPro引入了工作區(qū)的概念。Visual FoxPro允許用戶在表間建立臨時關(guān)系和永久關(guān)系。 1.工作區(qū)和當(dāng)前工作區(qū) VFP 能同時提供32767個工作區(qū)。系統(tǒng)默認(rèn)值為1區(qū)。在任意時刻,只有一個工作區(qū)是當(dāng)前工作區(qū),用戶只能在當(dāng)前工作區(qū)對打開的當(dāng)前庫進(jìn)行操作。 每一個工作區(qū)都可以并且只能打開一個數(shù)據(jù)庫文件。同一個數(shù)據(jù)庫文件不允許同時在多個工作區(qū)打開,但在其它工作區(qū)中被關(guān)閉之后,可以在任意一個工作區(qū)中被打開。各工作區(qū)中打開的數(shù)據(jù)庫彼此相互獨立(指針不受影響)。 2.選擇當(dāng)前工作區(qū)(每一個工作區(qū)用工作區(qū)號或別名來標(biāo)識) ①工作區(qū)號 利用數(shù)字1~32767來標(biāo)識32767個不同的工作區(qū) ②別名 前10工作區(qū)用A~J10個字母來標(biāo)識,11~32767工作區(qū)用W11~W32767表示。 采用該工作區(qū)中已打開的數(shù)據(jù)表的表名來作別名 用戶自己定義 ③工作區(qū)的選擇 當(dāng)系統(tǒng)啟動時,1號工作區(qū)是當(dāng)前工作區(qū),若想改變當(dāng)前工作區(qū),則可使用SELECT命令來轉(zhuǎn)換當(dāng)前工作區(qū)。 【命令格式】SELECT<工作區(qū)號>/<工作區(qū)別名> 【功能】選擇一個工作區(qū)作為當(dāng)前工作區(qū)。 說明:<工作區(qū)號> | <工作區(qū)別名>:指定當(dāng)前工作區(qū)。選擇工作區(qū)時,可以直接指定區(qū)號,也可以通過別名指定工作區(qū),二者是等效的。 別名可以是系統(tǒng)規(guī)定的別名,也可以是用戶規(guī)定的別名,甚至可以用已打開的表名替代工作區(qū)別名。 執(zhí)行該命令后,對任何工作區(qū)中的表及記錄指針均不發(fā)生影響,僅實現(xiàn)各個工作區(qū)之間切換。 例2.10 在1號和2號工作區(qū)內(nèi)分別打開商品、供應(yīng)商和訂購單3個表,并選擇1號工作區(qū)為當(dāng)前工作區(qū)。 SELECT 1 USE 商品 SELECT B USE 供應(yīng)商 SELECT 3 USE 訂購單 SELECT 1 或:USE 商品 IN 1 USE 供應(yīng)商 IN 2 USE 訂購單 IN 3 3.非當(dāng)前工作區(qū)字段的引用 Visual FoxPro系統(tǒng)對當(dāng)前工作區(qū)上的表可以進(jìn)行任何操作,也可以對其他工作區(qū)中的表文件的數(shù)據(jù)進(jìn)行訪問。在主工作區(qū)可通過以下兩種格式訪問其他工作區(qū)表中的數(shù)據(jù)。 格式:<工作區(qū)別名>-> <字段名> <工作區(qū)別名>. <字段名> 通過用工作區(qū)別名指定欲訪問的工作區(qū),所得到的字段值為指定工作區(qū)打開的表當(dāng)前記錄的字段值。 例2.11 在1號和2號工作區(qū)打開商品和訂購單,在1號工作區(qū)內(nèi)查看當(dāng)前記錄的商品編號、商品名稱、訂購數(shù)量、商品單價等字段內(nèi)容。 SELECT A USE 商品 && 在一號工作區(qū)中打開商品 SELECT B USE 訂購單 && 在二號工作區(qū)中打開訂購單 SELECT A && 選擇1號工作區(qū)為當(dāng)前工作區(qū) DISPLAY 商品編號,商品名稱,B.訂購數(shù)量B->商品單價 表之間的關(guān)聯(lián) 1.關(guān)聯(lián)的概述 所謂表文件的關(guān)聯(lián)是把當(dāng)前工作區(qū)中打開的表與另一個工作區(qū)中打開的表進(jìn)行邏輯連接,而不生成新的表。當(dāng)前工作區(qū)的表和另一工作區(qū)中的打開表建立關(guān)聯(lián)后,當(dāng)前工作區(qū)是表的記錄指針移動時,被關(guān)聯(lián)工作區(qū)的表記錄指針也將自動相應(yīng)移動,以實現(xiàn)對多個表的同時操作。 在多個表中,必須有一個表為關(guān)聯(lián)表,此表常稱為父表,而其他的表則稱為被關(guān)聯(lián)表,常稱為子表。在兩個表之間建立關(guān)聯(lián),必須以某一個字段為標(biāo)準(zhǔn),該字段稱為關(guān)鍵字段。 2.表文件關(guān)聯(lián)的建立 【格式】SET RELATION TO <關(guān)鍵字段表達(dá)式> INTO<別名> | <工作區(qū)號>] [ADDITIVE] 【功能】將當(dāng)前工作區(qū)的表文件與<別名>(或工作區(qū)號)指定的工作區(qū)中的表文件按<關(guān)鍵字段表達(dá)式>或<數(shù)值表達(dá)式>建立關(guān)聯(lián)。 【說明】當(dāng)用<關(guān)鍵字段表達(dá)式>建立關(guān)聯(lián)時,關(guān)鍵字必須是兩個表文件共有字段,且別名表文件已按關(guān)鍵字段建立了索引文件,并已指定關(guān)鍵字段為當(dāng)前索引。 當(dāng)父表文件的記錄指針移動時,子表文件的記錄指針根據(jù)主索引文件指向關(guān)鍵字段值與父表文件相同的記錄。如果子表中沒有與關(guān)鍵字段值相同的記錄,記錄指針指向文件尾,EOF()為.T.。 ADDITIVE:表示當(dāng)前表與其他工作區(qū)表己有的關(guān)聯(lián)仍有效,實現(xiàn)一個表和多個表之間的關(guān)聯(lián);否則取消當(dāng)前表與其他工作區(qū)表已有的關(guān)聯(lián),當(dāng)前表只能與一個表建立關(guān)聯(lián)。 SET RELATION TO則表示取消當(dāng)前工作區(qū)與其他工作區(qū)的關(guān)聯(lián)。 例2.12 將表文件.DBF和訂購單.DBF以商品編號為關(guān)鍵字段建立關(guān)聯(lián)。 SELECT 2 && 選擇工作區(qū)2 USE 訂購單 && 打開表文件訂購單.DBF INDEX ON 商品編號 TAG商品編號 && 建立商品編號標(biāo)識 SET ORDER TO 商品編號 && 指定商品編號為當(dāng)前索引 SELECT 1 && 選擇工作區(qū)1 USE 商品 && 打開表文件商品.DBF SET RELATION TO商品編號 INTO 2 && 建立一對一關(guān)聯(lián) 說明:在建立關(guān)聯(lián)之前,必須打開一個表(父表),而且還必須在另一個工作區(qū)內(nèi)打開其它表(子表)。相關(guān)的各表通常有一個相同的字段。父表可以同時與多個子表建立關(guān)系,稱為“一父多子”的關(guān)系。<關(guān)聯(lián)表達(dá)式>可以是字符型、數(shù)值型、日期型表達(dá)式。如果建立父子關(guān)聯(lián)之前,子表已經(jīng)按照關(guān)聯(lián)條件建立了索引,并將該索引文件指定為主控索引,那么,每當(dāng)當(dāng)前工作區(qū)父表的記錄指針重新定位時,就檢索子表,將子表的記錄指針定位于<關(guān)聯(lián)表達(dá)式>值與<索引表達(dá)式>值相同的第一條記錄之上。 除了可以在一個工作區(qū)中與多個表建立關(guān)聯(lián)以外,還允許在多個工作區(qū)中建立多個表之間的關(guān)聯(lián),但關(guān)聯(lián)不能構(gòu)成循環(huán)。 |
|