版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章VFP數(shù)據庫及其操作3.1創(chuàng)建項目3.5數(shù)據表的維護3.2創(chuàng)建數(shù)據庫3.6數(shù)據表排序與索引3.3創(chuàng)建數(shù)據表3.7建立數(shù)據字典3.4數(shù)據表的基本操作3.8多數(shù)據表操作FVP項目組織簡圖查詢(.QPR)項目(.PJX)文檔數(shù)據代碼類其他自由表(.DBF)數(shù)據庫(.DBC)庫表(.DBF)備注(.FTP)索引(.IDX)3.1創(chuàng)建項目項目是文件、數(shù)據、文檔和VFP對象的集合。利用“項目管理器”可以很方便地組織和管理項目中的各類數(shù)據和對象用戶在開發(fā)一個應用系統(tǒng)時,通常都是先從創(chuàng)建項目開始的項目(.PJX)文檔數(shù)據代碼類其他3.1創(chuàng)建項目1.建立工作目錄:組織和管理磁盤中的各類文件2.建立項目文件⑴菜單:選擇“文件/新建”菜單命令,或按工具欄“新建”按鈕,在“新建”對話框中選擇“項目”項⑵命令:CREATEPROJECT[<項目文件名>]3.打開項目文件⑴菜單:選擇“文件/打開”菜單命令,或按工具欄的“打開”按鈕,在“打開”對話框中選擇項目文件(*.PJX)⑵命令:MODIFYPROJECT[<項目文件名>]3.2創(chuàng)建數(shù)據庫數(shù)據庫是表的集合,即在一個數(shù)據庫中可以包含若干個通過關鍵字段相互關聯(lián)的表。一個數(shù)據庫文件(.DBC)中存儲了所包含的表與表之間的聯(lián)系,以及依賴于表的視圖、聯(lián)接和存儲過程等信息把表放入數(shù)據庫中可以減少數(shù)據的冗余,保護數(shù)據的完整性數(shù)據庫使得對數(shù)據的管理更加方便和有效數(shù)據庫(.DBC)庫表(.DBF)備注(.FTP)索引(.IDX)3.2.1數(shù)據庫的設計思想設計步驟設計過程分析數(shù)據需求明確設計目的確定需要的數(shù)據表確定需要的數(shù)據表確定所需字段確定表中需要的字段確定關系確定表間關系改進設計優(yōu)化設計3.2.2數(shù)據庫的創(chuàng)建1.建立數(shù)據庫⑴項目管理器:“新建:數(shù)據庫”⑵菜單:選擇“文件/新建:數(shù)據庫”菜單命令⑶命令:CREATEDATABASE<數(shù)據庫名>2.在項目中添加數(shù)據庫在項目管理器中選定“數(shù)據庫”項,按“添加”按鈕,在“打開”對話框中選擇需要添加的數(shù)據庫文件3.2.3數(shù)據庫的基本操作1.打開數(shù)據庫⑴項目管理器:選定要打開的數(shù)據庫,按“打開”按鈕⑵菜單:選擇“文件/打開”菜單命令⑶命令①打開數(shù)據庫文件:OPENDATABASE[<數(shù)據庫文件名>]②數(shù)據庫設計器:MODIFYDATABASE[<數(shù)據庫文件名>]2.關閉數(shù)據庫⑴項目管理器:選定要關閉的數(shù)據庫,按“關閉”按鈕⑵命令:CLOSEDATABASES3.刪除數(shù)據庫⑴項目管理器:選定數(shù)據庫后,按“移去”按鈕,將從項目中移去選定的庫文件;按“刪除”按鈕,則將選定的庫文件從磁盤上刪除⑵命令:DELETEDATABABE<數(shù)據庫文件名>3.3創(chuàng)建數(shù)據表1.數(shù)據表和數(shù)據庫表(Table)是處理數(shù)據和建立關系型數(shù)據庫及應用程序的基本元素。數(shù)據庫(DATABASE)是表的集合2.數(shù)據表的類型⑴自由表:不屬于任何數(shù)據庫而獨立存在的表⑵數(shù)據庫表:屬于某一數(shù)據庫的表3.數(shù)據表的結構數(shù)據表形式上是一組相關聯(lián)的數(shù)據按行和列排列的二維表格,用來描述一個實體字段記錄3.3創(chuàng)建數(shù)據表INSERTAPPENDAPPENDFROMBROWSEEDITCHANGEREPLACEDELETERECALLPACKZAPLISTDISPLAYBROWSELOCATECONTINUEFINDSEEKCOUNTSUMAVERAGETOTALCOPYLISTSTRUMODISTRUCOPYSTRUCREATEUSESQRTINDEX顯示結構編輯結構復制結構統(tǒng)計數(shù)據數(shù)據表結構數(shù)據表記錄新建表打開/關閉增加記錄刪除記錄顯示記錄修改記錄檢索記錄排序索引復制表3.3.1基本概念
定義字段:為每個字段指定名稱、數(shù)據類型和寬度,它們決定了表中的數(shù)據是如何被標識和保存的⑴字段名:以字母或漢字開頭,由字母、漢字、數(shù)字或下劃線組成,不能包含空格。數(shù)據庫表字段名最長為128個字符,自由表字段名最長為10個字符⑵字段類型:決定了存儲在字段中的值的數(shù)據類型⑶字段寬度:指能夠容納存儲數(shù)據的長度⑷小數(shù)位:若字段的類型是數(shù)值型(N)和浮點型(F)時,還需給出小數(shù)位數(shù)。小數(shù)位數(shù)不能大于9,雙精度型數(shù)據的小數(shù)位數(shù)不能大于18⑸使用空值:在建立數(shù)據表時,可以指定字段是否接受空值(NULL)3.3.1基本概念建立“教學管理”數(shù)據庫,其中有“學生”、“課程”和“成績”三個表3.3.2自由表的建立____1.定義表結構表結構的定義在“表設計器”中完成。打開表設計器的方法有:⑴菜單:選擇“文件/新建”菜單命令⑵命令:CREATE<表文件名>⑶項目管理器:選擇“自由表”,按“新建”按鈕定義表結構就是設置表的字段屬性,包括字段名、數(shù)據類型、字段寬度和小數(shù)位數(shù)等
定義字段
修改字段
插入字段
調整字段
刪除字段3.3.2自由表的建立____2.輸入記錄輸入記錄數(shù)據可以選擇“顯示/瀏覽”或“編輯”菜單命令,在“瀏覽”或“編輯”窗口中進行⑴一般數(shù)據的輸入字符型、數(shù)值型、邏輯型、日期型等字段類型數(shù)據可以直接在瀏覽窗口或編輯窗口中輸入3.3.2自由表的建立____2.輸入記錄⑵備注型字段數(shù)據的輸入雙擊名為“memo”的備注字段標志,進入備注窗口,輸入文本內容⑶通用型字段數(shù)據的輸入雙擊名為“gen”的通用字段標志,進入通用型字段輸入編輯窗口。選擇“編輯/插入對象”菜單命令,在“插入對象”對話框中選擇插入OLE對象要刪除備注字段或通用字段的內容,可雙擊字段名,打開編輯窗口,選擇“編輯/清除”菜單命令
如果在數(shù)據表中定義了備注型或通用型字段,系統(tǒng)會自動生成與表文件名相同的備注文件(.FPT)。備注文件是表文件的輔助文件,它隨著表文件的打開而打開,隨著表文件的關閉而關閉
無論一個表中定義了多少個備注型或通用型字段,系統(tǒng)只生成一個備注文件3.3.3數(shù)據庫表的建立____1.在數(shù)據庫中建立新表在項目管理器中,選擇“數(shù)據庫:表”項,按“新建”按鈕
使用項目管理器創(chuàng)建的表自動包含在項目文件中
當數(shù)據庫處于打開狀態(tài)時,用建立自由表的方法創(chuàng)建的新表將包含在該數(shù)據庫中3.3.3數(shù)據庫表的建立____2.將自由表添加到數(shù)據庫⑴項目管理器選擇“數(shù)據庫:表”項,按“添加”按鈕⑵命令:ADDTABLE<數(shù)據表文件名>
數(shù)據庫中的表只能屬于一個數(shù)據庫文件,如果向當前數(shù)據庫中添加的表已屬于其它數(shù)據庫,則需要先從其它數(shù)據庫中移去該數(shù)據表,然后才能將它添加到當前數(shù)據庫中3.3.3數(shù)據庫表的建立____3.從數(shù)據庫中移去數(shù)據表⑴項目管理器選定要移去的表,按“移去”按鈕,在提示對話框中按“移去”按鈕;若按“刪除”按鈕,則不僅從數(shù)據庫中移去該表,同時也從磁盤上刪除了該表⑵命令:REMOVETABLE
<數(shù)據表文件名>3.4.1數(shù)據表的瀏覽____1.打開數(shù)據表文件
打開數(shù)據表⑴菜單:選擇“文件/打開”菜單命令⑵命令:USE<表文件名>
關閉數(shù)據表⑴菜單:選擇“窗口/數(shù)據工作期”菜單命令,在“數(shù)據工作期”對話框中選擇表的別名后,按“關閉”按鈕⑵命令:USE例如,USE學生USE課程USE3.4.1數(shù)據表的瀏覽____2.瀏覽與顯示表結構⑴瀏覽表結構①項目管理器:選定要瀏覽的表,按“修改”按鈕,打開表設計器②菜單:選擇“顯示/表設計器”菜單命令,打開表設計器⑵顯示表結構(主窗口)命令:LIST|DISPLAYSTRUCTURE3.4.1數(shù)據表的瀏覽____3.瀏覽與顯示記錄⑴在瀏覽窗口中瀏覽記錄①項目管理器:選定要瀏覽的表,按“瀏覽”按鈕
對于備注型字段或通用型字段內容,可以在瀏覽窗口中雙擊相應的字段標志(“Memo”或“Gen”),打開編輯窗口瀏覽②菜單:選擇“顯示/瀏覽”,或“顯示/編輯”菜單命令,打開瀏覽窗口③命令:BROWSE3.4.1數(shù)據表的瀏覽____3.瀏覽與顯示記錄⑵在瀏覽窗口中有選擇地瀏覽記錄①菜單:打開瀏覽窗口,選擇“表/屬性”菜單命令,在“工作區(qū)屬性”對話框的“數(shù)據過濾器”框中輸入篩選條件,可以只顯示滿足篩選條件的記錄。刪除篩選表達式,可恢復顯示所有記錄在“工作區(qū)屬性”對話框中,選擇“字段篩選指定的字段”選項,按“字段篩選”按鈕,在“字段選擇器”對話框中選擇要顯示內容的字段;選擇“工作區(qū)中的所有字段”選項,可取消對字段訪問的限制,恢復顯示所有字段②命令設置數(shù)據過濾器:SETFILTERTO[<條件表達式>]設置字段過濾器:SETFIELDSTOALL|<字段名表>3.4.1數(shù)據表的瀏覽____3.瀏覽與顯示記錄
【例3.10】用命令方式瀏覽“學生”表中所有女生的記錄SETFILTERTO性別=‘女’BROWSE【例3.11】取消【例3.10】中的記錄篩選,瀏覽所有學生的記錄SETFILTERTOBROWSE【例3.12】用命令方式瀏覽“學生”表中的學號、姓名、系別和貸款否SETFIELDSTO學號,姓名,系別,貸款否BROWSE【例3.13】取消【例3.12】對字段的限制,瀏覽“學生”表中所有字段SETFIELDSTOALLBROWSEUSE3.4.1數(shù)據表的瀏覽____3.瀏覽與顯示記錄⑶顯示記錄(主窗口)命令:LIST|DISPLAY[<范圍>]
[FIELDS<字段名表>][WHILE<條件>][FOR<條件>]“FIELDS<字段名表>”可以用<表達式表>代替【例3.14】顯示“學生”表中所有女生的學號、姓名和所在系的信息:USEE:\VFP6\DATA\學生.DBF&&打開學生表LISTFIELDS學號,姓名,系別FOR性別=”女”語句無WHILE有WHILE無FOR有FORDISPLAYDELETERECALLREPLACENEXT1ALLREST3.4.1數(shù)據表的瀏覽____應用示例1.顯示所有男生的姓名與在2007年的年齡
2.顯示所有姓“張”同學的學號、姓名和系別
3.顯示所有姓名中含有“林”字同學的學號、姓名和系別
4.顯示所有在本月過生日同學的姓名和出生日期
5.分頁顯示所有同學的信息
6.顯示當前記錄信息7.顯示學號的第4位為3,并且在10月份出生的學生的信息LIST姓名,2007-YEAR(出生日期)FOR性別=‘男’LIST學號,姓名,系別FOR姓名=[張]$$LEFT(姓名,2)=[張]LISTLIST學號,姓名,系別FORAT(“林”,姓名)#0$$“林”$姓名LISTFIELDS姓名,出生日期FORMONTH(出生日期)=MONTH(DATE())DISPLAYALLDISPALY3.4.2記錄的定位____1.記錄指針記錄指針存放的是記錄號。被記錄指針指向的記錄稱為“當前記錄”
向表中錄入數(shù)據時,系統(tǒng)會按照錄入次序為記錄加上記錄號
數(shù)據表剛打開時,記錄指針總是指向首記錄通過移動記錄指針可以指定當前要操作的記錄文件起始標識(BOF)首記錄(TOP)第2條記錄………記錄指針→第i條記錄………第n-1條記錄尾記錄(Bottom)文件結束標識(EOF)3.4.2記錄的定位____2.移動記錄指針⑴菜單:打開瀏覽窗口,選擇“表/轉到記錄”菜單命令⑵命令①絕對移動:[GO[TO]]<記錄號>|TOP|BOTTOM功能:將記錄指針定位在指定記錄號的記錄上
TOP表示第一條記錄,BOTTOM表示最后一條記錄②相對移動:SKIP[+|-][<算術表達式>]功能:將記錄指針從當前位置向前或向后移動若干條記錄位置③條件定位:LOCATE[<范圍>]FOR<條件>功能:查找滿足條件的第一條記錄
“FOR<條件>”是必須的;使用CONTINUE命令可繼續(xù)查找下一條滿足條件的記錄3.4.2記錄的定位
【例3.15】用命令方式定位并顯示“學生”表的指定記錄USEE:\VFP6\DATA\學生GOTOPDISPLAYGO6DISPLAYGOBOTTOMDISPLAY【例3.16】使用SKIP命令移動“學生”表的記錄指針GO2SKIP5DISPLAYSKIP–3DISPLAY3.4.2記錄的定位
【練習】用命令方式顯示“學生”表倒數(shù)第5條記錄信息GOTOBOTTOMSKIP-4DISPLAY【例3.17】將記錄指針定位在學生表中第一條性別為“男”的記錄上LOCATEFOR性別=”男”?FOUND()DISPLAY CONTINUEDISPLAY3.5.1修改表結構在表設計器中可以修改表結構1.項目管理器:選定要修改的表,按“修改”按鈕2.菜單:選擇“文件/打開”菜單命令,或“顯示/表設計器”菜單命令3.命令:MODIFYSTRUCTURE
修改字段屬性后,VFP將按新的屬性改寫整個.DBF文件,可能造成數(shù)據丟失3.5.2添加記錄____1.在瀏覽窗口中追加記錄⑴菜單:打開瀏覽窗口,選擇“顯示/追加方式”菜單命令,可以在原有記錄的后面追加多條新記錄選擇“表/追加新記錄”菜單命令,每次只能添加一條新記錄⑵命令:APPEND[BLANK]
BLANK表示空記錄3.5.2添加記錄____2.插入記錄命令:INSERT[BLANK][BEFORE]功能:在數(shù)據表的當前記錄之前或之后插入一條記錄BEFORE表示“之前”3.5.2添加記錄____3.從其它文件中追加記錄⑴菜單:打開瀏覽窗口,選擇“表/追加記錄”菜單命令⑵命令:APPENDFROM<源表文件名>[FIELDS<字段名表>][FOR<條件>]功能:將滿足條件的記錄按指定的字段從源表文件中追加到當前數(shù)據表的末尾例如,將“課程”表中的相應數(shù)據追加到“課程安排”表中:USEE:\VFP6\DATA\課程安排APPENDFROME:\VFP6\DATA\課程.DBFFIELDS課程號,課程3.5.3編輯記錄命令:EDIT|CHANGE[<范圍>][FIELDS<字段名表>][FOR<條件>]功能:修改當前表給定范圍內,滿足條件記錄的制定字段值3.5.3編輯記錄____1.在瀏覽窗口中編輯記錄⑴項目管理器:選定表,按“瀏覽”按鈕,打開瀏覽窗口,直接修改字段值。關閉瀏覽窗口,所做的修改將自動保存在表文件中
備注型字段或通用型字段內容,可以雙擊相應的字段標志(“Memo”或“Gen”),打開編輯窗口進行編輯或修改⑵命令:BROWSE[FIELDS<字段名表>][FREEZE<字段名>][NOAPPEND][NOMODIFY][FOR<條件>]FREEZE表示凍結在指定字段NOAPPEND表示禁止追加NOMODIFY表示禁止修改3.5.3編輯記錄____2.批量修改記錄對一批記錄中的若干字段值進行有規(guī)律的修改⑴菜單:打開數(shù)據表,選擇“表/替換字段”菜單命令,在“替換字段”對話框中設置⑵命令:REPLACE[<字段1>WITH<表達式1>[ADDITIVE][,<字段2>WITH<表達式2>[ADDITIVE]…[<范圍>][FOR<條件>][WHILE<條件>]功能:對表中指定范圍內的滿足條件的記錄進行批量修改
【例3.21】給“學生”表管理系的每個學生減去15.5元助學金USEE:\VFP6\DATA\學生REPLACEALL助學金WITH助學金-15.5FOR系別=”管理”3.5.4刪除記錄1.邏輯刪除:給記錄加刪除標記⑴鼠標操作:在瀏覽窗口中,單擊左側白色方框使之變黑⑵菜單:選擇“表/刪除記錄”菜單命令⑶命令:DELETE[<范圍>][FOR<條件>]2.恢復邏輯刪除:取消刪除標記⑴鼠標操作:單擊邏輯刪除標記,取消黑色方框⑵菜單:選擇“表/恢復記錄”菜單命令⑶命令:RECALL[<范圍>][FOR<條件>]3.物理刪除:從磁盤上刪除記錄,不可恢復⑴菜單:選擇“表/徹底刪除”菜單命令⑵命令:PACK(刪除帶有刪除標記的記錄)ZAP(一步、全部清除表中記錄,僅保留表結構)RECALLDELETEPACKZAP記錄物理刪除邏輯刪除3.5記錄刪除____應用示例【例3.23】邏輯刪除“學生”表1983年以前出生的學生,再將其恢復DELETEFORYEAR(出生日期)<1983LIST姓名,性別,出生日期,系別RECALLALL【例3.22、24】邏輯刪除“學生”表最后一條記錄,再將其物理刪除GOBOTTOMDELETEPACKLIST姓名,性別,系別【例3.25】刪除“課程安排”表中的所有記錄?RECCOUNT()ZAP?RECCOUNT()3.5記錄編輯____應用練習
1.在第三個記錄之后插入一條新記錄
2.對從當前記錄開始一直到最后一條記錄的籍貫和高等數(shù)學成績進行修改3.將所有學生的獎學金上調5%,再加10元
4.邏輯刪除第一個記錄
5.恢復第7個記錄之前的3條記錄中被邏輯刪除了的記錄
6.物理刪除所有被邏輯刪除的記錄7.邏輯刪除最后5條記錄中姓“王”的同學GO3INSERTEDITRESTFTELDS籍貫,高等數(shù)學REPLACE獎學金WITH獎學金*1.05+10DELETERECORD1GO7SKIP-3RECALLNEXT3PACKGOBOTTOMSKIP-4DELETERESTFOR姓名=‘王’3.5.5復制數(shù)據表____1.數(shù)據表文件的復制1.數(shù)據表文件的復制⑴菜單:打開表文件,選擇“文件/導出”菜單命令,顯示“導出”對話框⑵命令:COPYTO<新表文件>[<范圍>][FIELDS<字段名表>]
[FOR<條件>][WHILE<條件>]2.數(shù)據表結構的復制命令:COPYSTRUCTURETO<新表文件>[FIELDS<字段名表>]3.5.5復制數(shù)據表____3.數(shù)據表文件的更名在項目管理器中選擇要重命名表的“快捷菜單/重命名”命令,在“重命名文件”對話框中輸入新的文件名3.5.6數(shù)據表與數(shù)組之間的數(shù)據交換1.將表的當前記錄復制到數(shù)組命令:SCATTER[FIELDS<字段名表>][MEMO]TO<數(shù)組名>|MEMVAR功能:將數(shù)據表的當前記錄按字段順序復制到數(shù)組或內存變量MEMO表示包括備注型字段的內容;MEMVAR傳遞到一組內存變量中例如,USEE:\VFP6\DATA\學生*將第1條記錄的姓名、性別和系別3個字段復制到數(shù)組AA中SCATTERFIELDS姓名,性別,系別TOAAGO5*將第5條記錄復制到數(shù)組BB中,包括備注型字段的內容SCATTERTOBBMEMO3.5.6數(shù)據表與數(shù)組之間的數(shù)據交換2.將數(shù)組復制到表的當前記錄命令:GATHERFROM<數(shù)組名>|MEMVAR[FIELDS<字段名表>][MEMO]功能:將數(shù)組元素或同名內存變量的值順序復制到當前記錄的指定字段中例如:USEE:\VFP6\DATA\學生*在表的末尾增加一條空記錄APPENDBLANK*將數(shù)組AA中的數(shù)據復制到當前的空記錄中GATHERFROMAAFIELDS姓名,性別,系別3.6.1數(shù)據表排序
排序是把數(shù)據表中的記錄按照某個字段值的大小重新排列,作為排序依據的字段稱為“關鍵字”按照關鍵字的值從小到大的排序稱為升序,從大到小的排序稱為降序排序后生成一個新的數(shù)據表文件,其結構和數(shù)據可以與源文件完全相同,也可以取自源文件的一部分字段命令:SORTTO<文件名>[<范圍>][FIELDS<字段名表>][FOR<條件>]ON<字段名1>[/A][/D][/C][,<字段名2>[/A][/D][/C]…][ASCENDING|DESCENDING]/A表示升序,/D表示降序,/C表示字母不分大小寫。默認為升序原數(shù)據表(無序)排序結果數(shù)據表(有序)排序3.6.1數(shù)據表排序
【例3.30】對“學生”表中所有貸款的學生按“系別”的升序排序,排序后的新表文件名為“貸款學生”:USEE:\VFP6\DATA\學生SORTTO貸款學生ON系別FOR貸款否
【例3.31】將“學生”表按“系別”升序進行排序,系別相同者,按“學號”降序進行排序,排序后的新表文件名為“各系學生”:USEE:\VFP6\DATA\學生SORTTO各系學生ON系別,學號/D
【練習】分別顯示所有學生中總分為最高和最低同學的姓名和各門課程的成績SORTTOPXON總分/DUSEPXDISPLAY姓名,高等數(shù)學GOBOTTOMDISPLAY姓名,高等數(shù)學3.6.2數(shù)據表索引____1.基本概念⑴索引是由指向表記錄的指針構成的文件,這些指針邏輯上按照索引關鍵字的值進行排序索引文件和表文件分別存儲,并且不改變表中記錄的物理順序原數(shù)據表(無序)索引文件(有序)索引排序索引結果文件表文件索引文件排列依據多個字段一個表達式排列順序各字段分別統(tǒng)一順序排序范圍指定范圍指定條件.DBF.IDX#…語文…#語文1…77…1922…63…2873…92…3774…43…4665…87…5636…66…6433.6.2數(shù)據表索引____1.基本概念⑵索引的類型(從組織方式分類)索引類型描述關鍵字數(shù)目限制獨立索引.IDX文件名由用戶確定,必須明確打開單關鍵字表達式100個字符以內結構復合索引.CDX文件名與表文件名相同,隨表自動打開多關鍵字表達式,稱為標識240個字符以內非結構復合索引文件名由用戶確定,隨表自動打開3.6.2數(shù)據表索引____1.基本概念⑶索引關鍵字索引關鍵字是指建立索引用的字段或字段表達式,可以是表中的單個字段,也可以是幾個字段組成的表達式
索引表達式通常用字符串運算符“+”將幾個字段連接起來。若組成表達式的字段具有不同類型時,則必須使用函數(shù)對字段進行類型轉換,使其具有相同的數(shù)據類型。一般多字段排列,都將相應的字段轉換成C型表達式
例如,STR()函數(shù)可將N型數(shù)據轉換為C型數(shù)據,DTOC()函數(shù)可以把D型數(shù)據轉換為C型數(shù)據3.6.2數(shù)據表索引____1.基本概念⑷索引關鍵字的類型(按功能分類)索引類型關鍵字重復值說明創(chuàng)建修改命令索引個數(shù)主索引不允許僅適用數(shù)據庫表,可用于在永久關系中建立參照完整性CREATETABLEALTERTABLE僅1個候選索引可用作主關鍵字,可用于在永久關系中建立參照完整性INDEXCREATETABLEALTERTABLE允許多個惟一索引允許,但輸出無重復值為與以前版本兼容而設置INDEX普通索引允許可作為一對多永久關系中的“多方”3.6.2數(shù)據表索引____2.建立索引◆建立獨立索引⑴利用表設計器:選擇“索引”選項卡⑵命令:INDEXON<索引關鍵字表達式>
TO<索引文件名>[UNIQUE|CANDIDATE][ASCENDING|DESCENDING][FOR<條件>]
UNIQUE表示惟一索引;CANDIDATE表示候選索引;“無”表示普通索引
ASCENDING表示升序(默認),DESCENDING表示降序例如,為“學生”表按姓名和出生日期建立獨立索引文件SY1USEE:\VFP6\DATA\學生INDEXON姓名+DTOC(出生日期)TOSY13.6.2數(shù)據表索引____2.建立索引⑶獨立索引文件的打開
與表文件同時打開:USE<表文件名>INDEX<索引文件名>
打開表文件后再打開:SETINDEXTO<索引文件名>⑷獨立索引文件的關閉
與表文件同時關閉:USE
單獨先關閉:SETINDEXTO.DBF.IDX#…語文…#語文1…77…1922…63…2873…92…3774…43…4665…87…5636…66…6433.6.2數(shù)據表索引____2.建立索引◆建立復合索引⑴利用表設計器:選擇“索引”選項卡⑵命令:INDEXON<索引關鍵字表達式>TAG<索引標識名>[UNIQUE|CANDIDATE][ASCENDING|DESCENDING][FOR<條件>]
UNIQUE表示惟一索引;CANDIDATE表示候選索引;“無”表示普通索引
ASCENDING表示升序(默認),DESCENDING表示降序3.6.2數(shù)據表索引____2.建立索引
【例3.32】為“學生”表建立結構復合索引,包含學號(候選索引)、性別(普通索引)、系別與性別(普通索引)、系別與出生日期(普通索引)4個索引項USEE:\VFP6\DATA\學生INDEXON學號TAG學號CANDIDATEINDEXON性別TAG性別INDEXON系別+性別TAG系別_性別INDEXON系別+DTOC(出生日期)TAG系別_生日USE3.6.2數(shù)據表索引____3.按索引順序瀏覽記錄一個復合索引文件中可以建立多個索引項,每一項代表了處理記錄的一種邏輯順序。使用索引之前,應先指定將要使用的索引項
⑴菜單:打開瀏覽窗口,選擇“表/屬性”菜單命令,在“工作區(qū)屬性”對話框的“索引順序”框中選擇一個索引項,瀏覽窗口中的記錄就會按照該索引順序排列
⑵命令:SETORDERTO[TAG<索引標識名>]3.6.2數(shù)據表索引____3.按索引順序瀏覽記錄
【例3.33】用命令方式分別將“性別”和“系別_性別”索引項設置為當前索引,并顯示“學生”表的記錄,最后取消索引CLEARUSEE:\VFP6\DATA\學生SETORDERTOTAG性別DISPLAYALLSETORDERTOTAG系別_性別DISPLAYALLSETORDERTOTAGDISPLAYALL3.6.2數(shù)據表索引____應用示例1.按總分和高等數(shù)學成績建立索引文件SY1.IDX
2.對XJK.DBF文件按姓名進行索引(索引文件名為XJK.IDX),并分別用SEEK和FIND命令檢索顯示第一個姓“李”的同學的信息
3.對XJK.DBF文件建立以高等數(shù)學成績降序排列的結構復合索引文件SY2.CDX
4.對XJK.DBF文件,其記錄以高等數(shù)學成績升序排列,高等數(shù)學成績相同時則按學號升序排列,建立結構復合索引文件SY3.CDX
5.建立一數(shù)據庫文件XJK2.DBF,其結構中包含有學號、系別、專業(yè)三個字段,并輸入一些記錄值,然后將XJK.DBF和XJK2.DBF連接成一個數(shù)據庫ZH.DBF文件
6.將上題的XJK2文件按學號建立索引(索引標記為SNO),以學號為關聯(lián)表達式,將XJK和XJK2建立關聯(lián)并顯示3.6.3數(shù)據表查詢數(shù)據表建立索引后,就可以使用FIND、SEEK等查詢命令,快速定位記錄,提高數(shù)據庫應用系統(tǒng)的運行效率1.FIND命令:FIND<字符串>|<數(shù)值>2.SEEK命令:SEEK<表達式>
只有對已建立過索引的數(shù)據表才能使用這兩條命令
索引文件的關鍵字必須是要查找的字段命令執(zhí)行后將使記錄指針指向所匹配的第一條記錄,可以使用測試函數(shù)FOUND()判斷檢索成功。檢索成功時,F(xiàn)OUND()返回.T.,EOF()返回.F.,RECNO()返回對應記錄號;否則,F(xiàn)OUND()返回.F.,EOF()返回.T.,RECNO()返回末記錄號+1若要繼續(xù)查找所匹配的下一條記錄,可以使用SKIP命令3.6.3數(shù)據表查詢
【例3.34】對“學生”表按“學號”進行索引檢索USEE:\VFP6\DATA\學生SETORDERTOTAG學號&&將“學號”索引項設置為當前索引FIND01020215&&或SEEK“01020215”【例3.35】對“學生”表按“性別”及“系別_性別”進行索引檢索USEE:\VFP6\DATA\學生SETORDERTO性別FIND女 &&或SEEK“女”DISPLAYSETORDERTOTAG系別_性別CZ=“計算機”+“男”SEEKCZ&&或FIND&CZSKIP&&繼續(xù)查找下一個匹配的記錄3.6.4數(shù)據表統(tǒng)計與匯總____1.數(shù)據表的統(tǒng)計⑴計數(shù)(COUNT)COUNT[<范圍>][FOR<條件>][WHILE<條件>][TO<內存變量名>]
【例3.36】統(tǒng)計“學生”表中總人數(shù)及沒有貸款學生的人數(shù)USEE:\VFP6\DATA\學生COUNTTOZRS?“學生總人數(shù)為:”,ZRSCOUNTFOR!貸款否TOWDKS?“沒有貸款的學生人數(shù)為:”+STR(WDKS,3)【練習】統(tǒng)計“學生”表中沒有貸款學生在總人數(shù)中的百分比?“沒有貸款學生在總人數(shù)中的百分比為:”,WDKS/ZRS*100,“%”3.6.4數(shù)據表統(tǒng)計與匯總____1.數(shù)據表的統(tǒng)計⑵求和(SUM)SUM<算術表達式表>[<范圍>][FOR<條件>][WHILE<條件>][TO<內存變量名表>|ARRAY<數(shù)組名>]
【例3.37】統(tǒng)計“成績”表中學號為“01020215”各門課程的總成績USEE:\VFP6\DATA\成績SUM成績FOR學號=“01020215”3.6.4數(shù)據表統(tǒng)計與匯總____1.數(shù)據表的統(tǒng)計⑶求平均值(AVERAGE)AVERAGE<算術表達式表>[<范圍>][FOR<條件>][WHILE<條件>][TO<內存變量名表>|ARRAY<數(shù)組名>]【例3.37】統(tǒng)計“成績”表中學號為“01020215”各門課程的總成績USEE:\VFP6\DATA\成績AVERAGE成績FOR學號=“01020215”USEE:\VFP6\DATA\成績AVERAGE成績TOZFCOUNTFOR成績>ZF【練習】統(tǒng)計成績大于總平均成績的成績數(shù)3.6.4數(shù)據表統(tǒng)計與匯總____2.數(shù)據表的分類匯總對數(shù)據表中的數(shù)值型字段,按照排序或索引關鍵字值的不同分類,然后各組分別求和命令:TOTALON<匯總關鍵字>TO<表文件名>
數(shù)據表必須事先按“匯總關鍵字”排序或索引
【例3.39】求每個學生各門課程的總成績USEE:\VFP6\DATA\成績INDEXON學號TAG學號TOTALON學號TOE:\VFP6\DATA\成績匯總USEE:\VFP6\DATA\成績匯總LISTUSE3.7建立數(shù)據字典數(shù)據庫文件可以作為一個數(shù)據字典來存儲和管理有關記錄和字段的規(guī)則、缺省值、觸發(fā)器、表間關系等數(shù)據庫表是數(shù)據庫的一部分,具有自由表所沒有的一些屬性,在“表設計器”下部可以設置這些屬性數(shù)據庫表所特有的屬性3.7.1設置表的字段屬性1.輸入掩碼:輸入掩碼是指定義字段中的值必須遵守的標點、空格和其他格式要求,以限制或控制用戶輸入的數(shù)據格式,屏蔽非法輸入,從而減少人為的數(shù)據輸入錯誤,保證輸入的字段數(shù)據具有統(tǒng)一的風格,提高輸入的效率2.格式:格式實質上就是一種掩碼,它決定了字段在瀏覽窗口、表單、報表中的顯示樣式掩碼含義掩碼含義!小寫字母轉換為大寫D使用系統(tǒng)日期格式#輸入數(shù)字、空格和正負號L在數(shù)值前顯示填充的前導零,分隔小數(shù)點左邊的數(shù)字串N只允許輸入字母和數(shù)字.規(guī)定小數(shù)點的位置T禁止輸入字段的前導空格和結尾空格字符9允許數(shù)字和正負號X允許輸入任何字符A使用系統(tǒng)日期Y只允許輸入邏輯字符3.7.1設置表的字段屬性3.標題:字段標題將作為該字段在瀏覽窗口中的列標題,以及表單表格中的默認標題名稱3.7.1設置表的字段屬性4.字段注釋:為字段添加注釋,使表更容易被理解此外,還可以在“表設計器”的“表”選項卡中“表注釋”框為整個數(shù)據表添加注釋3.7.2設置表的有效性規(guī)則1.字段級規(guī)則將用戶輸入的數(shù)據與所定義的規(guī)則表達式進行比較,如果輸入的值不滿足規(guī)則要求,系統(tǒng)即拒絕該值,從而控制輸入到字段中的數(shù)據類型2.默認值在瀏覽窗口、表單或以編程方式輸入數(shù)據時,VFP將自動為某個字段填入默認值,直到輸入新值默認值可以是任何有效的表達式,但表達式的返回值必須和該字段的數(shù)據類型一致3.7.2設置表的有效性規(guī)則3.記錄級規(guī)則可以控制用戶輸入到記錄中的信息類型,檢驗輸入的整條記錄是否符合要求。字段級有效性規(guī)則只對應一個字段,記錄級有效性規(guī)則通常用來比較同一輯錄中的兩個以上字段值,以確保它們遵守在數(shù)據庫中建立的有效性規(guī)則。記錄的有效性規(guī)則通常在輸入或修改記錄時被激活,在刪除記錄時一般不起作用設置是在“表設計器”的“表”選項卡的“記錄有效性”框中完成3.7.3設置觸發(fā)器觸發(fā)器是指對記錄進行輸入、刪除、更新等操作時,系統(tǒng)自動啟動的一個程序,用來完成指定的任務⑴插入觸發(fā)器是在表中插入記錄時所觸發(fā)的檢測程序,該程序可以是表達式或自定義函數(shù)。檢測結果為真時,接受插入的記錄⑵更新觸發(fā)器是在表中修改記錄后按回車鍵時所觸發(fā)的檢測程序。檢測結果為真時,保存修改后的記錄;否則,不保存修改的結果,同時還原修改之前的記錄值⑶刪除觸發(fā)器是在表中刪除記錄時所激發(fā)的檢測程序。檢測結果為真時,該記錄可以被刪除;否則,禁止刪除該記錄3.7.4創(chuàng)建永久關系永久關系是數(shù)據庫表之間的關系,存儲在數(shù)據庫文件中建立關系的兩個表通常具有公共字段或語義相關的字段,其中包含主關鍵字段的表稱為父表,包含外部關鍵字段的表稱為子表1.建立關系:對主關鍵字段和外部關鍵字段使用相同的索引表達式分別建立索引;然后打開“數(shù)據庫設計器”,將父表的索引拖到子表相匹配的索引上(兩表之間顯示一條關系線)2.編輯關系:選擇關系線快捷菜單的“編輯關系”命令3.刪除關系:選擇關系線快捷菜單的“刪除關系”命令3.7.5設置參照完整性
參照完整性是指建立一組規(guī)則,當用戶插入、更新或刪除一個數(shù)據表中的記錄時,通過參照引用另一個與之有關系的數(shù)據表中的記錄,來檢查對當前表的數(shù)據操作是否正確建立了關系的兩個數(shù)據庫表,通過實施參照完整性規(guī)則,可以確保:當父表中沒有關聯(lián)記錄時,記錄不得添加到子表中;當因改變主表的值而導致子表中出現(xiàn)孤立記錄時,主表的值不能被改變;當主表記錄在子表中有匹配記錄時,該主表記錄不能被刪除設置方法:打開數(shù)據庫設計器,選擇“數(shù)據庫/清理數(shù)據庫”菜單命令,再選擇“數(shù)據庫/編輯參照完整性”菜單命令,在顯示的“參照完整性生成器”對話框中分別定義更新規(guī)則、刪除規(guī)則和插入規(guī)則3.8.1工作區(qū)的選擇____1.工作區(qū)VFP允許在32767個工作區(qū)中打開和操作數(shù)據表。要同時使用多個數(shù)據表,必須在不同工作區(qū)中分別打開每個工作區(qū)都有一個編號(工作區(qū)號),用1、2、3等數(shù)字表示,對1~10號工作區(qū),還可以用A~J字母表示
用戶在某一時刻只能在一個工作區(qū)上(即當前工作區(qū))操作
工作區(qū)中的記錄指針彼此獨立,分別指向本工作區(qū)數(shù)據表的當前記錄。通常,在一個工作區(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版文具采購合同3篇
- 專用木結構工程承包合同書2024年版版B版
- 專業(yè)橋架施工包工協(xié)議范例(2024版)版B版
- 2025年4S店汽車銷售及二手車置換服務合同范本3篇
- 2024跨國技術轉讓與合作合同
- 專業(yè)項目建議書編寫委托協(xié)議簡化版版B版
- 2025年度科研場地租賃合同終止及設備回收協(xié)議3篇
- 2025年度老舊小區(qū)墻體拆除及改造工程勞務分包合同范本4篇
- 2025年度酒店會議室租賃協(xié)議書(含全方位服務套餐)
- 二零二五年度食堂食堂食堂食堂員工餐廳食品安全監(jiān)管合同
- 自來水質量提升技術方案
- 金色簡約蛇年年終總結匯報模板
- 農用地土壤環(huán)境質量類別劃分技術指南(試行)(環(huán)辦土壤2017第97號)
- 反向開票政策解讀課件
- 工程周工作計劃
- 房地產銷售任務及激勵制度
- 六年級語文下冊14文言文二則《學弈》課件
- 2024年內蒙古中考語文試卷五套合卷附答案
- 并購指南(如何發(fā)現(xiàn)好公司)
- 垃圾分類亭合同協(xié)議書
- 物權轉移協(xié)議
評論
0/150
提交評論