VFP第3章_2016_第1頁(yè)
VFP第3章_2016_第2頁(yè)
VFP第3章_2016_第3頁(yè)
VFP第3章_2016_第4頁(yè)
VFP第3章_2016_第5頁(yè)
已閱讀5頁(yè),還剩36頁(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)介

1、合肥工業(yè)大學(xué)1isualFVoxPro合肥工業(yè)大學(xué)23.1.1 表的排序表的排序 排序是根據(jù)不同的字段對(duì)當(dāng)前表的記錄做出不同排序是根據(jù)不同的字段對(duì)當(dāng)前表的記錄做出不同的排列,產(chǎn)生一個(gè)新的表。新表與舊表內(nèi)容完全一的排列,產(chǎn)生一個(gè)新的表。新表與舊表內(nèi)容完全一樣,只是它們的記錄排列順序不同。樣,只是它們的記錄排列順序不同。格式:格式: SORT TO ON /A|/D/C ,/A|/D/C FIELDS FOR 該命令對(duì)當(dāng)前表中的記錄按指定的字段排序,該命令對(duì)當(dāng)前表中的記錄按指定的字段排序,并將排序后的記錄輸出到一個(gè)新的表中。并將排序后的記錄輸出到一個(gè)新的表中。 (1)是排序后產(chǎn)生的新表文件名,其擴(kuò)

2、展是排序后產(chǎn)生的新表文件名,其擴(kuò)展名默認(rèn)為名默認(rèn)為.dbf。 (2)由)由的值決定新表中記錄的排列順序,的值決定新表中記錄的排列順序,缺省時(shí),按升序排列。不能按備注型或通用型字段缺省時(shí),按升序排列。不能按備注型或通用型字段排序。可以用多個(gè)字段排序。排序。可以用多個(gè)字段排序。為首要排序字為首要排序字段,段,的值相等的記錄再按的值相等的記錄再按進(jìn)一步進(jìn)一步排序。排序。3.1 3.1 排序與索引排序與索引合肥工業(yè)大學(xué)3(3) /A表示升序,表示升序,/D表示降序,表示降序, /C忽略字符大小寫。忽略字符大小寫。(4)由)由FIELDS指定從當(dāng)前表中的字段來(lái)生成新表指定從當(dāng)前表中的字段來(lái)生成新表中包含

3、的字段名。如果省略中包含的字段名。如果省略FIELDS子句,當(dāng)前表子句,當(dāng)前表中的所有字段都包含在新表中。中的所有字段都包含在新表中。(5)若省略)若省略、FOR 等選項(xiàng),表示對(duì)等選項(xiàng),表示對(duì)所有記錄排序。所有記錄排序。例例 就學(xué)生表,顯示入學(xué)成績(jī)最高的就學(xué)生表,顯示入學(xué)成績(jī)最高的5名學(xué)生的記錄。名學(xué)生的記錄。 操作命令如下:操作命令如下: USE 學(xué)生學(xué)生 SORT ON 入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)/D TO cjb USE cjb &打開(kāi)排序后生成的新表文件打開(kāi)排序后生成的新表文件 LIST NEXT 5合肥工業(yè)大學(xué)43.1.2 表的索引表的索引1. 索引的概念索引的概念文件中的記錄按其磁盤

4、存儲(chǔ)順序輸出,這種順序稱為物文件中的記錄按其磁盤存儲(chǔ)順序輸出,這種順序稱為物理順序。排序后,在生成的新文件中形成了新的物理理順序。排序后,在生成的新文件中形成了新的物理順序,在順序,在數(shù)據(jù)記錄很多時(shí),既費(fèi)時(shí)間,又占用磁盤空數(shù)據(jù)記錄很多時(shí),既費(fèi)時(shí)間,又占用磁盤空間間。索引與排序不同,它不改變記錄的物理順序,而是按某索引與排序不同,它不改變記錄的物理順序,而是按某個(gè)索引關(guān)鍵字來(lái)建立記錄的邏輯順序。在索引文件中,個(gè)索引關(guān)鍵字來(lái)建立記錄的邏輯順序。在索引文件中,形成一個(gè)索引關(guān)鍵表達(dá)式值與記錄號(hào)之間的對(duì)照表,形成一個(gè)索引關(guān)鍵表達(dá)式值與記錄號(hào)之間的對(duì)照表,所有關(guān)鍵字值順序排列,每個(gè)值對(duì)應(yīng)原文件的一個(gè)記所有

5、關(guān)鍵字值順序排列,每個(gè)值對(duì)應(yīng)原文件的一個(gè)記錄號(hào),這樣便確定了記錄的邏輯順序。使用時(shí),系統(tǒng)錄號(hào),這樣便確定了記錄的邏輯順序。使用時(shí),系統(tǒng)就依次按索引文件中的記錄號(hào)取出表中的物理記錄,就依次按索引文件中的記錄號(hào)取出表中的物理記錄,達(dá)到按關(guān)鍵字值順序來(lái)列出記錄的效果。達(dá)到按關(guān)鍵字值順序來(lái)列出記錄的效果。索引不但可索引不但可以使數(shù)據(jù)記錄重新組織時(shí)節(jié)省磁盤空間,而且可以提以使數(shù)據(jù)記錄重新組織時(shí)節(jié)省磁盤空間,而且可以提高表的查詢速度。高表的查詢速度。合肥工業(yè)大學(xué)52.索引文件的種類索引文件的種類VFP提供了兩種不同類型的索引文件:?jiǎn)嗡饕募吞峁┝藘煞N不同類型的索引文件:?jiǎn)嗡饕募蛷?fù)合索引文件。復(fù)合索引

6、文件。(1)單索引文件。單索引文件是一個(gè)索引文件中只)單索引文件。單索引文件是一個(gè)索引文件中只能保存一個(gè)索引,其擴(kuò)展名為能保存一個(gè)索引,其擴(kuò)展名為.idx。采用單索引時(shí),。采用單索引時(shí),對(duì)于每一個(gè)索引都要建立一個(gè)索引文件,在更新索對(duì)于每一個(gè)索引都要建立一個(gè)索引文件,在更新索引時(shí),必須打開(kāi)所有的索引文件。引時(shí),必須打開(kāi)所有的索引文件。(2)復(fù)合索引文件。復(fù)合索引文件可以存儲(chǔ)多個(gè)索)復(fù)合索引文件。復(fù)合索引文件可以存儲(chǔ)多個(gè)索引,其擴(kuò)展名為引,其擴(kuò)展名為.cdx。復(fù)合索引文件中的每個(gè)索引。復(fù)合索引文件中的每個(gè)索引用一個(gè)索引標(biāo)志(用一個(gè)索引標(biāo)志(Index Tag)來(lái)表示。一個(gè)復(fù)合索)來(lái)表示。一個(gè)復(fù)合索

7、引文件中可包含的索引的數(shù)目,亦即索引標(biāo)志的數(shù)引文件中可包含的索引的數(shù)目,亦即索引標(biāo)志的數(shù)目?jī)H受內(nèi)存空間的限制。目?jī)H受內(nèi)存空間的限制。合肥工業(yè)大學(xué)6(3)結(jié)構(gòu)復(fù)合索引文件)結(jié)構(gòu)復(fù)合索引文件 有一類特殊的復(fù)合索引文件叫做結(jié)構(gòu)復(fù)有一類特殊的復(fù)合索引文件叫做結(jié)構(gòu)復(fù)合索引文件,它的文件名與相應(yīng)的表名相同,合索引文件,它的文件名與相應(yīng)的表名相同,擴(kuò)展名仍為擴(kuò)展名仍為.cdx。結(jié)構(gòu)復(fù)合索引文件的特殊。結(jié)構(gòu)復(fù)合索引文件的特殊性在于無(wú)論何時(shí)打開(kāi)表,該索引文件將由系性在于無(wú)論何時(shí)打開(kāi)表,該索引文件將由系統(tǒng)自動(dòng)打開(kāi)。這就意味著當(dāng)對(duì)表的記錄進(jìn)行統(tǒng)自動(dòng)打開(kāi)。這就意味著當(dāng)對(duì)表的記錄進(jìn)行修改時(shí),全部索引也將自動(dòng)更新。所以一

8、般修改時(shí),全部索引也將自動(dòng)更新。所以一般情況下,使用結(jié)構(gòu)復(fù)合索引是極為方便的。情況下,使用結(jié)構(gòu)復(fù)合索引是極為方便的。合肥工業(yè)大學(xué)73. 索引的類型索引的類型 主索引:主索引:是一個(gè)不允許在指定字段或表達(dá)式是一個(gè)不允許在指定字段或表達(dá)式 中出現(xiàn)重復(fù)值的索引中出現(xiàn)重復(fù)值的索引 候選索引:候選索引:是一個(gè)不允許在指定字段和表達(dá)式中是一個(gè)不允許在指定字段和表達(dá)式中 出現(xiàn)重復(fù)值的索引出現(xiàn)重復(fù)值的索引 唯一索引:唯一索引:系統(tǒng)只在索引文件中保留第一次出現(xiàn)系統(tǒng)只在索引文件中保留第一次出現(xiàn) 的索引關(guān)鍵字值的索引關(guān)鍵字值 普通索引:普通索引:是一個(gè)最簡(jiǎn)單的索引,允許索引關(guān)鍵是一個(gè)最簡(jiǎn)單的索引,允許索引關(guān)鍵 字值

9、重復(fù)出現(xiàn),適合用來(lái)進(jìn)行表中記字值重復(fù)出現(xiàn),適合用來(lái)進(jìn)行表中記 錄的排序和查詢,也適合于一對(duì)多永錄的排序和查詢,也適合于一對(duì)多永 久關(guān)聯(lián)中久關(guān)聯(lián)中“多多”的一邊的一邊(子表子表)的索引的索引 合肥工業(yè)大學(xué)83.1.3 索引文件的建立索引文件的建立1.用命令建立索引用命令建立索引格式:格式: INDEX ON TO |TAG ASENDING|DESCENDING UNIQUE 該命令對(duì)當(dāng)前表建立一個(gè)索引文件或增加索引標(biāo)志。各該命令對(duì)當(dāng)前表建立一個(gè)索引文件或增加索引標(biāo)志。各子句的含義是:子句的含義是: (1)是包含當(dāng)前表中的字段名的表達(dá)式,是包含當(dāng)前表中的字段名的表達(dá)式,表達(dá)式中的操作數(shù)應(yīng)具有相同

10、的數(shù)據(jù)類型。表達(dá)式中的操作數(shù)應(yīng)具有相同的數(shù)據(jù)類型。 (2)給出)給出TO 子句是建立一個(gè)單索引文件。子句是建立一個(gè)單索引文件。若給出若給出TAG ,則建立一個(gè)結(jié)構(gòu)復(fù)合索引文件,則建立一個(gè)結(jié)構(gòu)復(fù)合索引文件,或?yàn)橐呀⒉⒋蜷_(kāi)的復(fù)合索引文件增加索引標(biāo)志。或?yàn)橐呀⒉⒋蜷_(kāi)的復(fù)合索引文件增加索引標(biāo)志。 (3)復(fù)合索引時(shí),系統(tǒng)默認(rèn)或選用)復(fù)合索引時(shí),系統(tǒng)默認(rèn)或選用ASCENDING,按索引表,按索引表達(dá)式的升序建立索引。選達(dá)式的升序建立索引。選DESCENDING按降序。按降序。單索引文單索引文件只能按升序索引。件只能按升序索引。 (4)選用)選用UNIQUE,則對(duì)于索引表達(dá)式值相同的記錄,只,則對(duì)于索引

11、表達(dá)式值相同的記錄,只有第一個(gè)記錄列入索引文件。有第一個(gè)記錄列入索引文件。 合肥工業(yè)大學(xué)9 例例 用建立索引文件的方法完成排序的操作。用建立索引文件的方法完成排序的操作。 USE 學(xué)生學(xué)生 INDEX ON -入學(xué)成績(jī)?nèi)雽W(xué)成績(jī) TO sy &單索引文件只能按升序索引 LIST NEXT 5例例 就學(xué)生表建立結(jié)構(gòu)復(fù)合索引文件,其中包含就學(xué)生表建立結(jié)構(gòu)復(fù)合索引文件,其中包含2個(gè)索個(gè)索引:引:(1)按學(xué)號(hào)的升序排列,不允許有編號(hào)相同的記錄。)按學(xué)號(hào)的升序排列,不允許有編號(hào)相同的記錄。(2)先按性別升序,性別相同再按入學(xué)成績(jī)降序排列。)先按性別升序,性別相同再按入學(xué)成績(jī)降序排列。 USE 學(xué)生

12、學(xué)生 INDEX ON 學(xué)號(hào)學(xué)號(hào) TAG sy1 UNIQUE INDEX ON 性別性別+STR(1000-入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)) TAG sy2合肥工業(yè)大學(xué)102.用表設(shè)計(jì)器建立索引用表設(shè)計(jì)器建立索引(表設(shè)計(jì)器建立的索引都是結(jié)構(gòu)復(fù)合索引。)(表設(shè)計(jì)器建立的索引都是結(jié)構(gòu)復(fù)合索引。)合肥工業(yè)大學(xué)113.1.4 索引文件的使用索引文件的使用1. 索引文件的打開(kāi)索引文件的打開(kāi) 索引文件必須先打開(kāi)才能使用。結(jié)構(gòu)復(fù)索引文件必須先打開(kāi)才能使用。結(jié)構(gòu)復(fù)合索引文件隨相關(guān)表的打開(kāi)而自動(dòng)打開(kāi),但合索引文件隨相關(guān)表的打開(kāi)而自動(dòng)打開(kāi),但單索引文件和非結(jié)構(gòu)復(fù)合索引文件必須由用單索引文件和非結(jié)構(gòu)復(fù)合索引文件必須由用戶自己打

13、開(kāi)。戶自己打開(kāi)。 打開(kāi)索引文件有兩種方法,一種是在打打開(kāi)索引文件有兩種方法,一種是在打開(kāi)表的同時(shí)打開(kāi)索引文件,另一種是在打開(kāi)開(kāi)表的同時(shí)打開(kāi)索引文件,另一種是在打開(kāi)表后,需要使用索引時(shí),再打開(kāi)索引文件。表后,需要使用索引時(shí),再打開(kāi)索引文件。 系統(tǒng)自動(dòng)打開(kāi)結(jié)構(gòu)復(fù)合索引文件后,表系統(tǒng)自動(dòng)打開(kāi)結(jié)構(gòu)復(fù)合索引文件后,表的顯示仍然是物理順序,要使索引起作用,的顯示仍然是物理順序,要使索引起作用,必須指定主控索引。必須指定主控索引。合肥工業(yè)大學(xué)12(1)表和索引文件同時(shí)打開(kāi))表和索引文件同時(shí)打開(kāi)格式:格式: USE INDEX 該命令打開(kāi)指定的表及其相關(guān)的索引文件。該命令打開(kāi)指定的表及其相關(guān)的索引文件。命令中

14、各子句的含義是:命令中各子句的含義是: 可以包含多個(gè)索引文件,這些索可以包含多個(gè)索引文件,這些索引文件可以是單索引文件,也可以是復(fù)合索引文件。引文件可以是單索引文件,也可以是復(fù)合索引文件。其中只有第一個(gè)索引文件對(duì)表的操作起控制作用,其中只有第一個(gè)索引文件對(duì)表的操作起控制作用,稱為主控索引文件。稱為主控索引文件。 如果第一個(gè)索引文件是復(fù)合索引文件,由于包含如果第一個(gè)索引文件是復(fù)合索引文件,由于包含多個(gè)索引標(biāo)志,無(wú)法確定哪個(gè)索引標(biāo)志起作用,在多個(gè)索引標(biāo)志,無(wú)法確定哪個(gè)索引標(biāo)志起作用,在打開(kāi)后還要確定主控索引,否則對(duì)表進(jìn)行操作時(shí),打開(kāi)后還要確定主控索引,否則對(duì)表進(jìn)行操作時(shí),數(shù)據(jù)記錄仍按物理順序排列。

15、數(shù)據(jù)記錄仍按物理順序排列。合肥工業(yè)大學(xué)13 (2)打開(kāi)表后再打開(kāi)索引文件)打開(kāi)表后再打開(kāi)索引文件 命令格式是:命令格式是: SET INDEX TO ADDITIVE該命令功為當(dāng)前表打開(kāi)一個(gè)或多個(gè)索引文件。該命令功為當(dāng)前表打開(kāi)一個(gè)或多個(gè)索引文件。 命令中各子句的含義是:命令中各子句的含義是: 省略任何選項(xiàng)而直接使用省略任何選項(xiàng)而直接使用SET INDEX TO,將關(guān),將關(guān)閉當(dāng)前工作區(qū)中除結(jié)構(gòu)復(fù)合索引文件之外的全部索閉當(dāng)前工作區(qū)中除結(jié)構(gòu)復(fù)合索引文件之外的全部索引文件。引文件。 若省略若省略ADDITIVE選項(xiàng),則在使用該命令打開(kāi)索選項(xiàng),則在使用該命令打開(kāi)索引文件時(shí),除結(jié)構(gòu)復(fù)合索引文件之外的索引文

16、件均引文件時(shí),除結(jié)構(gòu)復(fù)合索引文件之外的索引文件均被關(guān)閉。被關(guān)閉。合肥工業(yè)大學(xué)14 2. 確定主控索引確定主控索引 命令格式是:命令格式是: SET ORDER TO | TAG 該命令指定表的主控索引文件或主控索引標(biāo)志。該命令指定表的主控索引文件或主控索引標(biāo)志。命令中各子句的含義是:命令中各子句的含義是:(1)指定一個(gè)單索引文件為主控索指定一個(gè)單索引文件為主控索引文件。引文件。(2)TAG 用于指定一個(gè)已打開(kāi)的復(fù)用于指定一個(gè)已打開(kāi)的復(fù)合索引文件中的一個(gè)索引標(biāo)志為主控索引。合索引文件中的一個(gè)索引標(biāo)志為主控索引。(3)不帶任何短語(yǔ)的)不帶任何短語(yǔ)的SET ORDER TO命令可以取消命令可以取消主

17、控索引。主控索引。合肥工業(yè)大學(xué)15 使用索引文件后,雖然表中各記錄的物理順序并未改變。使用索引文件后,雖然表中各記錄的物理順序并未改變。但記錄指針不再按物理順序移動(dòng),而是按主控索引文件中記但記錄指針不再按物理順序移動(dòng),而是按主控索引文件中記錄的邏輯順序移動(dòng),于是整個(gè)表中的記錄是按索引關(guān)鍵表達(dá)錄的邏輯順序移動(dòng),于是整個(gè)表中的記錄是按索引關(guān)鍵表達(dá)式值排序的效果。式值排序的效果。 使用索引文件時(shí),還要特別注意以下幾點(diǎn):使用索引文件時(shí),還要特別注意以下幾點(diǎn): (1)在使用)在使用GO命令時(shí),命令時(shí),GO 使記錄指針指向使記錄指針指向具體的物理記錄號(hào),而與索引無(wú)關(guān),而具體的物理記錄號(hào),而與索引無(wú)關(guān),而G

18、O TOP|BOTTOM將使記錄指針指向邏輯首或邏輯尾記錄,這時(shí)將使記錄指針指向邏輯首或邏輯尾記錄,這時(shí)GO TOP不再不再等同于等同于GO 1。 (2)SKIP命令按邏輯順序移動(dòng)記錄指針。命令按邏輯順序移動(dòng)記錄指針。 (3)表被打開(kāi)后,記錄指針位于)表被打開(kāi)后,記錄指針位于TOP位置,而不一定指向位置,而不一定指向1號(hào)記錄。號(hào)記錄。例例 當(dāng)有索引文件時(shí),分析記錄指針的移動(dòng)規(guī)律。當(dāng)有索引文件時(shí),分析記錄指針的移動(dòng)規(guī)律。 USE 學(xué)生學(xué)生 INDEX ON 入學(xué)成績(jī)?nèi)雽W(xué)成績(jī) TO sy3 GO 6 ? RECNO(),姓名姓名 SKIP ? RECNO(),姓名姓名合肥工業(yè)大學(xué)163. 關(guān)閉索引

19、文件關(guān)閉索引文件 命令格式是:命令格式是: CLOSE INDEX SET INDEX TO該命令關(guān)閉當(dāng)前工作區(qū)內(nèi)所有打開(kāi)的索引文件。但結(jié)構(gòu)復(fù)合索該命令關(guān)閉當(dāng)前工作區(qū)內(nèi)所有打開(kāi)的索引文件。但結(jié)構(gòu)復(fù)合索引文件不能關(guān)閉,它隨表的關(guān)閉而自動(dòng)關(guān)閉。引文件不能關(guān)閉,它隨表的關(guān)閉而自動(dòng)關(guān)閉。 此外,使用無(wú)任何選項(xiàng)的此外,使用無(wú)任何選項(xiàng)的USE命令,除了關(guān)閉當(dāng)前工作區(qū)的命令,除了關(guān)閉當(dāng)前工作區(qū)的表外,也關(guān)閉了與之相關(guān)的索引文件。表外,也關(guān)閉了與之相關(guān)的索引文件。4. 刪除索引刪除索引 命令格式是:命令格式是: DELETE FILE DELETE TAG ALL|第一種格式的命令用于刪除一個(gè)單索引文件。第二

20、種格式的命第一種格式的命令用于刪除一個(gè)單索引文件。第二種格式的命令用于刪除打開(kāi)的復(fù)合索引文件的所有索引標(biāo)志或指定的索令用于刪除打開(kāi)的復(fù)合索引文件的所有索引標(biāo)志或指定的索引標(biāo)志。如果一個(gè)復(fù)合索引文件的所有索引標(biāo)志都被刪除,引標(biāo)志。如果一個(gè)復(fù)合索引文件的所有索引標(biāo)志都被刪除,則該復(fù)合索引文件也就自動(dòng)被刪除了。則該復(fù)合索引文件也就自動(dòng)被刪除了。合肥工業(yè)大學(xué)171、順序查詢、順序查詢LOCATE FOR |WHILE 如果指定如果指定,則按指定,則按指定查找,省略查找,省略時(shí)時(shí)默認(rèn)為默認(rèn)為ALL。 找到后,記錄指針指向該記錄,函數(shù)找到后,記錄指針指向該記錄,函數(shù)FOUND()值為值為.T.,否則,記錄

21、指針指向否則,記錄指針指向的最末一個(gè)記錄上,省略的最末一個(gè)記錄上,省略則指向文件尾,函數(shù)則指向文件尾,函數(shù)FOUND()值為值為.F.。當(dāng)查找到第一個(gè)滿足。當(dāng)查找到第一個(gè)滿足條件的記錄后,如果執(zhí)行條件的記錄后,如果執(zhí)行CONTINUE命令,則繼續(xù)尋找滿命令,則繼續(xù)尋找滿足條件的記錄,直到足條件的記錄,直到結(jié)束為止。結(jié)束為止。例例 在學(xué)生表中查詢少數(shù)民族男生的姓名、入學(xué)成績(jī)和年齡。在學(xué)生表中查詢少數(shù)民族男生的姓名、入學(xué)成績(jī)和年齡。操作命令如下:操作命令如下:USE 學(xué)生學(xué)生LOCATE FOR 少數(shù)民族少數(shù)民族 AND 性別性別=男男DISP 姓名姓名,入學(xué)成績(jī)?nèi)雽W(xué)成績(jī), YEAR(DATE()

22、-YEAR(出生日期出生日期)CONTINUE? RECNO()3.2 表記錄的查詢表記錄的查詢合肥工業(yè)大學(xué)182.索引查詢定位索引查詢定位索引查詢定位是在當(dāng)前表中,按已確定的主索索引查詢定位是在當(dāng)前表中,按已確定的主索引文件關(guān)鍵字來(lái)查詢與指定表達(dá)式值相匹配引文件關(guān)鍵字來(lái)查詢與指定表達(dá)式值相匹配的第一條記錄,找到后將記錄指針定位于該的第一條記錄,找到后將記錄指針定位于該記錄。記錄。命令格式是:命令格式是:SEEK 命令中的命令中的可以是數(shù)值型、字符型、日可以是數(shù)值型、字符型、日期型或邏輯型表達(dá)式,但必須與索引表達(dá)式期型或邏輯型表達(dá)式,但必須與索引表達(dá)式一致。對(duì)字符串表達(dá)式,有精確查詢和不精一致

23、。對(duì)字符串表達(dá)式,有精確查詢和不精確查詢之分,精確查詢要求表達(dá)式的值與索確查詢之分,精確查詢要求表達(dá)式的值與索引關(guān)鍵字值完全相同,認(rèn)為找到,不精確查引關(guān)鍵字值完全相同,認(rèn)為找到,不精確查詢只要表達(dá)式的值與索引關(guān)鍵字值左邊若干詢只要表達(dá)式的值與索引關(guān)鍵字值左邊若干字符相同,就認(rèn)為找到。字符相同,就認(rèn)為找到。查詢方式由查詢方式由SET EXACT ON|OFF設(shè)置。設(shè)置。合肥工業(yè)大學(xué)19除除SEEK命令外,命令外,F(xiàn)IND命令也可用于索引查詢,命令也可用于索引查詢,其格式為:其格式為: FIND |要注意要注意FIND后面是字符常量或數(shù)值常量,不能后面是字符常量或數(shù)值常量,不能是表達(dá)式。是表達(dá)式。

24、例例 就學(xué)生表,查詢就學(xué)生表,查詢1983年年9月月7日出生的學(xué)生日出生的學(xué)生的記錄。的記錄。USE 學(xué)生學(xué)生INDEX ON 出生日期出生日期 TAG sy4D=1983-09-07SEEK DDISP合肥工業(yè)大學(xué)20 3.3.1 統(tǒng)計(jì)記錄個(gè)數(shù)統(tǒng)計(jì)記錄個(gè)數(shù) 命令格式是:命令格式是: COUNT FOR TO 該命令統(tǒng)計(jì)當(dāng)前表中,在指定范圍內(nèi)滿足指定條件的記錄個(gè)數(shù)。該命令統(tǒng)計(jì)當(dāng)前表中,在指定范圍內(nèi)滿足指定條件的記錄個(gè)數(shù)。命令中各子句的含義是:命令中各子句的含義是: (1)選擇項(xiàng)的缺省值為選擇項(xiàng)的缺省值為ALL。使用。使用TO 選擇項(xiàng),選擇項(xiàng),將統(tǒng)計(jì)記錄個(gè)數(shù)的結(jié)果存入指定的內(nèi)存變量中。將統(tǒng)計(jì)記錄

25、個(gè)數(shù)的結(jié)果存入指定的內(nèi)存變量中。 (2)若設(shè)置了)若設(shè)置了SET TALK OFF,則不顯示統(tǒng)計(jì)的結(jié)果。若設(shè)置了,則不顯示統(tǒng)計(jì)的結(jié)果。若設(shè)置了SET DELETED ON命令,則作了刪除標(biāo)記的記錄不被計(jì)數(shù)。命令,則作了刪除標(biāo)記的記錄不被計(jì)數(shù)。 (3)不帶任何選項(xiàng)的)不帶任何選項(xiàng)的COUNT命令與命令與RECCOUNT()函數(shù)作用相同,函數(shù)作用相同,都可以獲得一個(gè)表的記錄數(shù)。但都可以獲得一個(gè)表的記錄數(shù)。但RECCOUNT()函數(shù)忽略函數(shù)忽略DELETED設(shè)置,它總是把做了刪除標(biāo)記的記錄也計(jì)入總數(shù)中。設(shè)置,它總是把做了刪除標(biāo)記的記錄也計(jì)入總數(shù)中。例例 對(duì)學(xué)生表,分別統(tǒng)計(jì)男女生的人數(shù)。對(duì)學(xué)生表,分別

26、統(tǒng)計(jì)男女生的人數(shù)。操作命令如下:操作命令如下:USE 學(xué)生學(xué)生COUNT FOR 性別性別=”女女” TO x1COUNT FOR 性別性別=”男男” TO x2? x1,x2 3.3 3.3 表的統(tǒng)計(jì)與計(jì)算表的統(tǒng)計(jì)與計(jì)算合肥工業(yè)大學(xué)213.3.2 求數(shù)值表達(dá)式之和與平均值求數(shù)值表達(dá)式之和與平均值命令格式是:命令格式是: SUM|AVERAGE FOR TO |ARRAY 該命令在當(dāng)前表中,求指定表達(dá)式之和或平均值。該命令在當(dāng)前表中,求指定表達(dá)式之和或平均值。命令中各子句的含義是:命令中各子句的含義是:(1)兩條命令的格式相同,)兩條命令的格式相同,SUM命令求指定表達(dá)式之和,而命令求指定表達(dá)

27、式之和,而AVERAGE命令求指定表達(dá)式的平均值。命令求指定表達(dá)式的平均值。(2)選擇項(xiàng)的缺省值為選擇項(xiàng)的缺省值為ALL。(3)若省略)若省略,則對(duì)全部數(shù)值型字段求和。計(jì)算結(jié),則對(duì)全部數(shù)值型字段求和。計(jì)算結(jié)果存放在由果存放在由指定的內(nèi)存變量中或指定的內(nèi)存變量中或指定指定的數(shù)組元素中。的數(shù)組元素中。例例 對(duì)學(xué)生表,求全體學(xué)生的平均年齡。對(duì)學(xué)生表,求全體學(xué)生的平均年齡。操作命令如下:操作命令如下:USE 學(xué)生學(xué)生AVER YEAR(DATE()-YEAR(出生日期出生日期) TO y? y合肥工業(yè)大學(xué)223.3.3 分類匯總分類匯總命令格式是:命令格式是:TOTAL ON TO FIELDS FO

28、R 該命令對(duì)當(dāng)前表的某些數(shù)值型字段,按該命令對(duì)當(dāng)前表的某些數(shù)值型字段,按進(jìn)行進(jìn)行分類統(tǒng)計(jì),并把統(tǒng)計(jì)結(jié)果存放在分類統(tǒng)計(jì),并把統(tǒng)計(jì)結(jié)果存放在指定的表中。指定的表中。命令中各子句的含義是:命令中各子句的含義是:(1)FIELDS 指出要匯總的字段,缺省對(duì)指出要匯總的字段,缺省對(duì)表所有數(shù)值型字段匯總。表所有數(shù)值型字段匯總。(2)缺省值是缺省值是ALL。(3)分類匯總是把所有具有相同關(guān)鍵字表達(dá)式值的記錄合并)分類匯總是把所有具有相同關(guān)鍵字表達(dá)式值的記錄合并成一條記錄,對(duì)數(shù)值字段進(jìn)行求和,對(duì)其他字段則取每一成一條記錄,對(duì)數(shù)值字段進(jìn)行求和,對(duì)其他字段則取每一類中第一條記錄的值。因此,為了進(jìn)行分類匯總,必須對(duì)

29、類中第一條記錄的值。因此,為了進(jìn)行分類匯總,必須對(duì)當(dāng)前表按當(dāng)前表按進(jìn)行排序或建立索引文件。進(jìn)行排序或建立索引文件。合肥工業(yè)大學(xué)23【例】對(duì)學(xué)生成績(jī)表,內(nèi)容如下:【例】對(duì)學(xué)生成績(jī)表,內(nèi)容如下:記錄號(hào)記錄號(hào) 學(xué)號(hào)學(xué)號(hào) 課程代號(hào)課程代號(hào) 教師工號(hào)教師工號(hào) 學(xué)期學(xué)期 成績(jī)成績(jī) 1 044138 01 0100 04051 95.00 2 044139 01 0100 04051 56.00 3 044140 01 0102 04051 87.00 4 044141 01 0102 04051 97.00 5 044142 01 0105 04051 65.00 6 044143 01 0105 040

30、51 96.00 7 044144 01 0102 04051 89.00 8 044145 01 0100 04051 67.00 9 044146 01 0100 04051 57.00 10 044147 01 0100 04051 96.00 11 044148 01 0102 04051 78.00 12 044149 01 0105 04051 76.00按教師工號(hào)對(duì)成績(jī)進(jìn)行匯總按教師工號(hào)對(duì)成績(jī)進(jìn)行匯總USE 學(xué)生成績(jī)表學(xué)生成績(jī)表INDEX ON教師工號(hào)教師工號(hào)TAG sy5TOTAL ON教師工號(hào)教師工號(hào)TO hz FIELDS成績(jī)成績(jī)USE hzLIST 教師工號(hào)教師工號(hào),成績(jī)

31、成績(jī)?cè)谠赩isual FoxPro主窗口顯示分類匯總結(jié)果:主窗口顯示分類匯總結(jié)果:記錄號(hào)記錄號(hào) 教師工號(hào)教師工號(hào) 成績(jī)成績(jī)1 0100 371.00 2 0102 351.00 3 0105 237.00 合肥工業(yè)大學(xué)24 3.4.1 工作區(qū)工作區(qū)1.工作區(qū)的概念工作區(qū)的概念 工作區(qū)是用來(lái)保存表及其相關(guān)信息的一片內(nèi)存工作區(qū)是用來(lái)保存表及其相關(guān)信息的一片內(nèi)存空間。平時(shí)講打開(kāi)表實(shí)際上就是將它從磁盤調(diào)入到空間。平時(shí)講打開(kāi)表實(shí)際上就是將它從磁盤調(diào)入到內(nèi)存的某一個(gè)工作區(qū)。在每個(gè)工作區(qū)中只能打開(kāi)一內(nèi)存的某一個(gè)工作區(qū)。在每個(gè)工作區(qū)中只能打開(kāi)一個(gè)表文件,但可以同時(shí)打開(kāi)與表相關(guān)的其他文件,個(gè)表文件,但可以同時(shí)打

32、開(kāi)與表相關(guān)的其他文件,如索引文件、查詢文件等。若在一個(gè)工作區(qū)中打開(kāi)如索引文件、查詢文件等。若在一個(gè)工作區(qū)中打開(kāi)一個(gè)新的表,則該工作區(qū)中原來(lái)的表將被關(guān)閉。一個(gè)新的表,則該工作區(qū)中原來(lái)的表將被關(guān)閉。 有了工作區(qū)的概念,我們就可以同時(shí)打開(kāi)多個(gè)有了工作區(qū)的概念,我們就可以同時(shí)打開(kāi)多個(gè)表,但在任何一個(gè)時(shí)刻用戶只能選中一個(gè)工作區(qū)進(jìn)表,但在任何一個(gè)時(shí)刻用戶只能選中一個(gè)工作區(qū)進(jìn)行操作。當(dāng)前正在操作的工作區(qū)稱為當(dāng)前工作區(qū)。行操作。當(dāng)前正在操作的工作區(qū)稱為當(dāng)前工作區(qū)。3.4 3.4 多個(gè)表操作多個(gè)表操作合肥工業(yè)大學(xué)252.工作區(qū)號(hào)與別名工作區(qū)號(hào)與別名 不同工作區(qū)可以用其編號(hào)或別名來(lái)加以區(qū)分。不同工作區(qū)可以用其編號(hào)

33、或別名來(lái)加以區(qū)分。Visual FoxPro提供了提供了32767個(gè)工作區(qū),系統(tǒng)以個(gè)工作區(qū),系統(tǒng)以132767作為各工作區(qū)的編號(hào)。作為各工作區(qū)的編號(hào)。 工作區(qū)的別名有兩種,一種是系統(tǒng)定義的別名:工作區(qū)的別名有兩種,一種是系統(tǒng)定義的別名:110號(hào)工作區(qū)的別名分別為字母號(hào)工作區(qū)的別名分別為字母AJ; 另一種是用戶定義的別名另一種是用戶定義的別名: 用命令用命令 “USE ALIAS ”指定。指定。 由于一個(gè)工作區(qū)只能打開(kāi)一個(gè)表,因此可以把由于一個(gè)工作區(qū)只能打開(kāi)一個(gè)表,因此可以把表的別名作為工作區(qū)的別名。表的別名作為工作區(qū)的別名。若未用若未用ALIAS子句對(duì)子句對(duì)表指定別名,則以表的主名作為別名。表

34、指定別名,則以表的主名作為別名。合肥工業(yè)大學(xué)263.工作區(qū)的選擇工作區(qū)的選擇 命令格式是:命令格式是:SELECT |0該命令選擇一個(gè)工作區(qū)為當(dāng)前工作區(qū),以便打開(kāi)一個(gè)表或該命令選擇一個(gè)工作區(qū)為當(dāng)前工作區(qū),以便打開(kāi)一個(gè)表或把該工作區(qū)中已打開(kāi)的表作為當(dāng)前表進(jìn)行操作。把該工作區(qū)中已打開(kāi)的表作為當(dāng)前表進(jìn)行操作。命令中各子句的含義是:命令中各子句的含義是:(1)工作區(qū)的切換不影響各工作區(qū)記錄指針的位置。每個(gè))工作區(qū)的切換不影響各工作區(qū)記錄指針的位置。每個(gè)工作區(qū)上打開(kāi)的表有各自獨(dú)立的記錄指針。通常,當(dāng)前工作區(qū)上打開(kāi)的表有各自獨(dú)立的記錄指針。通常,當(dāng)前表記錄指針的變化不會(huì)影響別的工作區(qū)中表記錄指針的表記錄指

35、針的變化不會(huì)影響別的工作區(qū)中表記錄指針的變化。變化。(2)SELECT 0表示選擇當(dāng)前沒(méi)有被使用的最小號(hào)工作區(qū)表示選擇當(dāng)前沒(méi)有被使用的最小號(hào)工作區(qū)為當(dāng)前工作區(qū)。用本命令開(kāi)辟新的工作區(qū),不用考慮工為當(dāng)前工作區(qū)。用本命令開(kāi)辟新的工作區(qū),不用考慮工作區(qū)號(hào)已用到了多少。作區(qū)號(hào)已用到了多少。(3)也可在)也可在USE命令中增加命令中增加IN子句來(lái)選擇工作區(qū)并打開(kāi)表。子句來(lái)選擇工作區(qū)并打開(kāi)表。例如,在例如,在1號(hào)工作區(qū)打開(kāi)學(xué)生表,并給它取一個(gè)別名,可號(hào)工作區(qū)打開(kāi)學(xué)生表,并給它取一個(gè)別名,可用命令:用命令: USE 學(xué)生學(xué)生 ALIAS xs IN 1或或USE 學(xué)生學(xué)生 ALIAS xs IN A合肥工業(yè)

36、大學(xué)274.工作區(qū)的互訪工作區(qū)的互訪 在當(dāng)前工作區(qū)中可以訪問(wèn)其他工作區(qū)中的表的數(shù)據(jù),但要在當(dāng)前工作區(qū)中可以訪問(wèn)其他工作區(qū)中的表的數(shù)據(jù),但要在非當(dāng)前表的字段名前加上別名和連接符,引用格式為:在非當(dāng)前表的字段名前加上別名和連接符,引用格式為: 別名別名.字段名字段名 或或 別名別名-字段名字段名 (別名通常用表的名稱。)別名通常用表的名稱。)【例】在【例】在1號(hào)工作區(qū)中打開(kāi)學(xué)生基本情況表號(hào)工作區(qū)中打開(kāi)學(xué)生基本情況表.DBF,在,在2號(hào)工作區(qū)號(hào)工作區(qū)中打開(kāi)學(xué)生成績(jī)表中打開(kāi)學(xué)生成績(jī)表.DBF,選擇,選擇1號(hào)工作區(qū)作為當(dāng)前工作區(qū),查號(hào)工作區(qū)作為當(dāng)前工作區(qū),查看當(dāng)前記錄和成績(jī)看當(dāng)前記錄和成績(jī)SELECT

37、1 &選擇選擇1號(hào)工作區(qū)為當(dāng)前工作區(qū)號(hào)工作區(qū)為當(dāng)前工作區(qū)USE 學(xué)生基本情況表學(xué)生基本情況表SELECT 2 &選擇選擇2號(hào)工作區(qū)為當(dāng)前工作區(qū)號(hào)工作區(qū)為當(dāng)前工作區(qū)USE 學(xué)生成績(jī)表學(xué)生成績(jī)表SELECT 1 &選擇選擇1號(hào)工作區(qū)為當(dāng)前工作區(qū)號(hào)工作區(qū)為當(dāng)前工作區(qū)DISPLAY 學(xué)號(hào),姓名,學(xué)號(hào),姓名,B-成績(jī)成績(jī) &顯示學(xué)號(hào),姓名和學(xué)生成績(jī)表的成績(jī)顯示學(xué)號(hào),姓名和學(xué)生成績(jī)表的成績(jī)合肥工業(yè)大學(xué)28例:多工作區(qū)操作(用索引建立兩個(gè)表間的聯(lián)系)例:多工作區(qū)操作(用索引建立兩個(gè)表間的聯(lián)系) CLOSE ALL SELECT 0 &選最小號(hào)工作區(qū)選最小號(hào)工作區(qū) US

38、E 選課選課 GO 3 USE 學(xué)生學(xué)生 IN 0 &在未使用的最小號(hào)工作區(qū)打開(kāi)學(xué)生表在未使用的最小號(hào)工作區(qū)打開(kāi)學(xué)生表 SELECT 學(xué)生學(xué)生 &選學(xué)生表工作區(qū)選學(xué)生表工作區(qū) SET ORDER TO TAG XH SEEK 選課選課.學(xué)號(hào)學(xué)號(hào) DISPLAY 選課選課.學(xué)號(hào)學(xué)號(hào) ,學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào) ,學(xué)生學(xué)生.姓名,選姓名,選課課.成績(jī)成績(jī)合肥工業(yè)大學(xué)293.4.2 表的關(guān)聯(lián)表的關(guān)聯(lián) 關(guān)聯(lián)的多一關(guān)系與一多關(guān)系 令不同工作區(qū)的記錄指針建立一種臨時(shí)的聯(lián)動(dòng)關(guān)系,令不同工作區(qū)的記錄指針建立一種臨時(shí)的聯(lián)動(dòng)關(guān)系,使一個(gè)表使一個(gè)表( (父表父表) )的記錄指針移動(dòng)時(shí),另一個(gè)表的記錄指針移

39、動(dòng)時(shí),另一個(gè)表( (子表子表) )的記錄的記錄指針也能隨之移動(dòng)。指針也能隨之移動(dòng)。合肥工業(yè)大學(xué)301.多對(duì)一的關(guān)聯(lián)多對(duì)一的關(guān)聯(lián) 命令格式是:命令格式是: SET RELATION TO INTO | , INTO | 該命令使當(dāng)前表與該命令使當(dāng)前表與INTO子句所指定的工作區(qū)上的表按表達(dá)式子句所指定的工作區(qū)上的表按表達(dá)式建立關(guān)聯(lián)。命令中各子句的含義是:建立關(guān)聯(lián)。命令中各子句的含義是: (1)INTO子句指定子文件所在的工作區(qū),子句指定子文件所在的工作區(qū),用于指定關(guān)聯(lián)條件,用于指定關(guān)聯(lián)條件,關(guān)鍵字關(guān)鍵字必須是兩個(gè)表中共有的字段。首先必須是兩個(gè)表中共有的字段。首先在子文件中按某表達(dá)式建立索引并指定

40、為主索引,然后使用某在子文件中按某表達(dá)式建立索引并指定為主索引,然后使用某關(guān)聯(lián)表達(dá)式建立關(guān)聯(lián),當(dāng)關(guān)聯(lián)成功后,每當(dāng)主文件的記錄指針關(guān)聯(lián)表達(dá)式建立關(guān)聯(lián),當(dāng)關(guān)聯(lián)成功后,每當(dāng)主文件的記錄指針移動(dòng)時(shí),移動(dòng)時(shí),Visual FoxPro就在子文件中查找索引表達(dá)式的值和主就在子文件中查找索引表達(dá)式的值和主文件中關(guān)聯(lián)表達(dá)式的值相匹配的記錄。文件中關(guān)聯(lián)表達(dá)式的值相匹配的記錄。 (2)省略所有選項(xiàng)時(shí),)省略所有選項(xiàng)時(shí),SET RELATION TO命令將取消與命令將取消與當(dāng)前表的所有關(guān)聯(lián)。當(dāng)前表的所有關(guān)聯(lián)。合肥工業(yè)大學(xué)312.一對(duì)多的關(guān)聯(lián)一對(duì)多的關(guān)聯(lián) 前面介紹了一對(duì)一的關(guān)聯(lián),這種關(guān)聯(lián)只允許訪問(wèn)前面介紹了一對(duì)一的關(guān)

41、聯(lián),這種關(guān)聯(lián)只允許訪問(wèn)子文件滿足關(guān)聯(lián)條件的第一條記錄。如果子文件有多子文件滿足關(guān)聯(lián)條件的第一條記錄。如果子文件有多條記錄和主文件的某條記錄相匹配,當(dāng)需要訪問(wèn)子文條記錄和主文件的某條記錄相匹配,當(dāng)需要訪問(wèn)子文件的多條匹配記錄時(shí),就需要建立一對(duì)多的關(guān)聯(lián)。件的多條匹配記錄時(shí),就需要建立一對(duì)多的關(guān)聯(lián)。 命令格式是:命令格式是: SET SKIP TO , 命令功能:使當(dāng)前表和它的子表建立一對(duì)多的關(guān)聯(lián)。命令功能:使當(dāng)前表和它的子表建立一對(duì)多的關(guān)聯(lián)。 命令中各子句的含義是:命令中各子句的含義是: (1)別名指定子文件所在的工作區(qū)。如果缺省所有選)別名指定子文件所在的工作區(qū)。如果缺省所有選項(xiàng),則取消主文件建

42、立的所有一對(duì)多關(guān)聯(lián)。項(xiàng),則取消主文件建立的所有一對(duì)多關(guān)聯(lián)。 (2)一個(gè)主文件可以和多個(gè)子文件分別建立一對(duì)多的)一個(gè)主文件可以和多個(gè)子文件分別建立一對(duì)多的關(guān)聯(lián)。關(guān)聯(lián)。 合肥工業(yè)大學(xué)32例:多對(duì)一關(guān)聯(lián):例:多對(duì)一關(guān)聯(lián): CLOSE ALL SELECT 1 USE 學(xué)生學(xué)生 SELECT 2 USE 選課選課 BROWSE FIELDS 選課選課.學(xué)號(hào)學(xué)號(hào) ,學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào) ,學(xué)生學(xué)生.姓名姓名,選課選課.成績(jī)成績(jī) SELECT 1 SET ORDER TO TAG XH SELECT 2 SET RELATION TO 選課選課.學(xué)號(hào)學(xué)號(hào) INTO 學(xué)生學(xué)生 GO 3 ? 選課選課.學(xué)號(hào)學(xué)號(hào)

43、 ,學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào) ,學(xué)生學(xué)生.姓名姓名,選課選課.成績(jī)成績(jī) BROWSE FIELDS 選課選課.學(xué)號(hào)學(xué)號(hào) ,學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào) ,學(xué)生學(xué)生.姓名姓名,選課選課.成績(jī)成績(jī)合肥工業(yè)大學(xué)33例:一對(duì)多關(guān)聯(lián):例:一對(duì)多關(guān)聯(lián):USE 選課選課INDEX ON 學(xué)號(hào)學(xué)號(hào) TO XHSELECT 2USE 學(xué)生學(xué)生SET RELATION TO 學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào) INTO 選課選課BROWSE FIELDS 選課選課.學(xué)號(hào)學(xué)號(hào) ,學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào) ,學(xué)生學(xué)生.姓名姓名,選課選課.成績(jī)成績(jī)SET SKIP TO選課選課BROWSE FIELDS 選課選課.學(xué)號(hào)學(xué)號(hào) ,學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào) ,學(xué)生學(xué)生

44、.姓名姓名,選課選課.成績(jī)成績(jī) 因?yàn)榻⒁粚?duì)多關(guān)聯(lián)的表達(dá)式仍是建立多對(duì)一關(guān)因?yàn)榻⒁粚?duì)多關(guān)聯(lián)的表達(dá)式仍是建立多對(duì)一關(guān)聯(lián)的表達(dá)式,所以建立一對(duì)多的關(guān)聯(lián)應(yīng)分兩步完成:聯(lián)的表達(dá)式,所以建立一對(duì)多的關(guān)聯(lián)應(yīng)分兩步完成: 使用命令使用命令SET RELATION建立多對(duì)一的關(guān)聯(lián)建立多對(duì)一的關(guān)聯(lián)(使用索引方式建立關(guān)聯(lián))。(使用索引方式建立關(guān)聯(lián))。 使用命令使用命令SET SKIP建立一對(duì)多的關(guān)聯(lián)。建立一對(duì)多的關(guān)聯(lián)。合肥工業(yè)大學(xué)34合肥工業(yè)大學(xué)353 . 5 表間關(guān)系與數(shù)據(jù)參照完整性表間關(guān)系與數(shù)據(jù)參照完整性 通過(guò)鏈接不同表的索引,通過(guò)鏈接不同表的索引,“數(shù)據(jù)庫(kù)設(shè)計(jì)器數(shù)據(jù)庫(kù)設(shè)計(jì)器”可可以方便地建立表之間的關(guān)系,

45、且建立的關(guān)系作為數(shù)以方便地建立表之間的關(guān)系,且建立的關(guān)系作為數(shù)據(jù)庫(kù)的一部分保存起來(lái),這種關(guān)系稱為據(jù)庫(kù)的一部分保存起來(lái),這種關(guān)系稱為“永久關(guān)永久關(guān)系系”。 建立數(shù)據(jù)庫(kù)文件中的表間關(guān)聯(lián)的前提,一是建建立數(shù)據(jù)庫(kù)文件中的表間關(guān)聯(lián)的前提,一是建立關(guān)聯(lián)的表應(yīng)具有相同屬性的字段;二是建立關(guān)聯(lián)立關(guān)聯(lián)的表應(yīng)具有相同屬性的字段;二是建立關(guān)聯(lián)的表都要以該字段建立索引。的表都要以該字段建立索引。3.5.1 為數(shù)據(jù)庫(kù)表建立索引為數(shù)據(jù)庫(kù)表建立索引 為了建立表之間的永久關(guān)聯(lián),需要為數(shù)據(jù)庫(kù)表為了建立表之間的永久關(guān)聯(lián),需要為數(shù)據(jù)庫(kù)表建立索引。數(shù)據(jù)庫(kù)表建立索引的方法:選定數(shù)據(jù)庫(kù)建立索引。數(shù)據(jù)庫(kù)表建立索引的方法:選定數(shù)據(jù)庫(kù)表,單擊

46、數(shù)據(jù)庫(kù)設(shè)計(jì)器工具欄的修改表按鈕,彈出表,單擊數(shù)據(jù)庫(kù)設(shè)計(jì)器工具欄的修改表按鈕,彈出表設(shè)計(jì)器窗口,在表設(shè)計(jì)器窗口單擊索引選項(xiàng)卡,表設(shè)計(jì)器窗口,在表設(shè)計(jì)器窗口單擊索引選項(xiàng)卡,在索引名、類型、表達(dá)式各欄依次輸入有關(guān)內(nèi)容。在索引名、類型、表達(dá)式各欄依次輸入有關(guān)內(nèi)容。合肥工業(yè)大學(xué)363.5.2 建立表之間的永久聯(lián)系建立表之間的永久聯(lián)系表之間的永久聯(lián)系是基于索引建立的一種永久關(guān)系,表之間的永久聯(lián)系是基于索引建立的一種永久關(guān)系,這種聯(lián)系被作為數(shù)據(jù)庫(kù)的一部分而保存在數(shù)據(jù)庫(kù)中。這種聯(lián)系被作為數(shù)據(jù)庫(kù)的一部分而保存在數(shù)據(jù)庫(kù)中。當(dāng)在當(dāng)在“查詢?cè)O(shè)計(jì)器查詢?cè)O(shè)計(jì)器”或或“視圖設(shè)計(jì)器視圖設(shè)計(jì)器”中使用表時(shí),中使用表時(shí),這種永久

47、聯(lián)系將作為表間的默認(rèn)連接條件保持?jǐn)?shù)據(jù)這種永久聯(lián)系將作為表間的默認(rèn)連接條件保持?jǐn)?shù)據(jù)庫(kù)表之間的聯(lián)系。庫(kù)表之間的聯(lián)系。表之間的永久聯(lián)系在數(shù)據(jù)庫(kù)設(shè)計(jì)器中顯示為表索引之表之間的永久聯(lián)系在數(shù)據(jù)庫(kù)設(shè)計(jì)器中顯示為表索引之間的連接線。操作方法是:在數(shù)據(jù)庫(kù)設(shè)計(jì)器對(duì)話框間的連接線。操作方法是:在數(shù)據(jù)庫(kù)設(shè)計(jì)器對(duì)話框中,首先,用鼠標(biāo)左鍵選中父表中的主索引字段,中,首先,用鼠標(biāo)左鍵選中父表中的主索引字段,保持按住鼠標(biāo)左鍵,并拖至與其建立聯(lián)系的子表中保持按住鼠標(biāo)左鍵,并拖至與其建立聯(lián)系的子表中的對(duì)應(yīng)字段處,松開(kāi)鼠標(biāo)左鍵,數(shù)據(jù)庫(kù)中的兩個(gè)表的對(duì)應(yīng)字段處,松開(kāi)鼠標(biāo)左鍵,數(shù)據(jù)庫(kù)中的兩個(gè)表間就有了一個(gè)連線,其永久關(guān)系就已建立完成。間

48、就有了一個(gè)連線,其永久關(guān)系就已建立完成。合肥工業(yè)大學(xué)37在數(shù)據(jù)庫(kù)的兩個(gè)表間建立永久聯(lián)系時(shí),要求兩個(gè)表的索在數(shù)據(jù)庫(kù)的兩個(gè)表間建立永久聯(lián)系時(shí),要求兩個(gè)表的索引中至少有一個(gè)是主索引。必須先選擇父表的主索引,引中至少有一個(gè)是主索引。必須先選擇父表的主索引,而子表中的索引類型決定了要建立的永久聯(lián)系類型。而子表中的索引類型決定了要建立的永久聯(lián)系類型。如果子表中的索引類型是主索引或候選索引,則建立如果子表中的索引類型是主索引或候選索引,則建立起來(lái)的是一對(duì)一關(guān)系。如果子表中的索引類型是普通起來(lái)的是一對(duì)一關(guān)系。如果子表中的索引類型是普通索引,則建立起來(lái)的就是一對(duì)多關(guān)系。索引,則建立起來(lái)的就是一對(duì)多關(guān)系。合肥工業(yè)大學(xué)38編輯修改已建立的聯(lián)系:編輯修改已建立的聯(lián)系:可先單擊關(guān)系連線,此時(shí)連線變粗可先單擊關(guān)系連線,此時(shí)連線變粗從從“數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)”菜單項(xiàng)中選擇【編輯關(guān)系】命令,或用鼠標(biāo)右鍵單菜單項(xiàng)中選擇【編輯關(guān)系】命令,或用鼠標(biāo)右鍵單擊連線,從彈出的快捷菜單中選擇【編輯關(guān)系】或【刪除關(guān)系】擊連線,從彈出的快捷菜單中選擇【編輯關(guān)系】或【刪除關(guān)系】最直接的方法是雙擊連線,打開(kāi)最直接的方法是雙擊連線,打開(kāi)“編輯關(guān)系編輯關(guān)系”對(duì)話框,通過(guò)在下對(duì)話框,

溫馨提示

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