第3 章 VFP數(shù)據(jù)庫及其操作_第1頁
第3 章 VFP數(shù)據(jù)庫及其操作_第2頁
第3 章 VFP數(shù)據(jù)庫及其操作_第3頁
第3 章 VFP數(shù)據(jù)庫及其操作_第4頁
第3 章 VFP數(shù)據(jù)庫及其操作_第5頁
已閱讀5頁,還剩73頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章VFP數(shù)據(jù)庫及其操作3.1創(chuàng)建項目3.5數(shù)據(jù)表的維護(hù)3.2創(chuàng)建數(shù)據(jù)庫3.6數(shù)據(jù)表排序與索引3.3創(chuàng)建數(shù)據(jù)表3.7建立數(shù)據(jù)字典3.4數(shù)據(jù)表的基本操作3.8多數(shù)據(jù)表操作FVP項目組織簡圖查詢(.QPR)項目(.PJX)文檔數(shù)據(jù)代碼類其他自由表(.DBF)數(shù)據(jù)庫(.DBC)庫表(.DBF)備注(.FTP)索引(.IDX)3.1創(chuàng)建項目項目是文件、數(shù)據(jù)、文檔和VFP對象的集合。利用“項目管理器”可以很方便地組織和管理項目中的各類數(shù)據(jù)和對象用戶在開發(fā)一個應(yīng)用系統(tǒng)時,通常都是先從創(chuàng)建項目開始的項目(.PJX)文檔數(shù)據(jù)代碼類其他3.1創(chuàng)建項目1.建立工作目錄:組織和管理磁盤中的各類文件2.建立項目文件⑴菜單:選擇“文件/新建”菜單命令,或按工具欄“新建”按鈕,在“新建”對話框中選擇“項目”項⑵命令:CREATEPROJECT[<項目文件名>]3.打開項目文件⑴菜單:選擇“文件/打開”菜單命令,或按工具欄的“打開”按鈕,在“打開”對話框中選擇項目文件(*.PJX)⑵命令:MODIFYPROJECT[<項目文件名>]3.2創(chuàng)建數(shù)據(jù)庫數(shù)據(jù)庫是表的集合,即在一個數(shù)據(jù)庫中可以包含若干個通過關(guān)鍵字段相互關(guān)聯(lián)的表。一個數(shù)據(jù)庫文件(.DBC)中存儲了所包含的表與表之間的聯(lián)系,以及依賴于表的視圖、聯(lián)接和存儲過程等信息把表放入數(shù)據(jù)庫中可以減少數(shù)據(jù)的冗余,保護(hù)數(shù)據(jù)的完整性數(shù)據(jù)庫使得對數(shù)據(jù)的管理更加方便和有效數(shù)據(jù)庫(.DBC)庫表(.DBF)備注(.FTP)索引(.IDX)3.2.1數(shù)據(jù)庫的設(shè)計思想設(shè)計步驟設(shè)計過程分析數(shù)據(jù)需求明確設(shè)計目的確定需要的數(shù)據(jù)表確定需要的數(shù)據(jù)表確定所需字段確定表中需要的字段確定關(guān)系確定表間關(guān)系改進(jìn)設(shè)計優(yōu)化設(shè)計3.2.2數(shù)據(jù)庫的創(chuàng)建1.建立數(shù)據(jù)庫⑴項目管理器:“新建:數(shù)據(jù)庫”⑵菜單:選擇“文件/新建:數(shù)據(jù)庫”菜單命令⑶命令:CREATEDATABASE<數(shù)據(jù)庫名>2.在項目中添加數(shù)據(jù)庫在項目管理器中選定“數(shù)據(jù)庫”項,按“添加”按鈕,在“打開”對話框中選擇需要添加的數(shù)據(jù)庫文件3.2.3數(shù)據(jù)庫的基本操作1.打開數(shù)據(jù)庫⑴項目管理器:選定要打開的數(shù)據(jù)庫,按“打開”按鈕⑵菜單:選擇“文件/打開”菜單命令⑶命令①打開數(shù)據(jù)庫文件:OPENDATABASE[<數(shù)據(jù)庫文件名>]②數(shù)據(jù)庫設(shè)計器:MODIFYDATABASE[<數(shù)據(jù)庫文件名>]2.關(guān)閉數(shù)據(jù)庫⑴項目管理器:選定要關(guān)閉的數(shù)據(jù)庫,按“關(guān)閉”按鈕⑵命令:CLOSEDATABASES3.刪除數(shù)據(jù)庫⑴項目管理器:選定數(shù)據(jù)庫后,按“移去”按鈕,將從項目中移去選定的庫文件;按“刪除”按鈕,則將選定的庫文件從磁盤上刪除⑵命令:DELETEDATABABE<數(shù)據(jù)庫文件名>3.3創(chuàng)建數(shù)據(jù)表1.數(shù)據(jù)表和數(shù)據(jù)庫表(Table)是處理數(shù)據(jù)和建立關(guān)系型數(shù)據(jù)庫及應(yīng)用程序的基本元素。數(shù)據(jù)庫(DATABASE)是表的集合2.數(shù)據(jù)表的類型⑴自由表:不屬于任何數(shù)據(jù)庫而獨(dú)立存在的表⑵數(shù)據(jù)庫表:屬于某一數(shù)據(jù)庫的表3.數(shù)據(jù)表的結(jié)構(gòu)數(shù)據(jù)表形式上是一組相關(guān)聯(lián)的數(shù)據(jù)按行和列排列的二維表格,用來描述一個實體字段記錄3.3創(chuàng)建數(shù)據(jù)表INSERTAPPENDAPPENDFROMBROWSEEDITCHANGEREPLACEDELETERECALLPACKZAPLISTDISPLAYBROWSELOCATECONTINUEFINDSEEKCOUNTSUMAVERAGETOTALCOPYLISTSTRUMODISTRUCOPYSTRUCREATEUSESQRTINDEX顯示結(jié)構(gòu)編輯結(jié)構(gòu)復(fù)制結(jié)構(gòu)統(tǒng)計數(shù)據(jù)數(shù)據(jù)表結(jié)構(gòu)數(shù)據(jù)表記錄新建表打開/關(guān)閉增加記錄刪除記錄顯示記錄修改記錄檢索記錄排序索引復(fù)制表3.3.1基本概念

定義字段:為每個字段指定名稱、數(shù)據(jù)類型和寬度,它們決定了表中的數(shù)據(jù)是如何被標(biāo)識和保存的⑴字段名:以字母或漢字開頭,由字母、漢字、數(shù)字或下劃線組成,不能包含空格。數(shù)據(jù)庫表字段名最長為128個字符,自由表字段名最長為10個字符⑵字段類型:決定了存儲在字段中的值的數(shù)據(jù)類型⑶字段寬度:指能夠容納存儲數(shù)據(jù)的長度⑷小數(shù)位:若字段的類型是數(shù)值型(N)和浮點(diǎn)型(F)時,還需給出小數(shù)位數(shù)。小數(shù)位數(shù)不能大于9,雙精度型數(shù)據(jù)的小數(shù)位數(shù)不能大于18⑸使用空值:在建立數(shù)據(jù)表時,可以指定字段是否接受空值(NULL)3.3.1基本概念建立“教學(xué)管理”數(shù)據(jù)庫,其中有“學(xué)生”、“課程”和“成績”三個表3.3.2自由表的建立____1.定義表結(jié)構(gòu)表結(jié)構(gòu)的定義在“表設(shè)計器”中完成。打開表設(shè)計器的方法有:⑴菜單:選擇“文件/新建”菜單命令⑵命令:CREATE<表文件名>⑶項目管理器:選擇“自由表”,按“新建”按鈕定義表結(jié)構(gòu)就是設(shè)置表的字段屬性,包括字段名、數(shù)據(jù)類型、字段寬度和小數(shù)位數(shù)等

定義字段

修改字段

插入字段

調(diào)整字段

刪除字段3.3.2自由表的建立____2.輸入記錄輸入記錄數(shù)據(jù)可以選擇“顯示/瀏覽”或“編輯”菜單命令,在“瀏覽”或“編輯”窗口中進(jìn)行⑴一般數(shù)據(jù)的輸入字符型、數(shù)值型、邏輯型、日期型等字段類型數(shù)據(jù)可以直接在瀏覽窗口或編輯窗口中輸入3.3.2自由表的建立____2.輸入記錄⑵備注型字段數(shù)據(jù)的輸入雙擊名為“memo”的備注字段標(biāo)志,進(jìn)入備注窗口,輸入文本內(nèi)容⑶通用型字段數(shù)據(jù)的輸入雙擊名為“gen”的通用字段標(biāo)志,進(jìn)入通用型字段輸入編輯窗口。選擇“編輯/插入對象”菜單命令,在“插入對象”對話框中選擇插入OLE對象要刪除備注字段或通用字段的內(nèi)容,可雙擊字段名,打開編輯窗口,選擇“編輯/清除”菜單命令

如果在數(shù)據(jù)表中定義了備注型或通用型字段,系統(tǒng)會自動生成與表文件名相同的備注文件(.FPT)。備注文件是表文件的輔助文件,它隨著表文件的打開而打開,隨著表文件的關(guān)閉而關(guān)閉

無論一個表中定義了多少個備注型或通用型字段,系統(tǒng)只生成一個備注文件3.3.3數(shù)據(jù)庫表的建立____1.在數(shù)據(jù)庫中建立新表在項目管理器中,選擇“數(shù)據(jù)庫:表”項,按“新建”按鈕

使用項目管理器創(chuàng)建的表自動包含在項目文件中

當(dāng)數(shù)據(jù)庫處于打開狀態(tài)時,用建立自由表的方法創(chuàng)建的新表將包含在該數(shù)據(jù)庫中3.3.3數(shù)據(jù)庫表的建立____2.將自由表添加到數(shù)據(jù)庫⑴項目管理器選擇“數(shù)據(jù)庫:表”項,按“添加”按鈕⑵命令:ADDTABLE<數(shù)據(jù)表文件名>

數(shù)據(jù)庫中的表只能屬于一個數(shù)據(jù)庫文件,如果向當(dāng)前數(shù)據(jù)庫中添加的表已屬于其它數(shù)據(jù)庫,則需要先從其它數(shù)據(jù)庫中移去該數(shù)據(jù)表,然后才能將它添加到當(dāng)前數(shù)據(jù)庫中3.3.3數(shù)據(jù)庫表的建立____3.從數(shù)據(jù)庫中移去數(shù)據(jù)表⑴項目管理器選定要移去的表,按“移去”按鈕,在提示對話框中按“移去”按鈕;若按“刪除”按鈕,則不僅從數(shù)據(jù)庫中移去該表,同時也從磁盤上刪除了該表⑵命令:REMOVETABLE

<數(shù)據(jù)表文件名>3.4.1數(shù)據(jù)表的瀏覽____1.打開數(shù)據(jù)表文件

打開數(shù)據(jù)表⑴菜單:選擇“文件/打開”菜單命令⑵命令:USE<表文件名>

關(guān)閉數(shù)據(jù)表⑴菜單:選擇“窗口/數(shù)據(jù)工作期”菜單命令,在“數(shù)據(jù)工作期”對話框中選擇表的別名后,按“關(guān)閉”按鈕⑵命令:USE例如,USE學(xué)生USE課程USE3.4.1數(shù)據(jù)表的瀏覽____2.瀏覽與顯示表結(jié)構(gòu)⑴瀏覽表結(jié)構(gòu)①項目管理器:選定要瀏覽的表,按“修改”按鈕,打開表設(shè)計器②菜單:選擇“顯示/表設(shè)計器”菜單命令,打開表設(shè)計器⑵顯示表結(jié)構(gòu)(主窗口)命令:LIST|DISPLAYSTRUCTURE3.4.1數(shù)據(jù)表的瀏覽____3.瀏覽與顯示記錄⑴在瀏覽窗口中瀏覽記錄①項目管理器:選定要瀏覽的表,按“瀏覽”按鈕

對于備注型字段或通用型字段內(nèi)容,可以在瀏覽窗口中雙擊相應(yīng)的字段標(biāo)志(“Memo”或“Gen”),打開編輯窗口瀏覽②菜單:選擇“顯示/瀏覽”,或“顯示/編輯”菜單命令,打開瀏覽窗口③命令:BROWSE3.4.1數(shù)據(jù)表的瀏覽____3.瀏覽與顯示記錄⑵在瀏覽窗口中有選擇地瀏覽記錄①菜單:打開瀏覽窗口,選擇“表/屬性”菜單命令,在“工作區(qū)屬性”對話框的“數(shù)據(jù)過濾器”框中輸入篩選條件,可以只顯示滿足篩選條件的記錄。刪除篩選表達(dá)式,可恢復(fù)顯示所有記錄在“工作區(qū)屬性”對話框中,選擇“字段篩選指定的字段”選項,按“字段篩選”按鈕,在“字段選擇器”對話框中選擇要顯示內(nèi)容的字段;選擇“工作區(qū)中的所有字段”選項,可取消對字段訪問的限制,恢復(fù)顯示所有字段②命令設(shè)置數(shù)據(jù)過濾器:SETFILTERTO[<條件表達(dá)式>]設(shè)置字段過濾器:SETFIELDSTOALL|<字段名表>3.4.1數(shù)據(jù)表的瀏覽____3.瀏覽與顯示記錄

【例3.10】用命令方式瀏覽“學(xué)生”表中所有女生的記錄SETFILTERTO性別=‘女’BROWSE【例3.11】取消【例3.10】中的記錄篩選,瀏覽所有學(xué)生的記錄SETFILTERTOBROWSE【例3.12】用命令方式瀏覽“學(xué)生”表中的學(xué)號、姓名、系別和貸款否SETFIELDSTO學(xué)號,姓名,系別,貸款否BROWSE【例3.13】取消【例3.12】對字段的限制,瀏覽“學(xué)生”表中所有字段SETFIELDSTOALLBROWSEUSE3.4.1數(shù)據(jù)表的瀏覽____3.瀏覽與顯示記錄⑶顯示記錄(主窗口)命令:LIST|DISPLAY[<范圍>]

[FIELDS<字段名表>][WHILE<條件>][FOR<條件>]“FIELDS<字段名表>”可以用<表達(dá)式表>代替【例3.14】顯示“學(xué)生”表中所有女生的學(xué)號、姓名和所在系的信息:USEE:\VFP6\DATA\學(xué)生.DBF&&打開學(xué)生表LISTFIELDS學(xué)號,姓名,系別FOR性別=”女”語句無WHILE有WHILE無FOR有FORDISPLAYDELETERECALLREPLACENEXT1ALLREST3.4.1數(shù)據(jù)表的瀏覽____應(yīng)用示例1.顯示所有男生的姓名與在2007年的年齡

2.顯示所有姓“張”同學(xué)的學(xué)號、姓名和系別

3.顯示所有姓名中含有“林”字同學(xué)的學(xué)號、姓名和系別

4.顯示所有在本月過生日同學(xué)的姓名和出生日期

5.分頁顯示所有同學(xué)的信息

6.顯示當(dāng)前記錄信息7.顯示學(xué)號的第4位為3,并且在10月份出生的學(xué)生的信息LIST姓名,2007-YEAR(出生日期)FOR性別=‘男’LIST學(xué)號,姓名,系別FOR姓名=[張]$$LEFT(姓名,2)=[張]LISTLIST學(xué)號,姓名,系別FORAT(“林”,姓名)#0$$“林”$姓名LISTFIELDS姓名,出生日期FORMONTH(出生日期)=MONTH(DATE())DISPLAYALLDISPALY3.4.2記錄的定位____1.記錄指針記錄指針存放的是記錄號。被記錄指針指向的記錄稱為“當(dāng)前記錄”

向表中錄入數(shù)據(jù)時,系統(tǒng)會按照錄入次序為記錄加上記錄號

數(shù)據(jù)表剛打開時,記錄指針總是指向首記錄通過移動記錄指針可以指定當(dāng)前要操作的記錄文件起始標(biāo)識(BOF)首記錄(TOP)第2條記錄………記錄指針→第i條記錄………第n-1條記錄尾記錄(Bottom)文件結(jié)束標(biāo)識(EOF)3.4.2記錄的定位____2.移動記錄指針⑴菜單:打開瀏覽窗口,選擇“表/轉(zhuǎn)到記錄”菜單命令⑵命令①絕對移動:[GO[TO]]<記錄號>|TOP|BOTTOM功能:將記錄指針定位在指定記錄號的記錄上

TOP表示第一條記錄,BOTTOM表示最后一條記錄②相對移動:SKIP[+|-][<算術(shù)表達(dá)式>]功能:將記錄指針從當(dāng)前位置向前或向后移動若干條記錄位置③條件定位:LOCATE[<范圍>]FOR<條件>功能:查找滿足條件的第一條記錄

“FOR<條件>”是必須的;使用CONTINUE命令可繼續(xù)查找下一條滿足條件的記錄3.4.2記錄的定位

【例3.15】用命令方式定位并顯示“學(xué)生”表的指定記錄USEE:\VFP6\DATA\學(xué)生GOTOPDISPLAYGO6DISPLAYGOBOTTOMDISPLAY【例3.16】使用SKIP命令移動“學(xué)生”表的記錄指針GO2SKIP5DISPLAYSKIP–3DISPLAY3.4.2記錄的定位

【練習(xí)】用命令方式顯示“學(xué)生”表倒數(shù)第5條記錄信息GOTOBOTTOMSKIP-4DISPLAY【例3.17】將記錄指針定位在學(xué)生表中第一條性別為“男”的記錄上LOCATEFOR性別=”男”?FOUND()DISPLAY CONTINUEDISPLAY3.5.1修改表結(jié)構(gòu)在表設(shè)計器中可以修改表結(jié)構(gòu)1.項目管理器:選定要修改的表,按“修改”按鈕2.菜單:選擇“文件/打開”菜單命令,或“顯示/表設(shè)計器”菜單命令3.命令:MODIFYSTRUCTURE

修改字段屬性后,VFP將按新的屬性改寫整個.DBF文件,可能造成數(shù)據(jù)丟失3.5.2添加記錄____1.在瀏覽窗口中追加記錄⑴菜單:打開瀏覽窗口,選擇“顯示/追加方式”菜單命令,可以在原有記錄的后面追加多條新記錄選擇“表/追加新記錄”菜單命令,每次只能添加一條新記錄⑵命令:APPEND[BLANK]

BLANK表示空記錄3.5.2添加記錄____2.插入記錄命令:INSERT[BLANK][BEFORE]功能:在數(shù)據(jù)表的當(dāng)前記錄之前或之后插入一條記錄BEFORE表示“之前”3.5.2添加記錄____3.從其它文件中追加記錄⑴菜單:打開瀏覽窗口,選擇“表/追加記錄”菜單命令⑵命令:APPENDFROM<源表文件名>[FIELDS<字段名表>][FOR<條件>]功能:將滿足條件的記錄按指定的字段從源表文件中追加到當(dāng)前數(shù)據(jù)表的末尾例如,將“課程”表中的相應(yīng)數(shù)據(jù)追加到“課程安排”表中:USEE:\VFP6\DATA\課程安排APPENDFROME:\VFP6\DATA\課程.DBFFIELDS課程號,課程3.5.3編輯記錄命令:EDIT|CHANGE[<范圍>][FIELDS<字段名表>][FOR<條件>]功能:修改當(dāng)前表給定范圍內(nèi),滿足條件記錄的制定字段值3.5.3編輯記錄____1.在瀏覽窗口中編輯記錄⑴項目管理器:選定表,按“瀏覽”按鈕,打開瀏覽窗口,直接修改字段值。關(guān)閉瀏覽窗口,所做的修改將自動保存在表文件中

備注型字段或通用型字段內(nèi)容,可以雙擊相應(yīng)的字段標(biāo)志(“Memo”或“Gen”),打開編輯窗口進(jìn)行編輯或修改⑵命令:BROWSE[FIELDS<字段名表>][FREEZE<字段名>][NOAPPEND][NOMODIFY][FOR<條件>]FREEZE表示凍結(jié)在指定字段NOAPPEND表示禁止追加NOMODIFY表示禁止修改3.5.3編輯記錄____2.批量修改記錄對一批記錄中的若干字段值進(jìn)行有規(guī)律的修改⑴菜單:打開數(shù)據(jù)表,選擇“表/替換字段”菜單命令,在“替換字段”對話框中設(shè)置⑵命令:REPLACE[<字段1>WITH<表達(dá)式1>[ADDITIVE][,<字段2>WITH<表達(dá)式2>[ADDITIVE]…[<范圍>][FOR<條件>][WHILE<條件>]功能:對表中指定范圍內(nèi)的滿足條件的記錄進(jìn)行批量修改

【例3.21】給“學(xué)生”表管理系的每個學(xué)生減去15.5元助學(xué)金USEE:\VFP6\DATA\學(xué)生REPLACEALL助學(xué)金WITH助學(xué)金-15.5FOR系別=”管理”3.5.4刪除記錄1.邏輯刪除:給記錄加刪除標(biāo)記⑴鼠標(biāo)操作:在瀏覽窗口中,單擊左側(cè)白色方框使之變黑⑵菜單:選擇“表/刪除記錄”菜單命令⑶命令:DELETE[<范圍>][FOR<條件>]2.恢復(fù)邏輯刪除:取消刪除標(biāo)記⑴鼠標(biāo)操作:單擊邏輯刪除標(biāo)記,取消黑色方框⑵菜單:選擇“表/恢復(fù)記錄”菜單命令⑶命令:RECALL[<范圍>][FOR<條件>]3.物理刪除:從磁盤上刪除記錄,不可恢復(fù)⑴菜單:選擇“表/徹底刪除”菜單命令⑵命令:PACK(刪除帶有刪除標(biāo)記的記錄)ZAP(一步、全部清除表中記錄,僅保留表結(jié)構(gòu))RECALLDELETEPACKZAP記錄物理刪除邏輯刪除3.5記錄刪除____應(yīng)用示例【例3.23】邏輯刪除“學(xué)生”表1983年以前出生的學(xué)生,再將其恢復(fù)DELETEFORYEAR(出生日期)<1983LIST姓名,性別,出生日期,系別RECALLALL【例3.22、24】邏輯刪除“學(xué)生”表最后一條記錄,再將其物理刪除GOBOTTOMDELETEPACKLIST姓名,性別,系別【例3.25】刪除“課程安排”表中的所有記錄?RECCOUNT()ZAP?RECCOUNT()3.5記錄編輯____應(yīng)用練習(xí)

1.在第三個記錄之后插入一條新記錄

2.對從當(dāng)前記錄開始一直到最后一條記錄的籍貫和高等數(shù)學(xué)成績進(jìn)行修改3.將所有學(xué)生的獎學(xué)金上調(diào)5%,再加10元

4.邏輯刪除第一個記錄

5.恢復(fù)第7個記錄之前的3條記錄中被邏輯刪除了的記錄

6.物理刪除所有被邏輯刪除的記錄7.邏輯刪除最后5條記錄中姓“王”的同學(xué)GO3INSERTEDITRESTFTELDS籍貫,高等數(shù)學(xué)REPLACE獎學(xué)金WITH獎學(xué)金*1.05+10DELETERECORD1GO7SKIP-3RECALLNEXT3PACKGOBOTTOMSKIP-4DELETERESTFOR姓名=‘王’3.5.5復(fù)制數(shù)據(jù)表____1.數(shù)據(jù)表文件的復(fù)制1.數(shù)據(jù)表文件的復(fù)制⑴菜單:打開表文件,選擇“文件/導(dǎo)出”菜單命令,顯示“導(dǎo)出”對話框⑵命令:COPYTO<新表文件>[<范圍>][FIELDS<字段名表>]

[FOR<條件>][WHILE<條件>]2.數(shù)據(jù)表結(jié)構(gòu)的復(fù)制命令:COPYSTRUCTURETO<新表文件>[FIELDS<字段名表>]3.5.5復(fù)制數(shù)據(jù)表____3.數(shù)據(jù)表文件的更名在項目管理器中選擇要重命名表的“快捷菜單/重命名”命令,在“重命名文件”對話框中輸入新的文件名3.5.6數(shù)據(jù)表與數(shù)組之間的數(shù)據(jù)交換1.將表的當(dāng)前記錄復(fù)制到數(shù)組命令:SCATTER[FIELDS<字段名表>][MEMO]TO<數(shù)組名>|MEMVAR功能:將數(shù)據(jù)表的當(dāng)前記錄按字段順序復(fù)制到數(shù)組或內(nèi)存變量MEMO表示包括備注型字段的內(nèi)容;MEMVAR傳遞到一組內(nèi)存變量中例如,USEE:\VFP6\DATA\學(xué)生*將第1條記錄的姓名、性別和系別3個字段復(fù)制到數(shù)組AA中SCATTERFIELDS姓名,性別,系別TOAAGO5*將第5條記錄復(fù)制到數(shù)組BB中,包括備注型字段的內(nèi)容SCATTERTOBBMEMO3.5.6數(shù)據(jù)表與數(shù)組之間的數(shù)據(jù)交換2.將數(shù)組復(fù)制到表的當(dāng)前記錄命令:GATHERFROM<數(shù)組名>|MEMVAR[FIELDS<字段名表>][MEMO]功能:將數(shù)組元素或同名內(nèi)存變量的值順序復(fù)制到當(dāng)前記錄的指定字段中例如:USEE:\VFP6\DATA\學(xué)生*在表的末尾增加一條空記錄APPENDBLANK*將數(shù)組AA中的數(shù)據(jù)復(fù)制到當(dāng)前的空記錄中GATHERFROMAAFIELDS姓名,性別,系別3.6.1數(shù)據(jù)表排序

排序是把數(shù)據(jù)表中的記錄按照某個字段值的大小重新排列,作為排序依據(jù)的字段稱為“關(guān)鍵字”按照關(guān)鍵字的值從小到大的排序稱為升序,從大到小的排序稱為降序排序后生成一個新的數(shù)據(jù)表文件,其結(jié)構(gòu)和數(shù)據(jù)可以與源文件完全相同,也可以取自源文件的一部分字段命令:SORTTO<文件名>[<范圍>][FIELDS<字段名表>][FOR<條件>]ON<字段名1>[/A][/D][/C][,<字段名2>[/A][/D][/C]…][ASCENDING|DESCENDING]/A表示升序,/D表示降序,/C表示字母不分大小寫。默認(rèn)為升序原數(shù)據(jù)表(無序)排序結(jié)果數(shù)據(jù)表(有序)排序3.6.1數(shù)據(jù)表排序

【例3.30】對“學(xué)生”表中所有貸款的學(xué)生按“系別”的升序排序,排序后的新表文件名為“貸款學(xué)生”:USEE:\VFP6\DATA\學(xué)生SORTTO貸款學(xué)生ON系別FOR貸款否

【例3.31】將“學(xué)生”表按“系別”升序進(jìn)行排序,系別相同者,按“學(xué)號”降序進(jìn)行排序,排序后的新表文件名為“各系學(xué)生”:USEE:\VFP6\DATA\學(xué)生SORTTO各系學(xué)生ON系別,學(xué)號/D

【練習(xí)】分別顯示所有學(xué)生中總分為最高和最低同學(xué)的姓名和各門課程的成績SORTTOPXON總分/DUSEPXDISPLAY姓名,高等數(shù)學(xué)GOBOTTOMDISPLAY姓名,高等數(shù)學(xué)3.6.2數(shù)據(jù)表索引____1.基本概念⑴索引是由指向表記錄的指針構(gòu)成的文件,這些指針邏輯上按照索引關(guān)鍵字的值進(jìn)行排序索引文件和表文件分別存儲,并且不改變表中記錄的物理順序原數(shù)據(jù)表(無序)索引文件(有序)索引排序索引結(jié)果文件表文件索引文件排列依據(jù)多個字段一個表達(dá)式排列順序各字段分別統(tǒng)一順序排序范圍指定范圍指定條件.DBF.IDX#…語文…#語文1…77…1922…63…2873…92…3774…43…4665…87…5636…66…6433.6.2數(shù)據(jù)表索引____1.基本概念⑵索引的類型(從組織方式分類)索引類型描述關(guān)鍵字?jǐn)?shù)目限制獨(dú)立索引.IDX文件名由用戶確定,必須明確打開單關(guān)鍵字表達(dá)式100個字符以內(nèi)結(jié)構(gòu)復(fù)合索引.CDX文件名與表文件名相同,隨表自動打開多關(guān)鍵字表達(dá)式,稱為標(biāo)識240個字符以內(nèi)非結(jié)構(gòu)復(fù)合索引文件名由用戶確定,隨表自動打開3.6.2數(shù)據(jù)表索引____1.基本概念⑶索引關(guān)鍵字索引關(guān)鍵字是指建立索引用的字段或字段表達(dá)式,可以是表中的單個字段,也可以是幾個字段組成的表達(dá)式

索引表達(dá)式通常用字符串運(yùn)算符“+”將幾個字段連接起來。若組成表達(dá)式的字段具有不同類型時,則必須使用函數(shù)對字段進(jìn)行類型轉(zhuǎn)換,使其具有相同的數(shù)據(jù)類型。一般多字段排列,都將相應(yīng)的字段轉(zhuǎn)換成C型表達(dá)式

例如,STR()函數(shù)可將N型數(shù)據(jù)轉(zhuǎn)換為C型數(shù)據(jù),DTOC()函數(shù)可以把D型數(shù)據(jù)轉(zhuǎn)換為C型數(shù)據(jù)3.6.2數(shù)據(jù)表索引____1.基本概念⑷索引關(guān)鍵字的類型(按功能分類)索引類型關(guān)鍵字重復(fù)值說明創(chuàng)建修改命令索引個數(shù)主索引不允許僅適用數(shù)據(jù)庫表,可用于在永久關(guān)系中建立參照完整性CREATETABLEALTERTABLE僅1個候選索引可用作主關(guān)鍵字,可用于在永久關(guān)系中建立參照完整性INDEXCREATETABLEALTERTABLE允許多個惟一索引允許,但輸出無重復(fù)值為與以前版本兼容而設(shè)置INDEX普通索引允許可作為一對多永久關(guān)系中的“多方”3.6.2數(shù)據(jù)表索引____2.建立索引◆建立獨(dú)立索引⑴利用表設(shè)計器:選擇“索引”選項卡⑵命令:INDEXON<索引關(guān)鍵字表達(dá)式>

TO<索引文件名>[UNIQUE|CANDIDATE][ASCENDING|DESCENDING][FOR<條件>]

UNIQUE表示惟一索引;CANDIDATE表示候選索引;“無”表示普通索引

ASCENDING表示升序(默認(rèn)),DESCENDING表示降序例如,為“學(xué)生”表按姓名和出生日期建立獨(dú)立索引文件SY1USEE:\VFP6\DATA\學(xué)生INDEXON姓名+DTOC(出生日期)TOSY13.6.2數(shù)據(jù)表索引____2.建立索引⑶獨(dú)立索引文件的打開

與表文件同時打開:USE<表文件名>INDEX<索引文件名>

打開表文件后再打開:SETINDEXTO<索引文件名>⑷獨(dú)立索引文件的關(guān)閉

與表文件同時關(guān)閉:USE

單獨(dú)先關(guān)閉:SETINDEXTO.DBF.IDX#…語文…#語文1…77…1922…63…2873…92…3774…43…4665…87…5636…66…6433.6.2數(shù)據(jù)表索引____2.建立索引◆建立復(fù)合索引⑴利用表設(shè)計器:選擇“索引”選項卡⑵命令:INDEXON<索引關(guān)鍵字表達(dá)式>TAG<索引標(biāo)識名>[UNIQUE|CANDIDATE][ASCENDING|DESCENDING][FOR<條件>]

UNIQUE表示惟一索引;CANDIDATE表示候選索引;“無”表示普通索引

ASCENDING表示升序(默認(rèn)),DESCENDING表示降序3.6.2數(shù)據(jù)表索引____2.建立索引

【例3.32】為“學(xué)生”表建立結(jié)構(gòu)復(fù)合索引,包含學(xué)號(候選索引)、性別(普通索引)、系別與性別(普通索引)、系別與出生日期(普通索引)4個索引項USEE:\VFP6\DATA\學(xué)生INDEXON學(xué)號TAG學(xué)號CANDIDATEINDEXON性別TAG性別INDEXON系別+性別TAG系別_性別INDEXON系別+DTOC(出生日期)TAG系別_生日USE3.6.2數(shù)據(jù)表索引____3.按索引順序瀏覽記錄一個復(fù)合索引文件中可以建立多個索引項,每一項代表了處理記錄的一種邏輯順序。使用索引之前,應(yīng)先指定將要使用的索引項

⑴菜單:打開瀏覽窗口,選擇“表/屬性”菜單命令,在“工作區(qū)屬性”對話框的“索引順序”框中選擇一個索引項,瀏覽窗口中的記錄就會按照該索引順序排列

⑵命令:SETORDERTO[TAG<索引標(biāo)識名>]3.6.2數(shù)據(jù)表索引____3.按索引順序瀏覽記錄

【例3.33】用命令方式分別將“性別”和“系別_性別”索引項設(shè)置為當(dāng)前索引,并顯示“學(xué)生”表的記錄,最后取消索引CLEARUSEE:\VFP6\DATA\學(xué)生SETORDERTOTAG性別DISPLAYALLSETORDERTOTAG系別_性別DISPLAYALLSETORDERTOTAGDISPLAYALL3.6.2數(shù)據(jù)表索引____應(yīng)用示例1.按總分和高等數(shù)學(xué)成績建立索引文件SY1.IDX

2.對XJK.DBF文件按姓名進(jìn)行索引(索引文件名為XJK.IDX),并分別用SEEK和FIND命令檢索顯示第一個姓“李”的同學(xué)的信息

3.對XJK.DBF文件建立以高等數(shù)學(xué)成績降序排列的結(jié)構(gòu)復(fù)合索引文件SY2.CDX

4.對XJK.DBF文件,其記錄以高等數(shù)學(xué)成績升序排列,高等數(shù)學(xué)成績相同時則按學(xué)號升序排列,建立結(jié)構(gòu)復(fù)合索引文件SY3.CDX

5.建立一數(shù)據(jù)庫文件XJK2.DBF,其結(jié)構(gòu)中包含有學(xué)號、系別、專業(yè)三個字段,并輸入一些記錄值,然后將XJK.DBF和XJK2.DBF連接成一個數(shù)據(jù)庫ZH.DBF文件

6.將上題的XJK2文件按學(xué)號建立索引(索引標(biāo)記為SNO),以學(xué)號為關(guān)聯(lián)表達(dá)式,將XJK和XJK2建立關(guān)聯(lián)并顯示3.6.3數(shù)據(jù)表查詢數(shù)據(jù)表建立索引后,就可以使用FIND、SEEK等查詢命令,快速定位記錄,提高數(shù)據(jù)庫應(yīng)用系統(tǒng)的運(yùn)行效率1.FIND命令:FIND<字符串>|<數(shù)值>2.SEEK命令:SEEK<表達(dá)式>

只有對已建立過索引的數(shù)據(jù)表才能使用這兩條命令

索引文件的關(guān)鍵字必須是要查找的字段命令執(zhí)行后將使記錄指針指向所匹配的第一條記錄,可以使用測試函數(shù)FOUND()判斷檢索成功。檢索成功時,F(xiàn)OUND()返回.T.,EOF()返回.F.,RECNO()返回對應(yīng)記錄號;否則,F(xiàn)OUND()返回.F.,EOF()返回.T.,RECNO()返回末記錄號+1若要繼續(xù)查找所匹配的下一條記錄,可以使用SKIP命令3.6.3數(shù)據(jù)表查詢

【例3.34】對“學(xué)生”表按“學(xué)號”進(jìn)行索引檢索USEE:\VFP6\DATA\學(xué)生SETORDERTOTAG學(xué)號&&將“學(xué)號”索引項設(shè)置為當(dāng)前索引FIND01020215&&或SEEK“01020215”【例3.35】對“學(xué)生”表按“性別”及“系別_性別”進(jìn)行索引檢索USEE:\VFP6\DATA\學(xué)生SETORDERTO性別FIND女 &&或SEEK“女”DISPLAYSETORDERTOTAG系別_性別CZ=“計算機(jī)”+“男”SEEKCZ&&或FIND&CZSKIP&&繼續(xù)查找下一個匹配的記錄3.6.4數(shù)據(jù)表統(tǒng)計與匯總____1.數(shù)據(jù)表的統(tǒng)計⑴計數(shù)(COUNT)COUNT[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量名>]

【例3.36】統(tǒng)計“學(xué)生”表中總?cè)藬?shù)及沒有貸款學(xué)生的人數(shù)USEE:\VFP6\DATA\學(xué)生COUNTTOZRS?“學(xué)生總?cè)藬?shù)為:”,ZRSCOUNTFOR!貸款否TOWDKS?“沒有貸款的學(xué)生人數(shù)為:”+STR(WDKS,3)【練習(xí)】統(tǒng)計“學(xué)生”表中沒有貸款學(xué)生在總?cè)藬?shù)中的百分比?“沒有貸款學(xué)生在總?cè)藬?shù)中的百分比為:”,WDKS/ZRS*100,“%”3.6.4數(shù)據(jù)表統(tǒng)計與匯總____1.數(shù)據(jù)表的統(tǒng)計⑵求和(SUM)SUM<算術(shù)表達(dá)式表>[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量名表>|ARRAY<數(shù)組名>]

【例3.37】統(tǒng)計“成績”表中學(xué)號為“01020215”各門課程的總成績USEE:\VFP6\DATA\成績SUM成績FOR學(xué)號=“01020215”3.6.4數(shù)據(jù)表統(tǒng)計與匯總____1.數(shù)據(jù)表的統(tǒng)計⑶求平均值(AVERAGE)AVERAGE<算術(shù)表達(dá)式表>[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量名表>|ARRAY<數(shù)組名>]【例3.37】統(tǒng)計“成績”表中學(xué)號為“01020215”各門課程的總成績USEE:\VFP6\DATA\成績AVERAGE成績FOR學(xué)號=“01020215”USEE:\VFP6\DATA\成績AVERAGE成績TOZFCOUNTFOR成績>ZF【練習(xí)】統(tǒng)計成績大于總平均成績的成績數(shù)3.6.4數(shù)據(jù)表統(tǒng)計與匯總____2.數(shù)據(jù)表的分類匯總對數(shù)據(jù)表中的數(shù)值型字段,按照排序或索引關(guān)鍵字值的不同分類,然后各組分別求和命令:TOTALON<匯總關(guān)鍵字>TO<表文件名>

數(shù)據(jù)表必須事先按“匯總關(guān)鍵字”排序或索引

【例3.39】求每個學(xué)生各門課程的總成績USEE:\VFP6\DATA\成績INDEXON學(xué)號TAG學(xué)號TOTALON學(xué)號TOE:\VFP6\DATA\成績匯總USEE:\VFP6\DATA\成績匯總LISTUSE3.7建立數(shù)據(jù)字典數(shù)據(jù)庫文件可以作為一個數(shù)據(jù)字典來存儲和管理有關(guān)記錄和字段的規(guī)則、缺省值、觸發(fā)器、表間關(guān)系等數(shù)據(jù)庫表是數(shù)據(jù)庫的一部分,具有自由表所沒有的一些屬性,在“表設(shè)計器”下部可以設(shè)置這些屬性數(shù)據(jù)庫表所特有的屬性3.7.1設(shè)置表的字段屬性1.輸入掩碼:輸入掩碼是指定義字段中的值必須遵守的標(biāo)點(diǎn)、空格和其他格式要求,以限制或控制用戶輸入的數(shù)據(jù)格式,屏蔽非法輸入,從而減少人為的數(shù)據(jù)輸入錯誤,保證輸入的字段數(shù)據(jù)具有統(tǒng)一的風(fēng)格,提高輸入的效率2.格式:格式實質(zhì)上就是一種掩碼,它決定了字段在瀏覽窗口、表單、報表中的顯示樣式掩碼含義掩碼含義!小寫字母轉(zhuǎn)換為大寫D使用系統(tǒng)日期格式#輸入數(shù)字、空格和正負(fù)號L在數(shù)值前顯示填充的前導(dǎo)零,分隔小數(shù)點(diǎn)左邊的數(shù)字串N只允許輸入字母和數(shù)字.規(guī)定小數(shù)點(diǎn)的位置T禁止輸入字段的前導(dǎo)空格和結(jié)尾空格字符9允許數(shù)字和正負(fù)號X允許輸入任何字符A使用系統(tǒng)日期Y只允許輸入邏輯字符3.7.1設(shè)置表的字段屬性3.標(biāo)題:字段標(biāo)題將作為該字段在瀏覽窗口中的列標(biāo)題,以及表單表格中的默認(rèn)標(biāo)題名稱3.7.1設(shè)置表的字段屬性4.字段注釋:為字段添加注釋,使表更容易被理解此外,還可以在“表設(shè)計器”的“表”選項卡中“表注釋”框為整個數(shù)據(jù)表添加注釋3.7.2設(shè)置表的有效性規(guī)則1.字段級規(guī)則將用戶輸入的數(shù)據(jù)與所定義的規(guī)則表達(dá)式進(jìn)行比較,如果輸入的值不滿足規(guī)則要求,系統(tǒng)即拒絕該值,從而控制輸入到字段中的數(shù)據(jù)類型2.默認(rèn)值在瀏覽窗口、表單或以編程方式輸入數(shù)據(jù)時,VFP將自動為某個字段填入默認(rèn)值,直到輸入新值默認(rèn)值可以是任何有效的表達(dá)式,但表達(dá)式的返回值必須和該字段的數(shù)據(jù)類型一致3.7.2設(shè)置表的有效性規(guī)則3.記錄級規(guī)則可以控制用戶輸入到記錄中的信息類型,檢驗輸入的整條記錄是否符合要求。字段級有效性規(guī)則只對應(yīng)一個字段,記錄級有效性規(guī)則通常用來比較同一輯錄中的兩個以上字段值,以確保它們遵守在數(shù)據(jù)庫中建立的有效性規(guī)則。記錄的有效性規(guī)則通常在輸入或修改記錄時被激活,在刪除記錄時一般不起作用設(shè)置是在“表設(shè)計器”的“表”選項卡的“記錄有效性”框中完成3.7.3設(shè)置觸發(fā)器觸發(fā)器是指對記錄進(jìn)行輸入、刪除、更新等操作時,系統(tǒng)自動啟動的一個程序,用來完成指定的任務(wù)⑴插入觸發(fā)器是在表中插入記錄時所觸發(fā)的檢測程序,該程序可以是表達(dá)式或自定義函數(shù)。檢測結(jié)果為真時,接受插入的記錄⑵更新觸發(fā)器是在表中修改記錄后按回車鍵時所觸發(fā)的檢測程序。檢測結(jié)果為真時,保存修改后的記錄;否則,不保存修改的結(jié)果,同時還原修改之前的記錄值⑶刪除觸發(fā)器是在表中刪除記錄時所激發(fā)的檢測程序。檢測結(jié)果為真時,該記錄可以被刪除;否則,禁止刪除該記錄3.7.4創(chuàng)建永久關(guān)系永久關(guān)系是數(shù)據(jù)庫表之間的關(guān)系,存儲在數(shù)據(jù)庫文件中建立關(guān)系的兩個表通常具有公共字段或語義相關(guān)的字段,其中包含主關(guān)鍵字段的表稱為父表,包含外部關(guān)鍵字段的表稱為子表1.建立關(guān)系:對主關(guān)鍵字段和外部關(guān)鍵字段使用相同的索引表達(dá)式分別建立索引;然后打開“數(shù)據(jù)庫設(shè)計器”,將父表的索引拖到子表相匹配的索引上(兩表之間顯示一條關(guān)系線)2.編輯關(guān)系:選擇關(guān)系線快捷菜單的“編輯關(guān)系”命令3.刪除關(guān)系:選擇關(guān)系線快捷菜單的“刪除關(guān)系”命令3.7.5設(shè)置參照完整性

參照完整性是指建立一組規(guī)則,當(dāng)用戶插入、更新或刪除一個數(shù)據(jù)表中的記錄時,通過參照引用另一個與之有關(guān)系的數(shù)據(jù)表中的記錄,來檢查對當(dāng)前表的數(shù)據(jù)操作是否正確建立了關(guān)系的兩個數(shù)據(jù)庫表,通過實施參照完整性規(guī)則,可以確保:當(dāng)父表中沒有關(guān)聯(lián)記錄時,記錄不得添加到子表中;當(dāng)因改變主表的值而導(dǎo)致子表中出現(xiàn)孤立記錄時,主表的值不能被改變;當(dāng)主表記錄在子表中有匹配記錄時,該主表記錄不能被刪除設(shè)置方法:打開數(shù)據(jù)庫設(shè)計器,選擇“數(shù)據(jù)庫/清理數(shù)據(jù)庫”菜單命令,再選擇“數(shù)據(jù)庫/編輯參照完整性”菜單命令,在顯示的“參照完整性生成器”對話框中分別定義更新規(guī)則、刪除規(guī)則和插入規(guī)則3.8.1工作區(qū)的選擇____1.工作區(qū)VFP允許在32767個工作區(qū)中打開和操作數(shù)據(jù)表。要同時使用多個數(shù)據(jù)表,必須在不同工作區(qū)中分別打開每個工作區(qū)都有一個編號(工作區(qū)號),用1、2、3等數(shù)字表示,對1~10號工作區(qū),還可以用A~J字母表示

用戶在某一時刻只能在一個工作區(qū)上(即當(dāng)前工作區(qū))操作

工作區(qū)中的記錄指針彼此獨(dú)立,分別指向本工作區(qū)數(shù)據(jù)表的當(dāng)前記錄。通常,在一個工作區(qū)中移動記錄指針時不會影響其他工作區(qū)的記錄指針3.8.1工作區(qū)的選擇____2.選擇工作區(qū)SELECT<工作區(qū)號|別名|0>功能:選擇需要使用的工作區(qū)執(zhí)行SELECT命令后,

溫馨提示

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

評論

0/150

提交評論