第三章數(shù)據(jù)庫(kù)_第1頁(yè)
第三章數(shù)據(jù)庫(kù)_第2頁(yè)
第三章數(shù)據(jù)庫(kù)_第3頁(yè)
第三章數(shù)據(jù)庫(kù)_第4頁(yè)
已閱讀5頁(yè),還剩83頁(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、第三章第三章 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)問(wèn)題的提出: 前面我們所創(chuàng)建的表都是自由表,在實(shí)際應(yīng)用中自由表很難滿足管理信息系統(tǒng)中存貯數(shù)據(jù)的要求,那么將如何解決這一問(wèn)題?解決問(wèn)題的方法: 我們可以通過(guò)建立數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)表來(lái)解決上述問(wèn)題。第三章第三章 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)本章主要介紹的內(nèi)容有: 數(shù)據(jù)庫(kù)的創(chuàng)建; 數(shù)據(jù)庫(kù)的操作; 排序、索引和查找; 計(jì)算與統(tǒng)計(jì); 表之間的關(guān)系; 數(shù)據(jù)庫(kù)表的屬性。 通過(guò)學(xué)習(xí)本章內(nèi)容,您能夠做到: 掌握數(shù)據(jù)庫(kù)的創(chuàng)建; 掌握數(shù)據(jù)庫(kù)的操作; 掌握數(shù)據(jù)的排序、索引和查找; 掌握數(shù)據(jù)的計(jì)算與統(tǒng)計(jì)處理; 掌握表之間的關(guān)系; 掌握數(shù)據(jù)庫(kù)表的屬性。 本章目錄本章目錄 3.1引 例 3.2數(shù)據(jù)庫(kù)的創(chuàng)建 3.3數(shù)據(jù)

2、庫(kù)的操作 3.4排序、索引和查詢(xún) 3.5數(shù)據(jù)統(tǒng)計(jì) 3.6表之間的關(guān)系 3.7數(shù)據(jù)完整性 HOME3.1 引例 在“學(xué)生管理系統(tǒng)”應(yīng)用程序中,我們?cè)O(shè)計(jì)了一個(gè)學(xué)生管理數(shù)據(jù)庫(kù)(xsgl.dbc),如圖所示。其中包含學(xué)生檔案表、學(xué)生成績(jī)表、學(xué)生課程表,也包含相關(guān)表之間按關(guān)鍵字建立的關(guān)系。 那么如何創(chuàng)建數(shù)據(jù)庫(kù)呢?3.2 數(shù)據(jù)庫(kù)的創(chuàng)建數(shù)據(jù)庫(kù)的創(chuàng)建 3.2.1數(shù)據(jù)庫(kù)的設(shè)計(jì) 3.2.2創(chuàng)建新的數(shù)據(jù)庫(kù) 3.2.1數(shù)據(jù)庫(kù)的設(shè)計(jì) 以學(xué)生管理(xsgl.dbc)數(shù)據(jù)庫(kù)為例來(lái)講解設(shè)計(jì)的一般步驟: 1.確定數(shù)據(jù)庫(kù)的用途 對(duì)在校學(xué)生檔案和成績(jī)等數(shù)據(jù)進(jìn)行管理。 2.確定需要的表 根據(jù)調(diào)查決定設(shè)計(jì)xsda.dbf、xscj.d

3、bf 、xskc.dbf等。 3.確定所需的字段 以xscj.dbf為例,所需的字段為xh、kcdm、cj。 4.確定各表之間的關(guān)系 將xsda.dbf和xscj.dbf按xh建立關(guān)系,將xscj.dbf和xskc.dbf 按kcdm建立關(guān)系。 5.改進(jìn)整個(gè)設(shè)計(jì) 對(duì)整個(gè)設(shè)計(jì)方案進(jìn)行改進(jìn)和優(yōu)化。3.2.2創(chuàng)建新的數(shù)據(jù)庫(kù) 用戶可以通過(guò)三種方式創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù):菜單方式、項(xiàng)目管理器方式和命令方式。 1.菜單方式 以創(chuàng)建XSGL.DBC為例,操作步驟如下: 選“文件”菜單中的“新建”菜單項(xiàng)或直接單擊常用工具欄上的“新建”按鈕在“新建”對(duì)話框中選“數(shù)據(jù)庫(kù)”單選按鈕單擊“新建文件”按鈕在“創(chuàng)建”對(duì)話框的

4、“數(shù)據(jù)庫(kù)名”文本框中輸入要建立的數(shù)據(jù)庫(kù)名“XSGL”單擊“保存”按鈕。 創(chuàng)建數(shù)據(jù)庫(kù)后,進(jìn)入數(shù)據(jù)庫(kù)設(shè)計(jì)器,如下圖:注 意:此時(shí),用戶已經(jīng)建立了名為XSGL.DBC的空數(shù)據(jù)庫(kù),系統(tǒng)還會(huì)自動(dòng)生成一個(gè)名為XSGL.DCT的數(shù)據(jù)庫(kù)備注文件和一個(gè)名為XSGL.DCX的數(shù)據(jù)庫(kù)索引文件。 2.項(xiàng)目管理器方式項(xiàng)目管理器方式 打開(kāi)“項(xiàng)目管理器”選擇項(xiàng)目管理器中的“數(shù)據(jù)”選項(xiàng)卡選中“數(shù)據(jù)庫(kù)”單擊“新建”按鈕,其余步驟同菜單方式。 3.命令方式命令方式 創(chuàng)建數(shù)據(jù)庫(kù)的命令如下: 格式:格式:CREATE DATABASECREATE DATABASE數(shù)據(jù)庫(kù)文件名|? 功能:功能:創(chuàng)建并打開(kāi)一個(gè)數(shù)據(jù)庫(kù)。 示例:CREAT

5、E DATABASE xsglCREATE DATABASE xsgl 剛建好的數(shù)據(jù)庫(kù)只是一個(gè)數(shù)據(jù)庫(kù)的框架,里面還沒(méi)有數(shù)據(jù),用戶可以向其中添加各種數(shù)據(jù)庫(kù)對(duì)象,如表、視圖、表之間的關(guān)系等。數(shù)據(jù)庫(kù)的.DBC(數(shù)據(jù)庫(kù)容器)文件中存儲(chǔ)有關(guān)該數(shù)據(jù)庫(kù)的所有信息(包括和它關(guān)聯(lián)的文件和對(duì)象名),數(shù)據(jù)庫(kù)文件并不在物理上包含任何對(duì)象(如表和字段),而僅存儲(chǔ)指向表文件的路徑指針等。 3.33.3數(shù)據(jù)庫(kù)的操作數(shù)據(jù)庫(kù)的操作 數(shù)據(jù)庫(kù)創(chuàng)建后,用戶可以進(jìn)行如下一系列操作:建立新表、添加表到數(shù)據(jù)庫(kù)中、瀏覽數(shù)據(jù)庫(kù)中的表、修改數(shù)據(jù)庫(kù)中的表、移去數(shù)據(jù)庫(kù)中的表、建立各表之間的關(guān)系、編輯存儲(chǔ)過(guò)程、編輯參照完整性等。 3.33.3數(shù)據(jù)庫(kù)的

6、操作數(shù)據(jù)庫(kù)的操作 3.3.1數(shù)據(jù)庫(kù)的打開(kāi)與關(guān)閉 3.3.2數(shù)據(jù)庫(kù)的修改 3.3.1數(shù)據(jù)庫(kù)的打開(kāi)與關(guān)閉 1.數(shù)據(jù)庫(kù)的打開(kāi) 在數(shù)據(jù)庫(kù)中建立表或?qū)?shù)據(jù)庫(kù)中的表進(jìn)行相關(guān)操作時(shí),都必須先打開(kāi)數(shù)據(jù)庫(kù)。 操作方式同樣有兩種。菜單方式與數(shù)據(jù)表的操作相似 命令方式: 格式:格式: OPEN DATABASE數(shù)據(jù)庫(kù)文件名|?EXCLUSIVESHARED 功能:功能:打開(kāi)一個(gè)指定的數(shù)據(jù)庫(kù)。示例:示例:clearclose allopen database xsgl &打開(kāi)數(shù)據(jù)庫(kù)xsgl.dbcopen database mydata &打開(kāi)數(shù)據(jù)庫(kù)mydata.dbc 2.數(shù)據(jù)庫(kù)的關(guān)閉 當(dāng)暫時(shí)不使用

7、數(shù)據(jù)庫(kù)時(shí),為防止意外斷電或誤操作而破壞數(shù)據(jù)庫(kù)文件中的數(shù)據(jù),應(yīng)及時(shí)將其關(guān)閉。關(guān)閉數(shù)據(jù)庫(kù),可以用項(xiàng)目管理器或CLOSE DATABASE命令關(guān)閉數(shù)據(jù)庫(kù)。 命令方式: 格式1:CLOSE DATABASE ALL 功能:關(guān)閉數(shù)據(jù)庫(kù)和表。 格式2:CLOSE ALL 功能:關(guān)閉除命令窗口、調(diào)試窗口、跟蹤窗口和幫助窗口以外的所有文件。 3.設(shè)置當(dāng)前數(shù)據(jù)庫(kù) 在VFP中,可以同時(shí)打開(kāi)多個(gè)數(shù)據(jù)庫(kù),但在同一時(shí)刻僅有一個(gè)為“當(dāng)前數(shù)據(jù)庫(kù)” 。在打開(kāi)多個(gè)數(shù)據(jù)庫(kù)時(shí),最后一個(gè)打開(kāi)的數(shù)據(jù)庫(kù)為當(dāng)前數(shù)據(jù)庫(kù)。用戶可在列表框中選擇其他已經(jīng)打開(kāi)的數(shù)據(jù)庫(kù)成為當(dāng)前數(shù)據(jù)庫(kù),也可以使用下列命令設(shè)置當(dāng)前數(shù)據(jù)庫(kù)。 格式:SET DATABASE

8、 TO 數(shù)據(jù)庫(kù)文件名 功能:指定當(dāng)前數(shù)據(jù)庫(kù)。 3.3.2 數(shù)據(jù)庫(kù)的修改1.在數(shù)據(jù)庫(kù)中建立新表 在數(shù)據(jù)庫(kù)設(shè)計(jì)器中單擊右鍵在快捷菜單中選擇“新建表”在彈出對(duì)話框中選擇“新建表”輸入新表名進(jìn)入“表設(shè)計(jì)器”,用戶可以按照第2章介紹的方法建立一個(gè)新表。 注 意:數(shù)據(jù)庫(kù)表的表設(shè)計(jì)器與自由表的表設(shè)計(jì)器不同,在數(shù)據(jù)庫(kù)中建立的表為數(shù)據(jù)庫(kù)表。 2.向數(shù)據(jù)庫(kù)中添加表 在數(shù)據(jù)庫(kù)設(shè)計(jì)器中,用戶可以選定目前不屬于任何其他數(shù)據(jù)庫(kù)的表(自由表),將其添加到數(shù)據(jù)庫(kù)中,使之成為一個(gè)數(shù)據(jù)表。有兩種方法。 (1)菜單法 選“數(shù)據(jù)庫(kù)”菜單中選擇“添加表”或右擊數(shù)據(jù)庫(kù)選“添加表”。 (2)命令方式格式:ADD TABLE |?NAME功

9、能:在當(dāng)前數(shù)據(jù)庫(kù)中添加一個(gè)表。示例:將xsda表添加到數(shù)據(jù)庫(kù)xsgl.dbc中。 clear Open database xsgl.dbc Add table xsda.dbf name 學(xué)生的基本情況表 &將xsda.dbf添加到xsgl.dbc中,成為數(shù)據(jù)庫(kù)表,并命名為“學(xué)生的基本情況表”。注 意:數(shù)據(jù)庫(kù)表可以定義長(zhǎng)文件名表。 3.從數(shù)據(jù)庫(kù)中移去表或刪除表 當(dāng)數(shù)據(jù)庫(kù)不再需要某個(gè)表或其他數(shù)據(jù)庫(kù)需用此表時(shí),可以從該數(shù)據(jù)庫(kù)中移去此表。同樣有菜單方式和命令方式。 注 意:一個(gè)表在同一時(shí)間內(nèi)只能屬于一個(gè)數(shù)據(jù)庫(kù)。 (1)菜單方式 選定要移去或刪除的表選“數(shù)據(jù)庫(kù)”菜單中“移去”菜單項(xiàng)(或者在數(shù)據(jù)

10、庫(kù)表上右擊在快捷菜單中選“刪除”命令) 在如圖所示的對(duì)話框中單擊“移去”按鈕。 (2)命令方式 REMOVE TABLE |?DELETE 示例:示例: 將數(shù)據(jù)庫(kù)表學(xué)生檔案xsda.dbf從數(shù)據(jù)庫(kù)xsgl.dbc中移去,使其成為自由表。 clear Open database xsgl.dbc Remove table xsda.dbf實(shí)驗(yàn)三 數(shù)據(jù)庫(kù)的創(chuàng)建與操作 實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)上機(jī)實(shí)驗(yàn)掌握數(shù)據(jù)庫(kù)建立的方法和有關(guān)的操作。 實(shí)驗(yàn)步驟:首先布置上機(jī)實(shí)驗(yàn)內(nèi)容。 應(yīng)用菜單法和命令法進(jìn)行下列操作: 1、建立數(shù)據(jù)庫(kù) 2、打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù) 3、在數(shù)據(jù)庫(kù)中建立數(shù)據(jù)庫(kù)表 4、在數(shù)據(jù)庫(kù)中添加表 5、將數(shù)據(jù)庫(kù)中的表變

11、為自由表3.4排序、索引和查詢(xún) 建立數(shù)據(jù)庫(kù)的主要目的之一,就是要方便、靈活、快速、高效地提取所要的信息。在實(shí)際應(yīng)用中,數(shù)據(jù)庫(kù)是很大的,它有成千上萬(wàn)個(gè)記錄。因此必須有一套科學(xué)的、迅速而又方便的查詢(xún)方法,用前面所述的定位、顯示等方法是不能滿足需要的。為此,本節(jié)將討論如何組織排序文件和索引文件,以達(dá)到快速查詢(xún)的目的。3.43.4排序、索引和查詢(xún)排序、索引和查詢(xún) 3.4.1排序 3.4.2索引 3.4.3查詢(xún) 3.4.1排序 排序的特點(diǎn)是將已建好的表記錄按某一關(guān)鍵字規(guī)定的順序重新排列,產(chǎn)生一新的表文件,但原文件不變。 排序命令: 格式: SORT TO ON /A/C/D,/A/C/DFIELDSFO

12、R|WHILE 功能:對(duì)當(dāng)前表文件,按指定字段值重新排序,排序后生成一個(gè)以命名的表文件。 【例3.1】對(duì)XSDA表按“XH”降序排序,排序后的文件名為XSDA1;按“RXF”升序排序,排序后的文件名為XSDA2,且排序后的表文件中只有XH、XM、RXF 3個(gè)字段。 輸入命令: Clear Open database xsgl.dbc use xsda list sort to xsda1 on xh/d use xsda1 list use xsda sort to xsda2 on rxf fields xh,xm,rxf use xsda2 list實(shí)例演示顯示結(jié)果: 3.4.2索引 通過(guò)

13、SORT命令可以對(duì)表中某一個(gè)字段進(jìn)行排序,排序后將產(chǎn)生一個(gè)新的表文件,每排一次序就產(chǎn)生一個(gè)新的表文件,這樣將占據(jù)大量的空間,要解決這樣的問(wèn)題可以通過(guò)建立索引來(lái)解決。 1.索引的概念 為了更好地處理和組織數(shù)據(jù),Visual FoxPro 6.0提供了一個(gè)非常方便的工具索引。Visual FoxPro 6.0中的索引和書(shū)中的目錄類(lèi)似,書(shū)中的目錄是一份頁(yè)碼的列表,根據(jù)內(nèi)容指向書(shū)中的頁(yè)號(hào)。而Visual FoxPro 6.0中表的索引是一個(gè)記錄號(hào)的列表,它指向待處理的記錄,并確定了記錄的處理順序。 2.索引類(lèi)型 (1)索引類(lèi)型 索引分為主索引、候選索引、普通索引、惟一索引4種類(lèi)型。 (2)索引文件類(lèi)型

14、 根據(jù)索引文件包含索引的個(gè)數(shù)和索引文件的打開(kāi)方式不同,索引文件可分為獨(dú)立索引文件和復(fù)合索引文件。復(fù)合索引文件又分為非結(jié)構(gòu)化復(fù)合索引文件和結(jié)構(gòu)化復(fù)合索引文件。 獨(dú)立索引文件。 復(fù)合索引文件。 3.索引操作 索引操作主要是指建立、插入、刪除索引等,可通過(guò)表設(shè)計(jì)器和命令方式進(jìn)行。 (1)表設(shè)計(jì)器方式 下面以在XSDA.DBF為例建立索引,按“XH”字段建立主索引、升序,按“XM”字段建立普通索引,按“RXF”字段建立普通索引。 操作步驟: 打開(kāi)xsda表進(jìn)入表設(shè)計(jì)器在“學(xué)號(hào)”字段的“索引”項(xiàng)中選“升序”選“索引”選項(xiàng)卡設(shè)置xh的索引類(lèi)型為“主索引”,其他索引操作類(lèi)似。 (2)表達(dá)式生成器的使用 在“

15、表設(shè)計(jì)器”的“索引”選項(xiàng)卡中,單擊“表達(dá)式”編輯框右邊的“”生成器按鈕,進(jìn)入表達(dá)式生成器窗口,可以用可視化的設(shè)計(jì)建立索引表達(dá)式。 (3)命令方式 格式:格式: INDEX ONINDEX ON索引表達(dá)式TAGTAG索引標(biāo)識(shí)符OFOFCDXCDX文件名|TOTO索引文件名 FORFOR條件ASCENDINGASCENDING|DESCENDINGDESCENDINGUNIQUEUNIQUE|CANDIDATECANDIDATEADDITIADDITIVEVE 功能功能: :為當(dāng)前表建立一個(gè)索引文件。 實(shí)例演示【例3.2】對(duì)xsda表按xh建立獨(dú)立索引文件xsdaxh。 輸入命令: Clear U

16、se xsda List Index on xh to xsdaxh &對(duì)xsda表按xh建立獨(dú)立索引 List 運(yùn)行結(jié)果: 【例3.3】對(duì)xsda表先按xm索引,再按csrq索引建立獨(dú)立索引文件xsdaxc。 輸入命令: Clear Use xsda Index on xm+dtoc(csrq) to xsdaxc List 運(yùn)行結(jié)果: 【例3.4】對(duì)xsda.dbf表按xh降序建立結(jié)構(gòu)化復(fù)合索引文件,索引標(biāo)識(shí)為“學(xué)號(hào)” 。 輸入命令: Clear Use xsda Index on xh tag 學(xué)號(hào) descending List 運(yùn)行結(jié)果: 【例3.5】對(duì)xsda.dbf表按x

17、b建立結(jié)構(gòu)化復(fù)合索引文件,索引標(biāo)識(shí)為“性別”,指定為惟一索引。 Clear Use xsda Index on xb tag 性別 unique List 運(yùn)行結(jié)果: 4.使用索引 要使用索引進(jìn)行查詢(xún),必須打開(kāi)表與索引文件。一個(gè)表可以打開(kāi)多個(gè)相關(guān)的索引文件,同一個(gè)復(fù)合索引文件中也可能包含多個(gè)索引標(biāo)識(shí),但任何時(shí)候只有一個(gè)索引文件能起作用,在復(fù)合索引中也只能有一個(gè)索引標(biāo)識(shí)能起作用。當(dāng)前起作用的索引文件稱(chēng)為主控索引文件,當(dāng)前起作用的索引標(biāo)識(shí)稱(chēng)為當(dāng)前索引。也就是說(shuō),實(shí)現(xiàn)索引查詢(xún)必須滿足以下的條件:打開(kāi)表、打開(kāi)索引文件、確定主控索引文件,對(duì)復(fù)合索引文件還需確定當(dāng)前索引。 (1)索引文件的打開(kāi)。 索引文件

18、的打開(kāi)有以下幾種方式: 自動(dòng)打開(kāi) 建立索引文件時(shí),剛建立的獨(dú)立索引文件和結(jié)構(gòu)化復(fù)合索引文件由系統(tǒng)自動(dòng)打開(kāi)。 打開(kāi)表的同時(shí),打開(kāi)索引文件 格式1:USE ORDER TAG 功能:格式1打開(kāi)表文件同時(shí),與之同名的結(jié)構(gòu)型復(fù)合索引文件自動(dòng)打開(kāi),并設(shè)置當(dāng)前索引。 格式2:USE INDEX ORDER TAG 功能:格式2打開(kāi)表文件的同時(shí),打開(kāi)非結(jié)構(gòu)化復(fù)合索引文件和獨(dú)立索引文件,可設(shè)置當(dāng)前索引。示 例 1.打開(kāi)xsda表的同時(shí)將自動(dòng)打開(kāi)結(jié)構(gòu)化復(fù)合索引文件xsda.cdx,并指定關(guān)鍵字為“學(xué)號(hào)”的索引為當(dāng)前索引。 Use xsda order tag 學(xué)號(hào) 2.打開(kāi)xsda表的同時(shí),打開(kāi)非結(jié)構(gòu)化復(fù)合索引

19、文件xsdaxb.cdx,并指定關(guān)鍵字為“性別” 的索引為當(dāng)前索引。 Use xsda index xsdaxb.cdx order tag 性別 在表文件已打開(kāi)的情況下,單獨(dú)打開(kāi)相關(guān)聯(lián)的索引文件。 格式:SET INDEX TO索引文件名表|?ORDERTAG標(biāo)識(shí)符OFCDX文件名ADDITIVE 功能:打開(kāi)當(dāng)前表的一個(gè)或多個(gè)索引文件。 【例3.6】打開(kāi)XSDA表中的獨(dú)立索引文件和非結(jié)構(gòu)化復(fù)合索引文件。 Use xsda List Set index to xsdaxc List Set index to xsdaxh additive List運(yùn)行結(jié)果: (2)設(shè)置當(dāng)前索引 一個(gè)文件在某一

20、時(shí)刻,只有一個(gè)索引起作用,稱(chēng)為主控索引或當(dāng)前索引,主控索引就是控制當(dāng)前顯示順序的索引。設(shè)置當(dāng)前索引的命令如下: 格式: SET ORDER TO順序號(hào)|IDX文件名|TAG標(biāo)識(shí)名OFCDX文件名 功能:指定當(dāng)前索引。 【例3.7】設(shè)置當(dāng)前索引。Use xsdaIndex on xh tag 學(xué)號(hào) of xsda22.cdxIndex on csrq tag 出生日期 xsda22.cdxIndex on rxf tag 入學(xué)分 xsda22.cdxClose allUse xsda index xsda22 order tag 出生日期ListClose allUse xsda Set ind

21、ex to xsda22 order tag 入學(xué)分List Close allUse xsda Set index to xsda22Set order to tag 學(xué)號(hào)ListClose all運(yùn)行結(jié)果: (3)關(guān)閉索引文件。 格式1:USE 功能:關(guān)閉表文件的同時(shí),也關(guān)閉了所有已打開(kāi)的索引文件。 格式2:SET INDEX TO 功能:關(guān)閉所有已打開(kāi)的索引文件,但表文件仍處于打開(kāi)狀態(tài)。 格式3:CLOSE INDEX 功能:與格式2相同。 (4)索引的更新。 自動(dòng)更新。 當(dāng)表中的數(shù)據(jù)發(fā)生變化時(shí)(如對(duì)其進(jìn)行了插入、刪除、添加或修改操作之后),所有當(dāng)前已打開(kāi)的索引文件都會(huì)跟隨數(shù)據(jù)的改變自動(dòng)

22、改變記錄的邏輯順序,實(shí)現(xiàn)索引文件的自動(dòng)更新。 重新索引。 若修改表中記錄之后再打開(kāi)索引文件,可在打開(kāi)需要重建索引的全部索引文件后,使用如下命令重新索引。 格式:REINDEX (5)刪除索引 獨(dú)立索引文件可采取刪除文件的方法直接刪除,復(fù)合索引文件可用下列命令刪除: 格式:DETELE TAG索引標(biāo)識(shí)符|ALLOFCDX文件名 說(shuō)明: DETELE TAG索引標(biāo)識(shí)符刪除復(fù)合索引文件中的指定索引。 DETELE TAG ALL刪除復(fù)合索引文件中的所有索引,此時(shí),復(fù)合索引文件將不復(fù)存在。 對(duì)于復(fù)合索引文件,也可以在表設(shè)計(jì)器中刪除索引標(biāo)識(shí)。 實(shí)驗(yàn)四 排序與索引 實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)實(shí)驗(yàn)掌握排序的方法和索引文

23、件建立的方法及索引文件的打開(kāi)、關(guān)閉、設(shè)置當(dāng)前索引等方法。 實(shí)驗(yàn)步驟:首先布置本次上機(jī)的實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)過(guò)程中要注意的問(wèn)題。 1、設(shè)置當(dāng)前盤(pán)和當(dāng)前文件夾; 2、通過(guò)排序命令排序后建立新的表文件,并打開(kāi)新的表文件查看排序結(jié)果; 3、用表設(shè)計(jì)器建立索引文件,并設(shè)置當(dāng)前索引,通過(guò)LIST或?yàn)g覽命令查看結(jié)果; 4、用INDEX命令建立獨(dú)立索引、結(jié)構(gòu)化復(fù)合索引、非結(jié)構(gòu)化索引文件,并查看結(jié)果; 5、將表文件關(guān)閉,再打開(kāi)表和相應(yīng)的索引文件,學(xué)會(huì)打開(kāi)索引文件、設(shè)置當(dāng)前索引。3.4.3查詢(xún) 所謂查詢(xún),就是在表中查找用戶指定條件的記錄和字段。查詢(xún)時(shí),我們先將記錄指針快速定位到所查記錄處,然后通過(guò)顯示命令查看數(shù)據(jù)內(nèi)容。

24、Visual FoxPro 6.0提供了兩種查詢(xún)方法:一種是順序查詢(xún);另一種是索引查詢(xún)。 1.順序查詢(xún) 順序查詢(xún)是在表文件中依次查找滿足條件的記錄。順序查詢(xún)也稱(chēng)直接查詢(xún),包括LOCATE和CONTINUE兩條命令。 格式: LOCATE范圍FOR條件WHILE條件 CONTINUE【例3.9】在XSDA表中按順序查找不是團(tuán)員的所有記錄。 Close all Open database xsgl Use xsda Locate for tyf=.f. ? found() 顯示是否找到記錄 ? recno() 顯示當(dāng)前記錄號(hào) disp 顯示找到的記錄 continue 繼續(xù)查找 ? recno()

25、 disp continue ? found() ? recno() ? eof() cont ? eof() cont ? eof() 顯示是否到文件尾 2.索引查詢(xún) 索引查詢(xún)的速度很快但其算法要求表的記錄是有序的,這就需要事先對(duì)表建立索引文件,方可采用索引查詢(xún)。索引查詢(xún)的命令有FIND和SEEK,下面分別介紹。 (1)FIND命令 格式:FIND 字符串|常數(shù) (2)SEEK命令 格式:SEEK表達(dá)式 功能:在已確定當(dāng)前索引的表文件中快速查找滿足表達(dá)式值的第一個(gè)記錄。 實(shí)驗(yàn)五 索引、查找實(shí)驗(yàn)?zāi)康模哼M(jìn)一步熟悉索引文件的有關(guān)操作,掌握索引查找和順序查找法。實(shí)驗(yàn)步驟:首先布置上機(jī)任務(wù),提出上機(jī)中

26、應(yīng)注意的問(wèn)題。1. 熟悉索引文件的打開(kāi)和設(shè)置當(dāng)前索引的方法;2. 應(yīng)用索引查找來(lái)查找字符型數(shù)據(jù)、數(shù)值型數(shù)據(jù)和日期型數(shù)據(jù)。3. 應(yīng)用順序查找的方法查找各種類(lèi)型的數(shù)據(jù)。3.5數(shù)據(jù)統(tǒng)計(jì) 在數(shù)據(jù)庫(kù)應(yīng)用中,不僅可以對(duì)表中的信息進(jìn)行各種形式的查詢(xún),還可以對(duì)表中的數(shù)據(jù)進(jìn)行各類(lèi)統(tǒng)計(jì)處理。VFP提供了計(jì)數(shù)(COUNT)、求和(SUM)、求平均值(AVERAGE)和分類(lèi)匯總(TOTAL)等命令,以完成數(shù)據(jù)統(tǒng)計(jì)處理工作。 3.5數(shù)據(jù)統(tǒng)計(jì) 3.5.1統(tǒng)計(jì)記錄個(gè)數(shù)命令 3.5.2求和命令 3.5.3求平均值命令 3.5.4分類(lèi)匯總命令3.5.1統(tǒng)計(jì)記錄個(gè)數(shù)命令 格式:COUNT范圍FOR條件TO內(nèi)存變量 功能:統(tǒng)計(jì)當(dāng)前

27、表中指定范圍內(nèi)滿足條件的記錄個(gè)數(shù),并存于內(nèi)存變量中。 說(shuō)明:范圍缺省指ALL;TO內(nèi)存變量選項(xiàng)表示把符合條件的記錄個(gè)數(shù)保存到內(nèi)存變量中去,不指定內(nèi)存變量時(shí),結(jié)果顯示在屏幕上。另外,函數(shù)RECCOUNT()返回當(dāng)前表中的記錄總數(shù)?!纠?.12】統(tǒng)計(jì)xsda.dbf表中的全部記錄數(shù)。clearOpen database xsglUse xsdaCount to n? n? reccount()運(yùn)行結(jié)果:993.5.2求和命令 格式:SUM范圍數(shù)值表達(dá)式表FOR條件TO內(nèi)存變量表 功能:在當(dāng)前表中,對(duì)指定范圍內(nèi)給定條件的數(shù)值型字段或含數(shù)值型字段的數(shù)值表達(dá)式進(jìn)行縱向求和計(jì)算,并把結(jié)果存放在對(duì)應(yīng)的內(nèi)存變

28、量表標(biāo)識(shí)的變量中。 Sum cj for xh=199921608 to zf3.5.3求平均值命令 格式:AVERAGE范圍數(shù)值表達(dá)式表FOR條件TO內(nèi)存變量表 功能:對(duì)當(dāng)前表中指定范圍內(nèi)滿足條件的數(shù)值型字段求算術(shù)平均值,并把結(jié)果存放在對(duì)應(yīng)的內(nèi)存變量表標(biāo)識(shí)的變量中。 average cj for kcdm=2 to pj 3.5.4分類(lèi)匯總命令 格式:格式:TOTAL ONTOTAL ON關(guān)鍵字TOTO文件名范圍FIELDSFIELDS字段名表FORFOR條件 功能:功能:按關(guān)鍵字對(duì)當(dāng)前表文件的數(shù)值型字段進(jìn)行分類(lèi)合計(jì),結(jié)果存入新生成的表文件中。 【例3.16】對(duì)xsda表按性別分類(lèi)統(tǒng)計(jì)男女同

29、學(xué)的入學(xué)分總分。clearUse xsgl!xsdaIndex on xb tag 性別Total on xb to xsdarxf fields rxfUse xsdarxfList3.63.6表之間的關(guān)系表之間的關(guān)系 3.6.1工作區(qū) 3.6.2多表之間的關(guān)系式 3.6.3設(shè)置表的永久關(guān)系 3.6.4設(shè)置表的臨時(shí)關(guān)系 3.6.1工作區(qū) 1.工作區(qū)的概念 工作區(qū)就是用來(lái)存放表的內(nèi)存空間。VFP提供了32767個(gè)工作區(qū),編號(hào)從1-32767。 在每個(gè)工作區(qū)可以打開(kāi)一個(gè)表,即在某一時(shí)刻該工作區(qū)中只有一個(gè)表處于“工作”狀態(tài),可以對(duì)該表進(jìn)行各種操作。 2.工作區(qū)的選擇打開(kāi)表的同時(shí)選擇工作區(qū)格式:US

30、E IN 功能:在指定工作區(qū)打開(kāi)表文件。打開(kāi)表的同時(shí)指定表的別名格式:USE ALIAS注 意:命令SELECT 0表示選定當(dāng)前未使用的最小工作區(qū)號(hào)。 3.工作區(qū)中數(shù)據(jù)的訪問(wèn)工作區(qū)中數(shù)據(jù)的訪問(wèn) 用戶可以用SELECT命令切換工作區(qū)使用不同的表,也可以在一個(gè)工作區(qū)中訪問(wèn)其他工作區(qū)中的表。各工作區(qū)中的表文件記錄指針是相互獨(dú)立的,轉(zhuǎn)換工作區(qū)時(shí)不影響指針的位置,對(duì)現(xiàn)行工作區(qū)進(jìn)行與其他工作區(qū)無(wú)關(guān)的操作時(shí),其他區(qū)中的記錄指針也不會(huì)受到影響。 為了不至于混淆不同工作區(qū)中表的字段內(nèi)容,VFP規(guī)定:從當(dāng)前工作區(qū)對(duì)其他工作區(qū)中打開(kāi)的表進(jìn)行訪問(wèn)時(shí),必須在被訪問(wèn)的表字段前面加上該表所在工作區(qū)的別名和連接符(.或-)。

31、3.6.2多表之間的關(guān)系式 一個(gè)數(shù)據(jù)庫(kù)中的多個(gè)表既相互獨(dú)立,又存在聯(lián)系。對(duì)數(shù)據(jù)庫(kù)的一個(gè)重要操作就是建立表之間的關(guān)系,即以其中一個(gè)表中的字段與另一個(gè)表中的同名字段建立關(guān)系。若要在數(shù)據(jù)庫(kù)表之間建立表間關(guān)系,前提是建立關(guān)系的表具有相同的字段;每個(gè)表都要以該字段建立索引。 多表之間的關(guān)系存在以下幾種類(lèi)型:一對(duì)一關(guān)系、一對(duì)多關(guān)系、多對(duì)多關(guān)系表之間可以建立永久關(guān)系和臨時(shí)關(guān)系。建立的方法可通過(guò)界面方法和命令方法進(jìn)行。被關(guān)聯(lián)的表為從表,發(fā)起關(guān)聯(lián)的表為主表(或父表)。3.6.3設(shè)置表的永久關(guān)系 永久關(guān)系 只能在數(shù)據(jù)庫(kù)表中建立永久關(guān)系。 1.建立永久關(guān)系的方法:在數(shù)據(jù)庫(kù)設(shè)計(jì)器中用鼠標(biāo)左鍵從一個(gè)表的索引處直接拖到需

32、要建立關(guān)系的另一個(gè)表的相應(yīng)索引上。 注 意: 索引是建立永久關(guān)系的前提。在一對(duì)一關(guān)系中,主表和從表均應(yīng)按相同的關(guān)鍵字建立主索引或候選索引。而對(duì)于一對(duì)多關(guān)系,主表建立主索引或候選索引,而從表可以建立普通索引。 2.刪除表之間的永久關(guān)系 選中關(guān)系,按DEL鍵或右擊關(guān)系,選“刪除關(guān)系”。 3.編輯表之間的永久關(guān)系 右擊關(guān)系,選“編輯關(guān)系”。3.6.4設(shè)置表的臨時(shí)關(guān)系 表之間的永久關(guān)系建立后,在每次使用表時(shí)不需要重新建立,但永久關(guān)系不能控制不同工作區(qū)中記錄的聯(lián)動(dòng)。因此,用戶可以建立臨時(shí)關(guān)系來(lái)控制表間記錄指針。在建立表間的臨時(shí)關(guān)系后,就會(huì)使得一個(gè)表(子表)的記錄指針自動(dòng)隨另一個(gè)表(父表)的記錄指針移動(dòng)。

33、這樣,當(dāng)關(guān)系中的“一”方(或父表)選擇一個(gè)記錄時(shí),會(huì)自動(dòng)去訪問(wèn)表關(guān)系中“多”方(或子表)的相關(guān)記錄。 操作步驟: (1)打開(kāi)從表,并索引(設(shè)置當(dāng)前索引); (2)打開(kāi)主表,與從表建立臨時(shí)關(guān)系。 格式:SET RELATION TO INTO |ADDITIVE 實(shí)驗(yàn)六 統(tǒng)計(jì)、計(jì)算和建立關(guān)系 實(shí)驗(yàn)?zāi)康模簩W(xué)會(huì)統(tǒng)計(jì)記錄個(gè)數(shù)、縱向求和、縱向求平均;學(xué)會(huì)在多工作區(qū)之間進(jìn)行表的操作、在表之間建立永久關(guān)系和臨時(shí)關(guān)系的方法。 實(shí)驗(yàn)步驟:首先布置上機(jī)實(shí)驗(yàn)任務(wù),其次說(shuō)明上機(jī)過(guò)程中容易出現(xiàn)的問(wèn)題及解決的辦法。 1、統(tǒng)計(jì)滿足范圍和條件的記錄數(shù); 2、對(duì)xscj.dbf縱向求各科總和和各科平均分; 3、在多個(gè)工作區(qū)中打

34、開(kāi)若干個(gè)表,選擇某工作區(qū)為當(dāng)前工作區(qū),在當(dāng)前工作區(qū)中訪問(wèn)其它工作區(qū)中字段; 4、在xsda和xscj表之間建立永久關(guān)系; 5、在xscj和kcsz表之間建立臨時(shí)關(guān)系。3.73.7數(shù)據(jù)完整性數(shù)據(jù)完整性 在表設(shè)計(jì)器對(duì)話框中,顯示了“字段”、“索引”和“表”三個(gè)選項(xiàng)卡名,稱(chēng)之為數(shù)據(jù)詞典。數(shù)據(jù)詞典用于保存對(duì)數(shù)據(jù)庫(kù)表中各種數(shù)據(jù)的定義或設(shè)置信息,包括表字段屬性、記錄屬性和參照完整性等。這些屬性或信息均可通過(guò)表設(shè)計(jì)器來(lái)設(shè)置、顯示或修改,并且將作為數(shù)據(jù)庫(kù)的一部分保存起來(lái),當(dāng)表從數(shù)據(jù)庫(kù)中移去,這些屬性也不再保存。 3.73.7數(shù)據(jù)完整性數(shù)據(jù)完整性 3.7.1設(shè)置表的字段屬性 3.7.2設(shè)置表的記錄屬性 3.7.3數(shù)據(jù)的完整性3.7.1設(shè)置表的字段屬性 1.顯示組框 設(shè)置表中字段的格式。 輸入掩碼。 顯示標(biāo)題。 2.字段注釋 在建立數(shù)據(jù)表結(jié)構(gòu)時(shí),對(duì)字段加以注釋?zhuān)梢蕴嵝炎砸鸦蚱渌脩?,清楚地掌握字段的屬性、意義及特殊用途等。 3.字段有效性組框 在字段有效性組框中可以定義字段的有效性規(guī)則、違反規(guī)則時(shí)的提示信息和字段的默認(rèn)值。 設(shè)

溫馨提示

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