VFP課件4-VisualFoxPro數(shù)據(jù)庫及其操作_第1頁
VFP課件4-VisualFoxPro數(shù)據(jù)庫及其操作_第2頁
VFP課件4-VisualFoxPro數(shù)據(jù)庫及其操作_第3頁
VFP課件4-VisualFoxPro數(shù)據(jù)庫及其操作_第4頁
VFP課件4-VisualFoxPro數(shù)據(jù)庫及其操作_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章VisualFoxPro數(shù)據(jù)庫及其操作4.1.1VisualFoxPro的數(shù)據(jù)庫數(shù)據(jù)庫文件擴展名為.dbc一個數(shù)據(jù)庫可以包含一個或多個擴展名為.dbf的表建立一個數(shù)據(jù)庫文件后(擴展名為.dbc),系統(tǒng)會自動生成一個數(shù)據(jù)庫備注文件(擴展名為.dct)和一個數(shù)據(jù)庫索引文件(擴展名為.dcx)4.1.2建立數(shù)據(jù)庫通過項目管理器創(chuàng)建通過菜單創(chuàng)建通過命令窗口創(chuàng)建:

CREATEDATABASE[<數(shù)據(jù)庫名>│?]4.1.3打開數(shù)據(jù)庫通過項目管理器通過菜單通過命令窗口:

OPENDATABASE[<數(shù)據(jù)庫名>│?][EXCLUSIVE│SHARED][NOUPDATE]Exclusive:獨占性打開

Shared:共享性打開

注:實際上,只有在建立和修改表的關(guān)系時,才必須打開數(shù)據(jù)庫。這正是VFP的安全機制完善性。VisualFoxbase可以在同時打開多個數(shù)據(jù)庫,但只有一個是當前數(shù)據(jù)庫。用戶所有操作都是針對當前數(shù)據(jù)庫的。指定當前數(shù)據(jù)庫的命令:SETDATABASETO[<數(shù)據(jù)庫名>]4.1.4修改數(shù)據(jù)庫通過項目管理器打開數(shù)據(jù)庫后修改通過命令窗口:MODIFYDATABASE[<數(shù)據(jù)庫名>│?][NOWAIT│NOEDIT]4.1.5關(guān)閉數(shù)據(jù)庫通過項目管理器通過命令窗口:CLOSEDATABASECLOSEALL注:關(guān)閉數(shù)據(jù)庫設(shè)計器,并沒有把數(shù)據(jù)庫關(guān)閉。4.1.6刪除數(shù)據(jù)庫通過項目管理器通過命令窗口:DELETEDATABASE<數(shù)據(jù)庫名>│?[DELETETABLES][RECYCLE]DELETETABLES:徹底刪除RECYCLE:刪除到回收站4.2表表是處理數(shù)據(jù)和建立關(guān)系數(shù)據(jù)庫的基本單元,由行和列組成。表格中的每一行稱為一個記錄,每一列稱為一個字段。VisualFoxPro的表具有兩種狀態(tài)數(shù)據(jù)庫表:與數(shù)據(jù)庫相關(guān)聯(lián)的表自由表:與數(shù)據(jù)庫無關(guān)聯(lián)的表通過項目管理器可以實現(xiàn)數(shù)據(jù)庫表和自由表之間的轉(zhuǎn)換。自由表字段名最多10個字符,數(shù)據(jù)庫表字段名最多128個字符。數(shù)據(jù)庫表比自由表擁有更多功能。例:數(shù)據(jù)庫與表的關(guān)系數(shù)據(jù)庫學生選課成績數(shù)據(jù)庫.DBC表學生.DBF表課程.DBF表選課成績.DBF表班級.DBF表教師.DBF例:學生表姓名性別學號學部專業(yè)班級劉濤男200515220506信息科學與技術(shù)部自動化05q電6范斌男200515221612信息科學與技術(shù)部自動化05q電4王鐵志男200515220405信息科學與技術(shù)部自動化05q電5唐燁平男200515221621信息科學與技術(shù)部電子信息工程05q電信1趙欣男200515220517信息科學與技術(shù)部通信工程05q通信2劉文晰女200515280316商學人文部國際經(jīng)濟與貿(mào)易05q國貿(mào)3課程表課程號課程名稱教師號學分類別608056高分子材料成型加工原理900112必修608010結(jié)構(gòu)化學36853必修608029無機材料科學基礎(chǔ)-1405634必修608036流體力學801582限選608018復(fù)合材料768212限選608003無機化學21012限選608003無機化學40981.5任選608014電化學原理30071.5任選607017發(fā)酵工程設(shè)備10082任選選課成績表學號課程號成績2005152205066080565620051522161260801085.520051522040560802950200515221621608036242005152205176080188820051528031660800366200515070311608003702005152602076080145620051528030260701785.52005150701116080035020051526011160800324200515280104608014882005152805076070176620051528040260802970班級表班級年級學部學制類別05q電62005信息科學與技術(shù)4工科05q電42005信息科學與技術(shù)4工科05q電52005信息科學與技術(shù)4理科05q電信12005信息科學與技術(shù)4工科05q通信22005信息科學與技術(shù)4工科05q國貿(mào)32005商學人文部4工科05q管32005商學人文部4工科05q英22005商學人文部4經(jīng)濟05q國貿(mào)32005商學人文部4管理05q管12005商學人文部4理科05q英12005商學人文部4理科05q國貿(mào)12005商學人文部4理科05q國貿(mào)52005商學人文部4工科05q國貿(mào)42005商學人文部4工科教師表教師號姓名性別技術(shù)職務(wù)90011張志明男講師3685許瑩男講師40563徐研女副教授80158魏軍從男講師76821楊立榮男副教授2101王金鋒男教授4098王麗女講師3007王靜女講師1008田亞紅女講師各表間的關(guān)系4.2.1VFP字段類字段是組成表結(jié)構(gòu)的基本單位,不同字段類型有不同的字段屬性。字段的屬性:包括字段名、數(shù)據(jù)類型、字段寬度、小數(shù)位數(shù)、索引、NULL值等字段名的命名規(guī)則以字母或漢字開頭由字母、漢字、數(shù)字、下劃線組合而成字母大、小寫無區(qū)別,不包含空格自由表的字段名最多由10個字符組成數(shù)據(jù)庫表的字段名支持長名,最多可達128個字符。如果從數(shù)據(jù)庫中移去一個表,那么此表的長字段名將被截短成10個字符。字段基本數(shù)據(jù)類型字段類型代號說明字段寬度字符型C字母、漢字和數(shù)字型文本每個字符為1個字節(jié),最多可有

254個字符貨幣型Y貨幣單位8個字節(jié)日期型D包含有年、月和日的數(shù)據(jù)8個字節(jié)日期時間型T包含有年、月、日、時、分、秒的數(shù)據(jù)8個字節(jié)邏輯型L“真”或“假”的布爾值1個字節(jié)數(shù)值型N整數(shù)或小數(shù)在內(nèi)存中占

8個字節(jié);在表中占1至20個字節(jié)雙精度型B雙精度浮點數(shù)8個字節(jié)浮點型F與數(shù)值型一樣在表中占1至20個字節(jié)整型I不帶小數(shù)點的數(shù)值4個字節(jié)通用型GOLE對象在表中占

4個字節(jié)備注型M不定長度的一段文字在表中占

4個字節(jié)字符型(二進制)C同字符型,但是當代碼頁更改時字符值不變每個字符用1個字節(jié),最多可有

254個字符備注型(二進制)M同備注型,但是當代碼頁更改時備注不變在表中占

4個字節(jié)4.2.2表的建立通過項目管理器創(chuàng)建通過菜單創(chuàng)建通過命令窗口創(chuàng)建

CREATE[<表名>│?]CREATETABLE|dbf<表名>(字段名1字段類型[(字段寬度[,小數(shù)位數(shù)])][,字段名2字段類型[(字段寬度[,小數(shù)位數(shù)])]]……)例:CREATETABLExscj(xhc(8),xmc(6),xbc(2),;

cjn(5,1),ksrqd)4.2.3復(fù)制表及表結(jié)構(gòu)復(fù)制表:COPYTO<表名>復(fù)制表結(jié)構(gòu):COPYSTRUCTURETO<表名>4.3表操作打開表通過項目管理器通過菜單通過命令窗口:USE[<表名>│?]●關(guān)閉表通過菜單通過命令窗口:USE4.3表操作打開瀏覽器通過項目管理器通過菜單通過命令窗口:BROWSE●命令方式瀏覽:LIST4.3.1通過瀏覽器操作表瀏覽操作添加記錄修改記錄刪除記錄4.3.2命令方式操作表添加記錄:APPEND[BLANK]在表尾部添加記錄插入記錄:INSERT[BEFORE][BLANK](對未索引的表有效)刪除記錄:DELETE[FOR<條件表達式>]恢復(fù)記錄:RECALL[FOR<條件表達式>]物理刪除有刪除標記的記錄:PACK物理刪除表中的全部記錄:ZAP修改記錄:REPLACE<字段名1>WITH表達式1,[<字段名2>WITH表達式2]…[FOR<條件表達式>]交互修改記錄:EDIT,CHANGE顯示記錄:LIST┃DISPLAY[<范圍>][FIELDS]<字段名>[FOR<條件1>][TOPRINT┃TOFILE<文件>]

不使用條件時,LIST顯示全部記錄,DISPLAY顯示當前記錄4.3.2命令方式操作表查詢定位直接定位:GO記錄號│TOP│BOTTOM基準定位:SKIPn條件定位:LOCATEFOR<條件表達式>

找到第一條滿足條件的記錄后,可以用CONTINUE繼續(xù)查找下一個滿足條件的記錄。4.4索引記錄的順序:物理順序:即表中記錄在磁盤中的存儲順序。邏輯順序:表打開后被使用時記錄的處理順序。索引是在不改變記錄物理順序的前提下按照索引關(guān)鍵字的順序(升序或降序)排列記錄,從而方便快速查找。4.4.2索引的種類1.按擴展名分類VisualFoxPro支持復(fù)合索引和單索引兩類索引文件。前者擴展名為.CDX,后者擴展名為.IDX。復(fù)合索引文件允許包含多個索引,每個索引都有一個索引標識,代表一種記錄邏輯順序。這種索引總以壓縮形式存儲,以便減少存儲空間。復(fù)合索引文件又分結(jié)構(gòu)復(fù)合索引和非結(jié)構(gòu)復(fù)合索引。主名與表文件名相同的稱為結(jié)構(gòu)復(fù)合索引,它與表文件同步打開與關(guān)閉,主名與表文件名不同的稱為非結(jié)構(gòu)的復(fù)合索引(又稱獨立復(fù)合索引),它不與表文件同步,須使用專用命令打開與關(guān)閉。單索引文件中只有一個索引條目,這種類型是為了與FoxBASE+開發(fā)的應(yīng)用程序兼容而保留的。單一索引和非結(jié)構(gòu)復(fù)合索引都很少使用。2.按功能分主索引:組成主索引關(guān)鍵字的字段或表達式,在表的所有記錄中不能有重復(fù)的值。主索引只適用于數(shù)據(jù)庫表的結(jié)構(gòu)復(fù)合索引中。自由表中不可以建立主索引;數(shù)據(jù)庫中的每個表可以且只能建立一個主索引。候選索引:在指定的關(guān)鍵字段或表達式中不允許有重復(fù)值的索引。在數(shù)據(jù)庫表和自由表中均可為每個表建立多個候選索引。普通索引:也可以決定記錄的處理順序,但是允許字段中出現(xiàn)重復(fù)值。在一個表中可以加入多個普通索引。唯一索引:參加索引的關(guān)鍵字段或表達式在表中可以有重復(fù)值,但在索引對照表中,具有重復(fù)值的記錄僅存儲其中的第一個。在一個表上可以建立多個普通索引、多個唯一索引、多個候選索引,但只能建立一個主索引。通常,主索引用于主關(guān)鍵字字段;候選索引用于那些不作為主關(guān)鍵字但字段值又必須唯一的字段;普通索引用于提高查詢速度;唯一索引用于一些特殊的程序設(shè)計。4.4.3索引文件的建立1.使用表設(shè)計器創(chuàng)建和修改索引利用表設(shè)計器可以為表創(chuàng)建或修改索引,具體步驟如下(以XSB為例):①在項目管理器中選擇“表”中的:XSB,單擊“修改”,打開表設(shè)計器。②在“字段”選項中選擇要建立或修改索引的字段,如XH,單擊“索引”列的組合框,確定升序或降序,本例選擇升序。③打開“索引”選項卡,確定索引類型,本例選擇“主索引”。

2.使用命令創(chuàng)建索引

格式:INDEXON<索引表達式>TO<索引文件名>│TAG<標識名>[OF<索引文件名>][FOR<條件>][ASCENDING/DESCENDING]TO<索引文件名>用來建立單索引文件;TAG<標識名>用來建立結(jié)構(gòu)復(fù)合索引文件;OF<索引文件名>用來建立非結(jié)構(gòu)復(fù)合索引文件;

[ASCENDING/DESCENDING]表示選擇建立“升序”或“降序”索引。【例】打開XSB表,以XM(姓名)、ZY(專業(yè))字段為索引關(guān)鍵字分別建立索引條目XM和ZY,放入結(jié)構(gòu)索引文件XSB.CDX中。解:USEXSBINDEXONXMTAGXMINDEXONZYTAGZY4.4.4索引文件的使用1.打開索引文件索引文件同表文件一樣,必須打開后才能使用。結(jié)構(gòu)索引文件在打開表文件時會隨著表文件自動打開和關(guān)閉。但對于非結(jié)構(gòu)索引必須在使用前通過以下命令打開。SETINDEXTO[<索引文件名>]

2.設(shè)置主控索引(即當前索引)

只能有一個索引條目為主控索引,它確定了表記錄的顯示和訪問順序。主控索引可以使用命令方式進行設(shè)置。格式:SETORDERTO[<索引名>][ASCE|DESC]3.在打開表的同時指定主控索引格式:USE<表名>ORDER<索引名>功能:打開表的同時指定結(jié)構(gòu)索引中的主控索引。4.刪除索引(1)使用命令刪除索引文件格式:DELETETAG<標識名>/<ALL>功能:刪除復(fù)合索引文件的索引標識。說明:若復(fù)合索引文件的所有索引標識都被刪除,則該索引文件也被刪除。(2)使用使用“表設(shè)計器”刪除索引文件在“表設(shè)計器”的“索引”選項卡中選擇欲刪除的索引,單擊“刪除”按鈕即可刪除指定的索引。5.索引查詢格式:SEEK<表達式>功能:在主控索引文件中查找關(guān)鍵字與<表達式>相同的第一條記錄。【例】

已知表XSB中按照出生日期建立索引CSRQ,快速查找出生日期為{09/25/85}的記錄,并顯示。解1:INDEXONCSRQTAGCSRQSEEK{^1985-09-25}&系統(tǒng)狀態(tài)行顯示找到第15條記錄

DISPLAY

【例】

已知表XSB中按照ZY建立索引ZY,快速查找“工業(yè)工程”專業(yè)的同學,并連續(xù)顯示兩條記錄。解:INDEXONZYTAGZYSEEK‘工業(yè)工程’&&系統(tǒng)狀態(tài)行顯示找到第7條記錄

DISPSKIP注意:不能用CONTINUE命令!4.5排序排序就是將表中記錄按某一字段值的大小重新排列,然后復(fù)制產(chǎn)生一個新的表文件。其命令格式如下:格式:SORTTO<新表文件名>ON<字段名1>[/A/D/C],<字段名2>[/A/D/C]…[FOR<條件>][FIELDS<字段名表>][<范圍>]功能:按指定的字段為排序依據(jù),對當前打開的文件中符合條件的范圍內(nèi)的記錄重新排列,生成新表文件。其中/A表示升序,/D表示降序,默認為升序;如果不指定字段列表,則對所有字段復(fù)制?!纠繉SB.DBF按CSRQ(出生日期)降序排序,產(chǎn)生新的表文件為XS.DBF,打開XS文件顯示所有記錄。解:USEXSBSORTTOXSONCSRQ/DUSEXSBROW

由于排序產(chǎn)生的新表與原來的表只是排列順序不同但數(shù)據(jù)完全相同,兩個表都要占據(jù)磁盤空間。因此除特殊情況外,很少使用。

4.6數(shù)據(jù)完整性數(shù)據(jù)的完整性就是指保證數(shù)據(jù)庫中數(shù)據(jù)正確的特性。完整性控制的主要目的在于防止不正確的數(shù)據(jù)進入數(shù)據(jù)庫,在對數(shù)據(jù)庫操作時一般通過3類完整性規(guī)則來保證數(shù)據(jù)庫中數(shù)據(jù)的正確性,這就是“實體完整性”、“域完整性”和“參照完整性”。

4.6.1實體完整性

實體完整性是保證表中記錄唯一的特性,指表中不允許出現(xiàn)重復(fù)的記錄,在VisualFoxPro中我們可以利用主關(guān)鍵字或候選關(guān)鍵字的特性來保證表中不出現(xiàn)重復(fù)的記錄。4.6.2域完整性域完整性是指限制表中字段取值的有效性規(guī)則。例如,在創(chuàng)建表時用戶定義字段的類型、寬度等都屬于域完整性的范疇。除此之外,VisualFoxPro還在表設(shè)計器中提供了“字段有效性”規(guī)則和“顯示”規(guī)則來進一步保證域的完整性。【例】以“XSB”表為例,設(shè)置高考分數(shù)的有效值在0-750分之間,如果輸入的分數(shù)值不在此范圍時,給出出錯信息:“高考分數(shù)輸入錯誤!”

解:在項目管理器中打開XSB的設(shè)計器,如圖7-2所示。選GKFS字段,并且在字段有效性“規(guī)則”的文本輸入框內(nèi)輸入“GKFS>=0.and.KGFS<=750”“信息”的文本輸入框內(nèi)輸入“高考分數(shù)輸入錯誤!”。4.6.3參照完整性

參照完整性是指當插入、更新和刪除一個表中的數(shù)據(jù)時,需要參照引用另一個表中的數(shù)據(jù),借以檢查數(shù)據(jù)操作是否正確。因參照完整性屬于表間操作規(guī)則,且與表的聯(lián)系有關(guān),因此在VisualFoxPro中為了建立參照完整性,必須首先建立表之間的聯(lián)系(或稱為關(guān)系),然后才可以設(shè)置參照完整性規(guī)則。1.建立表之間的聯(lián)系表之間的聯(lián)系可以利用“數(shù)據(jù)庫設(shè)計器”來建立,具體操作步驟如下(以XSB、CJB和KCB為例):(1)在XSB表中以XH字段為索引關(guān)鍵字建立主索引;在KCB表中以KCH字段為索引關(guān)鍵字建立主索引在CJB表中以XH、KCH字段為索引關(guān)鍵字分別建立普通索引(這些索引已經(jīng)建立)。建立主索引的表稱為“父表”,普通關(guān)鍵字的表為子表。(見圖)(2)打開數(shù)據(jù)庫設(shè)計器,用鼠標選中XSB表的主索引(XH)按住不放拖至CJB表的普通索引(XH)上,然后釋放鼠標,即可建立兩表之間的聯(lián)系。建立表之間的聯(lián)系(關(guān)系)2.設(shè)置參照完整性約束(1)在菜單中選擇“數(shù)據(jù)庫”的“清理數(shù)據(jù)庫”,將有刪除標記的記錄徹底刪除。(2)用右鍵單擊表的聯(lián)系線,激活快捷菜單,選擇“編輯參照完整性”,打開參照完整性生成器。三個選擇按鈕:更新規(guī)則:當父表中的關(guān)鍵字作修改時,應(yīng)用哪條規(guī)則。刪除規(guī)則:當父表中的記錄作刪除時,子表應(yīng)用哪條規(guī)則。插入規(guī)則:當子表插入記錄時,應(yīng)用哪條規(guī)則。編輯參照完整性【例】假定在教學管理庫JXK中,按照圖7-4建立了三個表的參照完整性。當在CJB表中插入一條記錄,其中xh或kch是另外兩個表中不存在時,觀察是否能夠存盤。

解:USECJBAPPEND在圖7-5中顯示的編輯窗口輸入一條記錄,其中學號為任意一個XSB中沒有的,其他數(shù)據(jù)任意。關(guān)閉窗口,此時系統(tǒng)顯示一個提示信息:“觸發(fā)器失敗”,并把剛才輸入的數(shù)據(jù)清空。這說明“插入”規(guī)則確定的“限制”起了作用,不允許沒有的學號或課程號的記錄輸入。參照完整性觸發(fā)器:在一個插入、更新或刪除操作之后運行的記錄級事件代碼。不同的事件可以對應(yīng)不同的動作。它們常用于交叉表的完整性。4.7多個表的同時使用工作區(qū)的概念所謂工作區(qū)就是在內(nèi)存中開辟的一塊區(qū)域,用于存放表文件。系統(tǒng)共開設(shè)有32767個工作區(qū),這些工作區(qū)分別用數(shù)字1~32767來標識,稱為工作區(qū)號,前十個工作區(qū)還可以使用字母A~J來標識,稱為工作區(qū)的別名。工作區(qū)還可用在該區(qū)打開的表名(或表的別名)來標識。系統(tǒng)默認的工作區(qū)為1區(qū),用戶可以使用工作區(qū)的選擇命令選擇工作區(qū),當前被選中的工作區(qū)稱為當前工作區(qū)。4.7.1工作區(qū)的選擇格式:SELECT<工作區(qū)號>│<別名>功能:選擇指定的工作區(qū)為當前工作區(qū)。說明:l

每一個工作區(qū)某一時刻僅可以打開一個表文件。l

當使用SELECT0時表示選擇當前未使用的最小工作區(qū)。l

可以使用SELECT()函數(shù)測定當前工作區(qū)號。【例】分別在1,2,3工作區(qū)打開學生表(XSB)、課程表(KCB)、成績表(CJB)三個表,顯示其中的記錄,并選擇當前工作區(qū)為2區(qū)。解:OPENDATABASEJXKSELECT1USEXSBALIASXS &&XS是指定的別名

BROWSESELECT2USEKCBALIASKCBROWSESELECT3USECJBALIASCJBROWSESELECT2&&或使用SELECTB、SELECTKC、SELECTKCB?SELECT() &&此時主屏幕顯示為2??梢酝ㄟ^“窗口”--〉”數(shù)據(jù)工作期“查看。4.7.2使用不同工作區(qū)的表格式:IN工作區(qū)號│表名│表別名如:seek‘04076103’orderxhinxsb如果要在當前工作區(qū)調(diào)用另外一個工作區(qū)的表記錄數(shù)據(jù)時,須使用如下調(diào)用格式:<工作區(qū)別名>.<字段名>或<工作區(qū)別名>-><字段名>其中->為“-”和“>”的組合鍵【例】在第1工作區(qū)中,顯示學生表XSB.DBF中姓名,專業(yè)和成績表CJB.DBF中的課程號及成績。解:SELECT1USEXSBSELECT2

溫馨提示

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

評論

0/150

提交評論