關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)課件_第1頁(yè)
關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)課件_第2頁(yè)
關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)課件_第3頁(yè)
關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)課件_第4頁(yè)
關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)課件_第5頁(yè)
已閱讀5頁(yè),還剩221頁(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)介

關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)VFP江蘇科技大學(xué)經(jīng)濟(jì)管理學(xué)院1/13/20231VisualFoxPro6.0為什么要學(xué)習(xí)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)予人以魚不如予人以漁1/13/20232VisualFoxPro6.0章節(jié)導(dǎo)航1數(shù)據(jù)庫(kù)系統(tǒng)及VFP概述2VFP語(yǔ)言基礎(chǔ)4數(shù)據(jù)庫(kù)的創(chuàng)建和使用5查詢和視圖3表的創(chuàng)建和使用6對(duì)象模型和事件模型7表單8控件10類的創(chuàng)建和應(yīng)用11菜單和工具欄9報(bào)表和標(biāo)簽12建立應(yīng)用程序1/13/20233VisualFoxPro6.0第1章數(shù)據(jù)庫(kù)系統(tǒng)及VisualFoxPro概述1.1VFP的發(fā)展概述及啟動(dòng)1.2數(shù)據(jù)庫(kù)系統(tǒng)的組成1.4主流DBMS產(chǎn)品1.5VisualFoxPro概述1.3數(shù)據(jù)模型1.6項(xiàng)目管理器返回1/13/20234VisualFoxPro6.01.1VFP6.0的發(fā)展概述及啟動(dòng)1、1986年6月推出了FoxBASE+1.0版2、1987年7月推出了FoxBASE+2.0版3、1988年7月推出了FoxBASE+2.1版4、1992年下半年推出了FoxPro2.5版5、1994年下半年推出了FoxPro2.6版6、1995年6月推出了VisualFoxPro3.07、1996年8月推出了VisualFoxPro5.08、1998年9月推出了VisualFoxPro6.0目前已發(fā)展到VisualFoxPro9.0Beta返回1/13/20235VisualFoxPro6.0VisualFoxPro6.0系統(tǒng)啟動(dòng)返回單擊雙擊桌面快捷方式或1/13/20236VisualFoxPro6.01.2數(shù)據(jù)庫(kù)系統(tǒng)的組成(1)..應(yīng)用程序1應(yīng)用程序2應(yīng)用程序n數(shù)據(jù)庫(kù)管理系統(tǒng)操作系統(tǒng)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)系統(tǒng)

返回 數(shù)據(jù)庫(kù)系統(tǒng)的基本組成包括:

數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)管理系統(tǒng) 數(shù)據(jù)庫(kù)管理員1/13/20237VisualFoxPro6.01.2數(shù)據(jù)庫(kù)系統(tǒng)的組成(2)用戶程序A1工作區(qū)用戶程序A2工作區(qū)用戶程序A3工作區(qū)用戶程序A4工作區(qū)用戶程序A5工作區(qū)外部模式A外部模式B模式內(nèi)部模式系統(tǒng)緩沖區(qū)操作系統(tǒng)DBMS數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)管理系統(tǒng)結(jié)構(gòu)

返回1/13/20238VisualFoxPro6.01.3數(shù)據(jù)模型ABCD網(wǎng)狀模型:

ABCDE層次模型:

學(xué)號(hào)姓名民族專業(yè)代號(hào)0140409901張三漢0401010140409902李四漢0401010140409903王五漢0401010140409904趙六回040101關(guān)系模型:

關(guān)鍵字 數(shù)據(jù)模型體現(xiàn)了數(shù)據(jù)的組織形式及數(shù)據(jù)之間的聯(lián)系.返回1/13/20239VisualFoxPro6.01.4主流DBMS產(chǎn)品OracleDB2SybaseMS-SQLServerAccessVisualFoxPro返回1/13/202310VisualFoxPro6.01.5VisualFoxPro概述—集成操作環(huán)境返回菜單欄工具欄主窗口“命令”窗口狀態(tài)欄1/13/202311VisualFoxPro6.01.5VisualFoxPro概述—命令示例*,&&

引導(dǎo)注釋內(nèi)容?,??

在VFP主窗口中顯示表達(dá)式的值CLEAR

清除當(dāng)前VFP主窗口中的信息DIR

在VFP主窗口中顯示文件的目錄MD/RD/CD

創(chuàng)建文件夾/刪除文件夾/改變當(dāng)前工作文件夾COPYFILE/RENAME/DELETEFILE

復(fù)制/更名/刪除文件RUN

調(diào)用外部DOS命令QUIT

關(guān)閉所有文件,并結(jié)束當(dāng)前VFP系統(tǒng)的運(yùn)行USExs

打開名為xs的表文件COUNTALLFOR性別=“女” 統(tǒng)計(jì)xs中女生的人數(shù)USE

關(guān)閉表文件Cj

,將其保存在磁盤上返回1/13/202312VisualFoxPro6.0從當(dāng)前記錄開始,按記錄順序從上向下處理,一旦遇到不滿足條件的記錄,就停止搜索并結(jié)束該命令的執(zhí)行1.5VisualFoxPro概述—一般語(yǔ)法式返回

命令動(dòng)詞;[表達(dá)式表

];[范圍

];[FOR條件

];[WHILE條件

];[TOFILE文件名

/TOPRINTER/TOARRAY;

數(shù)組名

/TO內(nèi)存變量

];[ALL[LIKE/EXCEPT通配符

]];[IN別名

]計(jì)算機(jī)要完成的操作執(zhí)行該命令所操作的結(jié)果參數(shù)只對(duì)滿足條件的記錄進(jìn)行操作操作結(jié)果的輸出去向包括或不包括與通配符相匹配的文件、字段或內(nèi)存變量允許在當(dāng)前工作區(qū)操作指定工作區(qū)ALL/NEXT<n>/RECORD<n>/REST1/13/202313VisualFoxPro6.01.5VisualFoxPro概述—常用文件類型

返回生成的應(yīng)用程序.app

復(fù)合索引

.cdx數(shù)據(jù)庫(kù).dbc.dct.dcx

表.dbf.fpt報(bào)表 .frx.frt

標(biāo)簽.lbx.lbt菜單.mnt.mnx.mpr.mpx

內(nèi)存變量.mem程序.prg.fxp.qpr.qpx

項(xiàng)目.pjt.pjx可視類庫(kù).vcx.vct

表單.scx.sctRN_123-lyx主文件名.DBF分隔符擴(kuò)展名主文件名最長(zhǎng)由10個(gè)字符組成,可以大、小寫字母子混合使用文件命名示例:1/13/202314VisualFoxPro6.01.6項(xiàng)目管理器(1)項(xiàng)目管理器是VFP中處理數(shù)據(jù)和對(duì)象的主要組織工具,其管理信息以項(xiàng)目文件保存,是VFP的控制中心(ControlCenter)。項(xiàng)目管理器的創(chuàng)建方法:1、用【文件】菜單中的【新建】菜單命令。

2、用“常用”工具欄上的“新建”按鈕。

3、在“命令”窗口中利用如下命令:

CREATEPROJECT<FileName|?>項(xiàng)目管理器的打開方法:1、用【文件】菜單中的【打開】菜單命令。

2、用“常用”工具欄上的“打開”按鈕。

3、在“命令”窗口中利用如下命令:

MODIFYPROJECT<FileName|?>返回1/13/202315VisualFoxPro6.0返回1.6項(xiàng)目管理器(2)創(chuàng)建新文件或?qū)ο笤谙鄳?yīng)是設(shè)計(jì)器中打開選定項(xiàng)將已存在且不被當(dāng)前項(xiàng)目所管理的文件添加到項(xiàng)目管理器打開/關(guān)閉指定的數(shù)據(jù)庫(kù)、瀏覽指定的表、運(yùn)行指定的查詢/表單/程序等從項(xiàng)目中移去或刪除選定項(xiàng)連編一個(gè)項(xiàng)目或應(yīng)用程序折疊/展開項(xiàng)目管理器選項(xiàng)卡1/13/202316VisualFoxPro6.0小結(jié)1、VFP從FoxBASE開始發(fā)展大致經(jīng)過(guò)了十一個(gè)階段。2、VFP的使用方法,VFP功能強(qiáng)大,使用簡(jiǎn)單。3、VFP的啟動(dòng)通??梢酝ㄟ^(guò)Windows的開始菜單或桌面快捷方式實(shí)現(xiàn)。4、VFP退出可以通過(guò)在命令窗口中執(zhí)行QUIT、系統(tǒng)菜單的退出菜單項(xiàng)或主窗口的“關(guān)閉”按鈕實(shí)現(xiàn)。5、VFP的文件類型。6、應(yīng)掌握VFP的一些基本概念。7、VFP的命令構(gòu)成。8、可以用菜單方式和命令方式創(chuàng)建和打開項(xiàng)目管理器。返回1/13/202317VisualFoxPro6.02.2數(shù)據(jù)存儲(chǔ)容器2.3運(yùn)算符2.1常用數(shù)據(jù)類型2.4函數(shù)2.5表達(dá)式2.6空值第2章VFP語(yǔ)言基礎(chǔ)2.7程序設(shè)計(jì)基礎(chǔ)返回1/13/202318VisualFoxPro6.01、字符型數(shù)據(jù)(Character,簡(jiǎn)寫為C)2、數(shù)值型數(shù)據(jù)(Numeric,簡(jiǎn)寫為N)3、邏輯型數(shù)據(jù)(Logic,簡(jiǎn)寫為L(zhǎng))4、日期型數(shù)據(jù)(Date,簡(jiǎn)寫為D)5、日期時(shí)間型數(shù)據(jù)(DateTime,簡(jiǎn)寫為T)6、整形數(shù)據(jù)(Integer,簡(jiǎn)寫為I)7、備注型數(shù)據(jù)(Memo,簡(jiǎn)寫為M)8、通用型數(shù)據(jù)(General,簡(jiǎn)寫為G)2.1常用數(shù)據(jù)類型返回1/13/202319VisualFoxPro6.02.2數(shù)據(jù)存儲(chǔ)容器2.2.2常量2.2.3內(nèi)存變量2.2.1名稱命名規(guī)則2.2.4數(shù)組返回1/13/202320VisualFoxPro6.0名稱中只能包含字母、下劃線、數(shù)字符號(hào)和漢字符號(hào)名稱的開頭只能是字母、漢字或下劃線,不能是數(shù)字除自由表的字段名、表的索引標(biāo)識(shí)名至多10個(gè)字符,其余名稱長(zhǎng)度1~128個(gè)字符應(yīng)避免使用系統(tǒng)保留字例:cVar、nVar2、x_2、sum_of_score、nSum_Score、_aver_2x、2_x、num-of-xs、nSum&Score、_aver#gz、use、DO合法非法2.2.1名稱命名規(guī)則返回1/13/202321VisualFoxPro6.0一個(gè)不變的數(shù)值或字符串。常量表達(dá)式中包括常量和操作符,但不包含變量,而且計(jì)算結(jié)果總是常值。VisualFoxPro支持多種類型的常量,如:數(shù)值常量、字符常量、日期常量、邏輯常量、貨幣常量、日期時(shí)間常量等。

2.2.2常量例:3.12E-8、$1000、’8*7—……’、.F.、{08-25-2003}

3.12×10-8返回1/13/202322VisualFoxPro6.02控制變量訪問(wèn)3保存內(nèi)存變量1變量的創(chuàng)建4恢復(fù)內(nèi)存變量2.2.3內(nèi)存變量返回1/13/202323VisualFoxPro6.0 在賦值的同時(shí)完成了內(nèi)存變量的創(chuàng)建,并確定了該變量的數(shù)據(jù)類型以及目前變量的值STORE表達(dá)式

TO內(nèi)存變量名表

例: STORE0TOa,b

將數(shù)值0賦給變量a,b

STORE“張三”TONAME

將字符串“張三”賦給NAME

內(nèi)存變量名

=表達(dá)式

例: A=.T. 將邏輯真值賦給變量A

cSoft=“VFP”

產(chǎn)生一個(gè)字符型變量1變量的創(chuàng)建返回1/13/202324VisualFoxPro6.02控制變量的訪問(wèn)變量只在它的作用域范圍內(nèi)才有效:LOCAL:定義局部變量

訪問(wèn)變量:PRIVATE:定義私有變量

?換行顯示,PUBLIC:定義全局變量

??不換行顯示

AA.prgLOCALaPUBLICb,c……DObb…BB.prgLOCALdPRIVATEb………RETURNa僅在AA.prg中有效,b在全局有效,但在AA.prg和BB.prg中的值不一樣,私有的b在BB.prg及其子程中有用c在全局有效d僅在BB.prg中有效返回1/13/202325VisualFoxPro6.0SAVETOFileName[ALLLIKESkeleton|ALLEXCEPTSkeleton]3保存內(nèi)存變量文件擴(kuò)展名的缺省值為.mem變量名通配符例:假設(shè)存在自定義變量a,b,ab,baSAVETOv1將所有內(nèi)存變量保存到v1.mem文件中SAVETOv2ALLLIKE?a*將所有第一個(gè)字符是任意字符,第二個(gè)字符是a的內(nèi)存變量保存到v2.mem文件中,即baSAVETOv3ALLEXCEPT?a*將所有第二個(gè)字符不是a的內(nèi)存變量保存到v3.mem文件中,即a,b,ab返回1/13/202326VisualFoxPro6.0RESTOREFROMFileName[ADDITIVE]4恢復(fù)內(nèi)存變量保留當(dāng)前內(nèi)存中的內(nèi)存變量,將指定文件中的內(nèi)存變量添加到當(dāng)前內(nèi)存變量之后。若省略ADDITIVE選擇項(xiàng),則內(nèi)存中已有的內(nèi)存變量全部釋放,將指定文件中的內(nèi)存變量調(diào)入內(nèi)存。例:RESTOREFROMv1此時(shí)內(nèi)存中存在變量a,b,ab,ba

RESTOREFROMv2此時(shí)內(nèi)存中存在變量baRESTOREFROMv3ADDITIVE此時(shí)內(nèi)存中存在變量a,b,ab,ba返回1/13/202327VisualFoxPro6.02為數(shù)組元素賦值1數(shù)組的聲明2.2.4數(shù)組返回1/13/202328VisualFoxPro6.0數(shù)組可以為一維數(shù)組或二維數(shù)組。在絕大多數(shù)情況下,數(shù)組在使用時(shí)必須預(yù)先聲明。1數(shù)組的聲明返回DECLAER|DIMENSION|PUBLIC|LOCAL數(shù)組名(行數(shù)[,列數(shù)])私有數(shù)組私有數(shù)組全局?jǐn)?shù)組局部數(shù)組維數(shù)和大小例:DECLAERXX(4) 定義一個(gè)一維數(shù)組XXPUBLICA(6,3) 定義一個(gè)6行3列的一維數(shù)組ADIMENSIONB(3),C(2,3) 定義一個(gè)一維數(shù)組B和一個(gè) 2行3列的二維數(shù)組C1/13/202329VisualFoxPro6.02為數(shù)組元素賦值數(shù)組在聲明之后,每個(gè)數(shù)組元素的默認(rèn)值均為邏輯值.F.DECLAERXX[6,3]XX[1,2]=1113使用數(shù)組名和元素位置為數(shù)組元素賦值XX=1113用一個(gè)語(yǔ)句為所有數(shù)組元素賦相同的值此外,可以使用SCATTER、GATHER、COPYTOARRAY、APPENDFROMARRAY等命令在數(shù)組元素與表的記錄之間進(jìn)行值的傳遞返回1/13/202330VisualFoxPro6.0運(yùn)算符可用于操作同類型數(shù)據(jù),分為:數(shù)值運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、字符運(yùn)算符和日期(時(shí)間)運(yùn)算符

數(shù)值運(yùn)算符+加

-

減 *

乘 /

除**或^

乘方 %

模運(yùn)算

()括號(hào)2.3運(yùn)算符 關(guān)系運(yùn)算符<

小于 =

等于

#

不等于 <=

小于或等于>大于 <>

不等于 !=

不等于 >=

大于或等于==

精確等于“==”必須是字符串間的比較,其他的可以為字符串、數(shù)值或日期(時(shí)間)數(shù)據(jù)間的比較。關(guān)系運(yùn)算產(chǎn)生邏輯結(jié)果“真”或“假”。返回1/13/202331VisualFoxPro6.0邏輯運(yùn)算符

AND

邏輯與 NOT

邏輯非(單邊運(yùn)算符)OR

邏輯或 !

邏輯非(單邊運(yùn)算符) 字符運(yùn)算符+

字符串精確連接 -

字符串非精確連接$

屬于

(查看左邊字符串是否包含在右邊字符串中)日期(時(shí)間)運(yùn)算符+

加 -

減說(shuō)明:日期加上數(shù)值得到將來(lái)的日期;日期減去數(shù)值得到過(guò)去的日期;兩日期相減得到兩個(gè)日期相差的天數(shù)。

返回1/13/202332VisualFoxPro6.02.4函數(shù)函數(shù)是預(yù)先編好的程序代碼,可供用戶或程序調(diào)用。函數(shù)名([參數(shù)1[,參數(shù)2[,…]]])例:?MOD(36,10) &&顯示6?MAX(6,9) &&顯示9?SUBSTR(’Helloworld’,7,5) &&顯示‘world’?YEAR(DATE()) &&顯示2003?STR(123.456,5,2) &&顯示123.4MESSAGEBOX(’Hi!’,’A’) &&顯示標(biāo)題為’A’內(nèi) 容為’Hi!的對(duì)話框MOD(a,b)=a-[INT(a/b)-IIF(a/b<0,1,0)]*b返回1/13/202333VisualFoxPro6.0表達(dá)式:

由運(yùn)算符和括號(hào)將常量、變量和函數(shù)連接起來(lái)的有意義的式子。單個(gè)常量、變量和函數(shù)都可以看作是最簡(jiǎn)單的表達(dá)式。

表達(dá)式可以分為:■字符表達(dá)式■數(shù)值表達(dá)式■關(guān)系表達(dá)式■邏輯表達(dá)式■日期表達(dá)式 ■名稱表達(dá)式2.5表達(dá)式例:?“教師”+ALLT(js.xm)+“的基本工資是”+STR(js.jbgz,7,2)?DATE()+1?INT(3/2)>MOD(3,2)x=“OFF”SETTALK&x 即SETTALKOFF,不可SETTALK(x)返回1/13/202334VisualFoxPro6.02.6空值

NULL值不是一種數(shù)據(jù)類型,它0、空字符串(””)或空格不同,表示什么都沒有,排序優(yōu)先于其他數(shù)據(jù),NULL值會(huì)影響命令、函數(shù)、邏輯表達(dá)式和參數(shù)的行為。

NULL不是一種數(shù)據(jù)類型,當(dāng)給字段或變量賦.NULL.時(shí),該字段或變量的數(shù)據(jù)類型不變,只是值變?yōu)?NULL.。

針對(duì)NULL值時(shí),ISBLANK()、ISDIGIT()、ISLOWER()、ISUPPER()、ISALPHA()和ISEMPTY()返回“假”(.F.),而ISNULL()返回“真”(.T.)。返回1/13/202335VisualFoxPro6.02.7.1

創(chuàng)建與運(yùn)行程序2.7.2 程序結(jié)構(gòu)2.7.3 過(guò)程與用戶自定義函數(shù)2.7程序設(shè)計(jì)基礎(chǔ)返回1/13/202336VisualFoxPro6.0程序是為完成某一具體任務(wù)而編寫的一系列指令。VFP程序由一系列代碼組成,代碼可以包括以命令形式出現(xiàn)的指令、函數(shù)或VFP可以理解的任何操作。創(chuàng)建程序的方法有:1、通過(guò)“文件”菜單中的“新建”命令2.7.1創(chuàng)建與運(yùn)行程序2、利用項(xiàng)目管理器創(chuàng)建程序文件選擇“程序”選項(xiàng),然后單擊“新建文件”按鈕打開程序編輯窗口在“代碼”選項(xiàng)卡選擇“程序選項(xiàng),然后單擊“新建”按鈕打開程序編輯窗口輸入程序代碼,并保存即可3、在命令窗口中通過(guò)命令打開程序編輯窗口

MODIFYCOMMAND[FIleName

|?]運(yùn)行程序的方法有:

1、當(dāng)程序處于VFP編輯窗口時(shí),單擊“常用”工具欄上的按鈕2、在項(xiàng)目管理器中選擇程序文件,單擊“運(yùn)行”按鈕3、在命令窗口中使用DO命令

DOProgramName[WITHParameterList

]

返回1/13/202337VisualFoxPro6.0VFP的程序結(jié)構(gòu)可以分為三種:順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。1、順序結(jié)構(gòu)按照順序依次執(zhí)行程序中的命令,例:

STORE4.12TOp

s=p*p*3.14

?”圓的面積為:”,s2、分支結(jié)構(gòu)包括單條件分支結(jié)構(gòu)和多條件分支結(jié)構(gòu)單條件分支結(jié)構(gòu):

IFlExpression

[THEN]

Commands1

[ELSE

Commands2]

ENDIF2.7.2程序結(jié)構(gòu)返回例:

x=9 IFx>10THEN ?x ELSE x=x+1 ENDIF1/13/202338VisualFoxPro6.0多條件分支語(yǔ)結(jié)構(gòu):DOCASE

CASElExpression1

Commands1

[CASElExpression2

Commands2

CASElExpressionN

CommandsN]

[OTHERWISE

Commands]

ENDCASE

該語(yǔ)句從第一各CASE開始,判斷其后條件表達(dá)式的值是否為.T.,當(dāng)遇到第一各結(jié)果為.T.的CASE表達(dá)式時(shí),就執(zhí)行它后面的命令組,然后跳過(guò)下一個(gè)CASE到ENDCASE之間的所有語(yǔ)句。當(dāng)包含OTHERWISE語(yǔ)句時(shí),當(dāng)所有CASE表達(dá)式的值都為.F.時(shí),執(zhí)行OTHERWISE后面的命令組。返回1/13/202339VisualFoxPro6.0例:根據(jù)一元二次方程的系數(shù)a,b,c判斷方程根的情況:delta=b*b–4*a*cDOCASECASEdelta>0 ?“方程有兩個(gè)不等的實(shí)數(shù)根:” ??(-b+SQRT(delta))/(2*a)

??(-b-SQRT(delta))/(2*a)CASEdelta=0 ?“方程有兩個(gè)不等的實(shí)數(shù)根:”

??–b/(2*a)CASEdelta<0 ?“方程有兩個(gè)復(fù)根:”

real_part=-b/(2*a) &&實(shí)部

img_part=SQRT(-delta)/(2*a) &&虛部

?ALLTRIM(STR(real_part))+”+”+ALLTRIM(STR(img_part))+”i” ?ALLTRIM(STR(real_part))+”-”+ALLTRIM(STR(img_part))+”i”ENDCASE返回1/13/202340VisualFoxPro6.03、循環(huán)結(jié)構(gòu)有三類命令:基于條件的循環(huán)、基于計(jì)數(shù)的循環(huán)和基于表的循環(huán)1)基于條件的循環(huán):

DOWHILElExpression

Commands [LOOP] [EXIT] ENDDO例:計(jì)算連續(xù)自然數(shù)之和,并且顯示和剛大于1000的最后一個(gè)自然數(shù)。

STORE0TOAA,BB DOWHILEAA<=1000 BB=BB+1 AA=AA+BB ENDDO結(jié)果顯示為45。

?BB

循環(huán)的“短路”語(yǔ)句,執(zhí)行到它時(shí),跳過(guò)它與循環(huán)出口語(yǔ)句之間所有命令,進(jìn)入下一次循環(huán)退出語(yǔ)句,執(zhí)行到它時(shí),無(wú)論循環(huán)結(jié)束條件是否滿足,都將退出循環(huán),程序轉(zhuǎn)到出口語(yǔ)句外返回1/13/202341VisualFoxPro6.02)基于計(jì)數(shù)的循環(huán):FORVar=nInitialValueTOnFinalValue[STEPnIncrement]

語(yǔ)句序列

[EXIT] [LOOP]ENDFOR/NEXT

例:求1到100中偶數(shù)的和A=0FORI=2TO100STEP2 A=A+IENDFOR?A屏幕顯示為:2550返回1/13/202342VisualFoxPro6.03)基于表的循環(huán)命令

SCAN[Scope][FORlExpression1] [Commands] [LOOP] [EXIT]ENDSCAN說(shuō)明:SCAN命令自動(dòng)將記錄指針移到下一條滿足條件的記錄例:逐條顯示STUDENT表中男生的情況。

USESTUDENT SCANFOR性別=”男”

DISP WAIT ENDSCAN USE或者使用右側(cè)代碼:USESTUDENTSCAN IF性別#”男”

LOOP ENDIF DISP WAITENDSCANUSE返回1/13/202343VisualFoxPro6.01、過(guò)程與自定義函數(shù)的建立為保證良好的復(fù)用性,可以建立過(guò)程文件和自定義函數(shù),內(nèi)容如下:PROCEDUREProcedureName1

Commands1

RETURN[eExpression]

ENDPROCFUNCTIONFunctionName

Commands

RETURN

ENDFUNC2.7.3過(guò)程與用戶自定義函數(shù)為使過(guò)程或自定義函數(shù)具有一定的靈活性,可以項(xiàng)它們傳遞一些參數(shù),使其根據(jù)不同的參數(shù)進(jìn)行不同的處理,為使過(guò)程或自定義函數(shù)能接收參數(shù),必須在PROCEDURE或FUNCTION命令后面的第一個(gè)可執(zhí)行語(yǔ)句之前使用如下語(yǔ)句進(jìn)行參數(shù)定義:PARAMETERSParameterList返回1/13/202344VisualFoxPro6.02、過(guò)程和用戶自定義函數(shù)的調(diào)用

過(guò)程和用戶自定義函數(shù)的編寫和修改方式與一般的程序一樣,調(diào)用過(guò)程的程序是主程序,過(guò)程可以嵌套,即一個(gè)子程序可以再調(diào)用其它子程序,但不能形成循環(huán)嵌套。調(diào)用之前應(yīng)使用如下命令:

SETPROCEDURETOprocs.prg調(diào)用命令如下:

DOProcedureName

[INProgramName2

][WITHParameterList]返回語(yǔ)句如下:

RETURN[lExpression|TOMASTER|TOProcedureName

]返回1/13/202345VisualFoxPro6.03、參數(shù)傳遞的兩種方式

過(guò)程或自定義函數(shù)的參數(shù)可以是變量或數(shù)組元素,并可以通過(guò)值或引用傳遞。如果希望自定義函數(shù)修改參數(shù),并將修改后的值返回給主程序,則應(yīng)通過(guò)引用(Reference)傳遞參數(shù);如果主程序需要保持參數(shù)的原值,則應(yīng)通過(guò)值(Value)傳遞參數(shù)。系統(tǒng)默認(rèn)為傳值。設(shè)置參數(shù)傳遞方式的語(yǔ)句為:

SETUDFPARMSTOREFERENCE|VALUE例:SETUDFPARMSTOVALUE

STORE1TOgnX

?STR(plusone(gnX))&&值為2

?STR(gnX) &&gnX值為1

FUNCTIONplusone

PARAMETERSgnZ

gnZ=gnZ+1

RETURNgnZSETUDFPARMSTOREFERENCESTORE1TOgnX?STR(plusone(gnX))&&值為2?STR(gnX) &&gnX值為2FUNCTIONplusone PARAMETERSgnZ

gnZ=gnZ+1RETURNgnZ返回1/13/202346VisualFoxPro6.0小結(jié)1、對(duì)內(nèi)存變量的賦值操作可以使用STORE命令或“=”進(jìn)行。2、內(nèi)存變量可以使用SAVE命令保存,也可以使用RELEASE命令和CLEAR命令刪除,還可以使用RESTORE命令恢復(fù)。3、數(shù)組必須先定義后使用,數(shù)組元素的賦值操作與內(nèi)存變量的賦值操作基本相同。4、表達(dá)式按其值的數(shù)據(jù)類型可以分為四類,字符型、數(shù)值型、日期型、邏輯型。5、運(yùn)算符按其運(yùn)算的結(jié)果可以分為五類:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、字符串運(yùn)算符、日期運(yùn)算符。6、在過(guò)程化程序設(shè)計(jì)可面向?qū)ο蟪绦蛟O(shè)計(jì)中,都要用到條件選擇和循環(huán)命令。這些命令包括IF…ELSE…ENDIF、DOCASE…ENDCASE、DoWHILE…ENDDO、SCAN…ENDSCAN、FOR…EONFOR。返回1/13/202347VisualFoxPro6.03.1表結(jié)構(gòu)

3.2表的打開與關(guān)閉

3.3記錄的處理

3.4表的索引

3.5有關(guān)表操作的常用函數(shù)

第3章表的創(chuàng)建和使用返回1/13/202348VisualFoxPro6.03.1.1表結(jié)構(gòu)概述3.1.2表結(jié)構(gòu)的創(chuàng)建3.1.3表結(jié)構(gòu)的修改3.1表結(jié)構(gòu)返回1/13/202349VisualFoxPro6.0表結(jié)構(gòu)主要指表的字段及其屬性,即由那些字段組成,這些字段的字段名、數(shù)據(jù)類型、寬度、小數(shù)位數(shù)和空值(NULL)支持情況是什么。

例如:創(chuàng)建xs(學(xué)生)表:3.1.1表結(jié)構(gòu)概述返回1/13/202350VisualFoxPro6.0方法一:用CREATETABLE-SQL命令創(chuàng)建表結(jié)構(gòu)CREATETABLETableName

(FieldName1

FieldType1[(nFieldWidth[,nPrecision])] [NULL|NOTNULL][,FieldName2,…])例:CREATETABLExs(xhC(8)NOTNULL,xmC(6),xbC(2),zydhC(6),xdhC(2),jgC(10),csrqD,zpG)1、打開“表設(shè)計(jì)器”。在項(xiàng)目管理器的“數(shù)據(jù)”選項(xiàng)卡中選擇“自由表”,然后單擊【新建】|【新建表】按鈕。在出現(xiàn)的“創(chuàng)建”對(duì)話框中輸入表文件名,并選擇存儲(chǔ)路徑,然后選擇【保存】,將打開表設(shè)計(jì)器。2、在“表設(shè)計(jì)器”中創(chuàng)建表結(jié)構(gòu)。即在“表設(shè)計(jì)器”的“字段”選項(xiàng)卡上,輸入各個(gè)字段的定義信息。3.1.2表結(jié)構(gòu)的創(chuàng)建方法二:用“表設(shè)計(jì)器”創(chuàng)建表結(jié)構(gòu)返回1/13/202351VisualFoxPro6.0功能:顯示表設(shè)計(jì)器,修改當(dāng)前表文件的結(jié)構(gòu)。說(shuō)明:如果沒有在當(dāng)前選定工件區(qū)打開表,則顯示“打開”對(duì)話框,允許用戶從中選擇一個(gè)要修改的表。方法一:通過(guò)命令MODIFYSTRUCTURE

或交互界面進(jìn)入表設(shè)計(jì)器修改表結(jié)構(gòu)方法二:

ALTERTABLETableName

ADD|ALTER[COLUMN]FieldName

FieldType[(nFieldWidth[,nPrecision])]或

ALTERTABLETableNameDROP[COLUMN]FieldName

或ALTERTABLETableNameRENAMECOLUMNFieldName1TOFieldName2功能:直接修改表文件的結(jié)構(gòu)。說(shuō)明:ADD子句用于增加字段,ALTER子句用于修改字段;DROP子句用于刪除字段,RENAME子句用于字段改名。3.1.3表結(jié)構(gòu)的修改返回1/13/202352VisualFoxPro6.03.2.1工作區(qū)與數(shù)據(jù)工作期3.2.2表的打開與關(guān)閉3.2.3表的獨(dú)占與共享3.2表的打開與關(guān)閉返回1/13/202353VisualFoxPro6.01、工作區(qū)號(hào)與別名

VFP6提供了多達(dá)32767個(gè)工作區(qū),每個(gè)工作區(qū)都有一個(gè)工作區(qū)號(hào),分別用1~32767表示,其工作區(qū)1~10還分別對(duì)應(yīng)有別名A~J。系統(tǒng)規(guī)定,用工作區(qū)號(hào)作為各個(gè)工作區(qū)的標(biāo)識(shí)符,即數(shù)字1-32767;同時(shí)還規(guī)定,可以用工作區(qū)的別名作為工作區(qū)的標(biāo)識(shí)符,A-J這10個(gè)字母是工作區(qū)的標(biāo)識(shí)符,因此,單個(gè)字母A-J是不能用來(lái)作為表的文件名的,它是系統(tǒng)的保留字。每個(gè)打開的表也都有一個(gè)別名,當(dāng)用命令USE表文件名打開表時(shí),系統(tǒng)默認(rèn)的表的別名就是該表的主文件名。如果在打開表時(shí),在USE命令后面使用了ALIAS參數(shù)指定了表的別名,則可為表另外起一個(gè)別名,這時(shí)的表文件名就不再是表的別名。3.2.1工作區(qū)與數(shù)據(jù)工作期返回1/13/202354VisualFoxPro6.0功能:選擇一個(gè)工作區(qū)作為當(dāng)前工作區(qū)。說(shuō)明:選擇一個(gè)工作區(qū)作為當(dāng)前工作區(qū),使該工作區(qū)打開的表成為當(dāng)前表,要選擇的工作區(qū),可使用工作區(qū)號(hào)作為標(biāo)識(shí)符,也可以用工作區(qū)的別名來(lái)作為工作區(qū)的標(biāo)識(shí)符。若選擇0,則系統(tǒng)自動(dòng)選取當(dāng)前未使用的最小工作區(qū)號(hào)作為當(dāng)前的工作區(qū)。例:SELECT3USESTUDENTALIASXSSELECT1 USESCOREUSESCOREALIASCJINXSAGAIN2、工作區(qū)的選擇與多表文件的打開與關(guān)閉若想改變當(dāng)前工作區(qū),則可使用SELECT命令來(lái)轉(zhuǎn)換當(dāng)前工作區(qū)。SELECT

nWorkArea

|cTableAlias

|0返回1/13/202355VisualFoxPro6.0表的打開(使用任何一個(gè)表以前,都必須首先打開表):USE

TableName

[IN

nWorkArea

|cTableAlias][AGAIN][ALIAScTableAlias][NOUPDATE]功能:IN子句用于指定在哪個(gè)工作區(qū)中打開,缺省時(shí)表示在當(dāng)前工作區(qū)中打開;AGAIN用于說(shuō)明改表再次打開,即表在多個(gè)工作區(qū)中被同時(shí)打開;ALIAS子句用于定義表的別名,缺省時(shí)表的別名與一般表名相同;NOUPDATE指定表打開后不允許修改其結(jié)構(gòu)和數(shù)據(jù)。3.2.2表的打開與關(guān)閉返回1/13/202356VisualFoxPro6.0關(guān)閉打開的表文件CLOSEALL功能:關(guān)閉所在所有工作區(qū)中打開了的表、表和單索引文件并且選擇1號(hào)工作區(qū)為當(dāng)前工作區(qū)。此外:退出VFP時(shí),將關(guān)閉所有的表使用USE命令關(guān)閉打開的表文件

USEIN[nWorkArea

|cTableAlias]

功能:關(guān)閉指定的表,不使用IN子句時(shí)關(guān)閉當(dāng)前工作區(qū)中的表。返回1/13/202357VisualFoxPro6.0USE

TableName

[EXCLUSIVE][SHARED]功能:指定系統(tǒng)打開表的方式。EXCLUSIVE為獨(dú)占打開,即一張表只能被一個(gè)用戶打開;SHARED為共享打開,即網(wǎng)絡(luò)上的多個(gè)用戶可以在同一時(shí)刻訪問(wèn)同一張表。默認(rèn)獨(dú)占。SETEXCLUSIVEON|OFF功能:指定系統(tǒng)打開表的方式為獨(dú)占或共享。但不改變已打開表的狀態(tài)。一張表被打開多次時(shí),其打開狀態(tài)以第一次打開方式為準(zhǔn)。3.2.3表的獨(dú)占與共享

返回1/13/202358VisualFoxPro6.03.3.1記錄的輸入3.3.2表的瀏覽與定制3.3.3記錄的定位3.3.4記錄的修改3.3.5記錄的刪除3.3.6數(shù)據(jù)的復(fù)制3.3.7數(shù)據(jù)的統(tǒng)計(jì)3.3記錄的處理返回1/13/202359VisualFoxPro6.0

方法一:表結(jié)構(gòu)創(chuàng)建后立即輸入數(shù)據(jù)方法二:通過(guò)菜單或BROWSE命令在瀏覽器窗口中追加記錄例:USExsBROWSE

例:APPENDFROMxs1

從xs1表中向當(dāng)前表中導(dǎo)入數(shù)據(jù)例: INSERTINTOxs(xh,xm)VALUES(‘0001’,’張三’)

向?qū)W生表中插入一條記錄,學(xué)號(hào)“0001”,姓名“張三”方法三:使用INSERT-SQL命令追加記錄INSERTINTOTableName[(FieldName1[,F(xiàn)ieldName2

,…])]VALUES(eExpression1[,eExpression2,…])方法四:使用APPEND與APPENDFROM命令A(yù)PPEND[BLANK][INnWorkArea|cTableAlias

]APPENDFROMFileName[DELIMITED|XLS]另外:備注與通用型字段,通過(guò)針對(duì)字段雙擊或Ctrl+Home組合鍵打開內(nèi)容,編輯后保存。3.3.1記錄的輸入返回1/13/202360VisualFoxPro6.0如何將數(shù)據(jù)輸入到表中,并根據(jù)需要對(duì)表中的數(shù)據(jù)進(jìn)行處理、利用和維護(hù)?

返回1/13/202361VisualFoxPro6.0界面操作方式:通過(guò)設(shè)置“數(shù)據(jù)過(guò)濾器”(填寫條件)來(lái)篩選記錄。格式1:BROWSE[FIELDSFieldList][FOR

lExpression][FREEZEFieldName][NOAPPEND][NODELETE]

[NOMODIFY][TITLEcExpression] 瀏覽命令格式2:SETFILTERTO

lExpression

進(jìn)行記錄的篩選格式3:SETFIELDTO

[FieldList]

限制對(duì)字段的訪問(wèn)3.3.2表的瀏覽與定制返回例1:BROWSEFIELDSxh,xmFORxb=“女”NOMODIFYTITLE“女學(xué)生” 顯示女學(xué)生的學(xué)號(hào)、姓名信息例2:

SETFILTERTOxb=“女”

僅顯示女學(xué)生信息

BROWSEFIELDSxh,xmNOMODIFYTITLE“女學(xué)生”例3:

SETFIELDTOxh,xm

僅顯示學(xué)號(hào)、姓名信息

BROWSEFORxb=“女”NOMODIFYTITLE“女學(xué)生”1/13/202362VisualFoxPro6.0記錄的開始標(biāo)志記錄指針記錄的結(jié)束標(biāo)志當(dāng)用戶向表中輸入數(shù)據(jù)時(shí),VFP為每個(gè)記錄都按輸入順序指定了文件頭(包含表結(jié)構(gòu)等信息)第1條記錄第2條記錄···第n條記錄

是VFP系統(tǒng)內(nèi)部的一個(gè)指示器,可以將記錄指針理解為保存當(dāng)前記錄號(hào)的變量。每當(dāng)打開一個(gè)表結(jié)構(gòu)時(shí),記錄指針總是指向第1條記錄。在進(jìn)行數(shù)據(jù)處理時(shí),經(jīng)常要將記錄指針移到用戶所需要操作的那個(gè)記錄,這個(gè)過(guò)程即是

記錄指針記錄號(hào)。第一個(gè)輸入的記錄,其記錄號(hào)為1。依次類推。記錄的定位。3.3.3記錄的定位返回1/13/202363VisualFoxPro6.0返回打開表時(shí)記錄指針情況如下:表中記錄情況BOF()值RECNO()值EOF()值有記錄無(wú)記錄BOF():測(cè)試指針是否指向記錄的開始標(biāo)志。.T.是,.F.不是EOF():測(cè)試指針是否指向記錄的結(jié)束標(biāo)志。.T.是,.F.不是RECNO():測(cè)試記錄指針的值。用戶可以從VFP主窗口的狀態(tài)欄上看出記錄指針的值。表的別名打開的表文件記錄指針值為1表中共有10條記錄1.F..T.1.T..F.1/13/202364VisualFoxPro6.0返回

絕對(duì)定位:

GOTOnRecordNumber[INWorkArea

|IN

cTableAlias]|TOP|BOTTOM

記錄指針移動(dòng)到第1條記錄GOTOTOP記錄指針移動(dòng)到記錄號(hào)為3的記錄GOTO3記錄指針下移4條記錄SKIP4記錄指針上移2條記錄SKIP–2記錄指針下移1條記錄SKIP

Movestherecordpointertothespecifiedrecordnumber.相對(duì)定位:

SKIP

[nRecords][INWorkArea|IN

cTableAlias]

Movestherecordpointerforwardorbackwardinatable.記錄定位的方法(1)1/13/202365VisualFoxPro6.0Returnsalogicalvalueindicatingifthesearchwassuccessful.

條件定位張三

SETORDERTOxmSEEK‘張三’FOUND()函數(shù)可測(cè)試是否找到匹配的記錄,.T.是,.F.否。LOCATEFOR快速定位:xm=‘張三’

輸入待查學(xué)生姓名順序定位:}SEEK‘張三’ORDERxm記錄指針指向姓名為‘張三’的記錄或表尾查詢定位按鈕例:在xs表中尋找首次出現(xiàn)姓名為‘張三’的記錄USExs{Searchesanindexedtableforthefirstoccurrenceofarecordwhoseindexkeymatchesaspecifiedexpression.Sequentiallysearchesthetableforthefirstrecordthatmatchesthespecifiedlogicalexpression.LOCATEFORlExpression[Scope]

SEEKeExpression

[ORDER

TagName

[ASCENDING|DESCENDING][IN

nWorkArea|cTableAlias]或表尾ContinuesthepreviousLOCATEorSEEK.出于對(duì)效率的考慮,建議更多地使用SEEK命令。利用CONTINUE命令可以進(jìn)行下一條滿足條件記錄的定位。記錄定位的方法(2)返回1/13/202366VisualFoxPro6.0前提:xs表有6條記錄,僅第3條記錄的xm字段值為“張三”。(打開xs表)USExs?BOF()SEEK‘張三’ORDERxm?RECNO()?RECNO()?EOF()GOTOTOPSKIP-1?BOF().F.(尋找xm為“張三”的記錄)3(移動(dòng)記錄指針到第一條記錄)7.T.(記錄指針上移一條記錄).T.CONTINUE(繼續(xù)尋找下一條xm為“張三”的記錄)?BOF().F.記錄指針的狀態(tài)???????再SKIP-1會(huì)怎樣??BOF()SKIP會(huì)怎樣??EOF().T..T.一起來(lái)思考:返回1/13/202367VisualFoxPro6.0例:

UPDATExsSETxh=‘x’+xh

將學(xué)號(hào)前加個(gè)‘x’CLOSETABLESALL

USExs

REPLACExhWITH‘x’+xhALL1、界面方式的記錄修改通過(guò)項(xiàng)目管理器、菜單選擇或BROWSE命令打開表3.3.4記錄的修改格式1:UPDATETableNameSETColumn_Name1=eExpression1[,Column_Name2=eExpression2…][WHEREFilterCondition

]格式2:REPLACEFieldName1

WITHeExpression1

[ADDITIVE][,FieldName2

WITHeExpression2[ADDITIVE]…][Scope][FORlExpression

]2、使用命令修改記錄等同上句

返回1/13/202368VisualFoxPro6.0返回3.3.5記錄的刪除

例:對(duì)xs表文件中所有男生加注刪除標(biāo)記USExsDELETEFORxb=“男”等價(jià)于:DELETEFROMxsWHERExb=“男”可以通過(guò)界面操作或如下命令實(shí)現(xiàn)刪除標(biāo)記可以通過(guò)SETDELETEON|OFF指定是否處理有刪除標(biāo)記的記錄DELETE[

Scope

][FOR

lExpression][IN

nWorkArea

|cTableAlias

]或DELETEFROM

TableName

[WHERE

FilterCondition]

1、標(biāo)記要?jiǎng)h除的記錄1/13/202369VisualFoxPro6.0例:RECALL 恢復(fù)當(dāng)前記錄RECALLALL 恢復(fù)所有記錄

RECALLALLFORxb=“男”

恢復(fù)所有性別為“男”的記錄3、徹底刪除記錄

可以通過(guò)菜單命令“表/徹底刪除”或PACK命令實(shí)現(xiàn)對(duì)加注了刪除標(biāo)記記錄的物理刪除;也可以通過(guò)ZAP命令從當(dāng)前表中清除全部記錄。兩種命令均要求當(dāng)前工作區(qū)中的表以獨(dú)占方式打開。ZAP比PACK快。DELETEFORxb=“男”PACK返回2、恢復(fù)帶刪除標(biāo)記的記錄

可以通過(guò)界面操作或如下命令實(shí)現(xiàn)RECALL[

Scope

][FOR

lExpression]1/13/202370VisualFoxPro6.0COPYTOFileName[FIELDSFieldList][Scope][FOR

lExpression][[TYPE]SDF|XLS|DELMITED[WITH

Delimiter|WITHBLANK|WITHTAB|WITHCHARACTERDelimiter]]例:

USExs COPYTOxs01XLS

生成xs01.xls文件COUNT[Scope][FORlExpression][TO

VarName]SUM[nExpression][Scope][FOR

lExpression][TO

VarName]AVERAGE[nExpression][Scope][FOR

lExpression][TOVarName]例:

COUNTFORcj>80TOa1

統(tǒng)計(jì)80分以上人數(shù)

AVERAGEcjTOa2FORcj>80

統(tǒng)計(jì)80以上平均分3.3.7數(shù)據(jù)的統(tǒng)計(jì)3.3.6數(shù)據(jù)的復(fù)制返回1/13/202371VisualFoxPro6.0索引文件有二種:獨(dú)立索引文件和復(fù)合索引文件,而復(fù)合索引文件又可分為結(jié)構(gòu)復(fù)合索引文件和非結(jié)構(gòu)復(fù)合索引文件兩種。VFP對(duì)結(jié)構(gòu)復(fù)合索引文件提供了四種類型:主索引、候選索引、唯一索引、普通索引結(jié)構(gòu)復(fù)合索引文件的建立INDEXONeExpression

TOTAGTagName

[FORlExpression][ASCENDING|DESCENDING][UNIQUE][CANDIDATE]3.4表的索引

返回1/13/202372VisualFoxPro6.0轉(zhuǎn)移焦點(diǎn)(1)利用表設(shè)計(jì)器的字段選項(xiàng)卡建立索引文件在項(xiàng)目管理器中建立索引在“數(shù)據(jù)”選項(xiàng)卡中選擇要建立索引的表單擊“修改”按鈕,打開表設(shè)計(jì)器單擊“索引”選項(xiàng)卡輸入索引標(biāo)識(shí)選擇索引類型輸入索引表達(dá)式也可選擇表達(dá)式生成器進(jìn)行表達(dá)式的生成返回1/13/202373VisualFoxPro6.01在打開表時(shí)打開索引文件復(fù)合索引文件在打開表時(shí)將自動(dòng)被打開。USETableNameINDEX<TagName>[ASCENDING|DESCENDING]2、打開表后設(shè)置主控索引如果在打開索引文件時(shí)未指定主控索引,打開索引文件之后需要指定主控索引,或者希望改變主控索引,可使用下面的命令。SETORDERTO[TagName[INnWorkArea

|cTableAlias][ASCENDING|DESCENDING]說(shuō)明:如果命令中不使用任選項(xiàng),只寫SETORDERTO,那么不會(huì)指定主索引,記錄仍按照記錄號(hào)的順序顯示,但并未關(guān)閉索引文件使用索引返回1/13/202374VisualFoxPro6.03索引文件的重建或更新格式:REINDEX功能:重建當(dāng)前打開的所有索引文件。說(shuō)明:使用REINDEX命令之前,必須首先打開需要重建索引的全部索引文件。對(duì)使用包含UNIQUE關(guān)鍵字的INDEX命令或SETUNIQUEON命令創(chuàng)建的索引文件,在重建索引時(shí),仍保持UNIQUE狀態(tài)。4利用索引快速定位記錄格式:SEEKeExpression[ORDERTagName

[ASCENDING|DESCEN-DING][INnWorkArea|cTableAlias]例:

USExsORDERxh SEEK“030102”返回1/13/202375VisualFoxPro6.0小結(jié)1、建立表前要做好準(zhǔn)備,將每個(gè)表的字段名、類型、寬度、小數(shù)位、等以表格的形式進(jìn)入充分的描述。2、可以通過(guò)項(xiàng)目管理器和使用CREATE命令建立表,也可以通過(guò)COPYSTRUCTURE命令從其它表中復(fù)制表結(jié)構(gòu),還可以使用CREATE帶FROM子句從一個(gè)表結(jié)構(gòu)文件中得到表結(jié)構(gòu)。3、表在使用前要先打開,表中的記錄可以用APPEND、INSERTINTO等命令進(jìn)行追加,也可以使用DELETE命令進(jìn)行刪除,還可以使用BROWSE命令打開全屏幕編輯窗口進(jìn)行修改和瀏覽,可以用REPLACE命令替換數(shù)據(jù)。4、在USE命令中可以用IN了句指定工作區(qū),用ALIAS子句指定別名。5、可以使用SELECT命令選擇一個(gè)工作區(qū)。返回1/13/202376VisualFoxPro6.04.1VFP數(shù)據(jù)庫(kù)概述

4.2數(shù)據(jù)庫(kù)的創(chuàng)建

4.3數(shù)據(jù)庫(kù)的使用4.4數(shù)據(jù)庫(kù)表

4.5永久關(guān)系與參照完整性

第4章數(shù)據(jù)庫(kù)的創(chuàng)建和使用返回1/13/202377VisualFoxPro6.0數(shù)據(jù)庫(kù)設(shè)計(jì)步驟第1步:確定建立數(shù)據(jù)庫(kù)的目的。這有助于確定需要VFP保存哪些信息;第2步:確定需要的表。在明確了建立數(shù)據(jù)庫(kù)的目的之后,就可以著手把信息分成獨(dú)立的主題,例如“xs”(學(xué)生)或“cj”(成績(jī))等。每個(gè)主題都可以是數(shù)據(jù)庫(kù)中的一個(gè)表。第3步:確定表的字段。確定在每個(gè)表中保存哪些信息。在表中,每類信息稱為一個(gè)字段,瀏覽表時(shí)在表中顯示為一列。例如,在xs表中,可以有這樣的字段:“學(xué)號(hào)”、“姓名”、“性別”等。第4步:確定表之間的關(guān)系。分析每個(gè)表,確定一個(gè)表中的數(shù)據(jù)和其它表中的數(shù)據(jù)有何關(guān)系。必要時(shí),可以在表中加入字段或創(chuàng)建一個(gè)新表來(lái)明確關(guān)系。第5步:改進(jìn)設(shè)計(jì)。對(duì)設(shè)計(jì)進(jìn)一步分析,查找其中的錯(cuò)誤。創(chuàng)建表時(shí),在表中加入幾個(gè)示例記錄,看能否從表中得到所需的結(jié)果。

返回1/13/202378VisualFoxPro6.04.1VFP數(shù)據(jù)庫(kù)概述

jxgl數(shù)據(jù)庫(kù)xs表js表kc表cj表rk表zy表······數(shù)據(jù)庫(kù)是一個(gè)容器,是許多相關(guān)的數(shù)據(jù)庫(kù)表及其關(guān)系的集合。數(shù)據(jù)庫(kù)中的表叫數(shù)據(jù)庫(kù)表,不但包括自由表的各種屬性,還有一些增強(qiáng)特性。數(shù)據(jù)庫(kù)中不僅有表,還包含有表之間的關(guān)系。返回1/13/202379VisualFoxPro6.04.2數(shù)據(jù)庫(kù)的創(chuàng)建第一步:在項(xiàng)目管理器中選擇【數(shù)據(jù)】選項(xiàng)卡第二步:?jiǎn)螕簟皵?shù)據(jù)庫(kù)”項(xiàng)第三步:?jiǎn)螕繇?xiàng)目管理器中的【新建】按鈕第四步:?jiǎn)螕簟拘陆〝?shù)據(jù)庫(kù)】按鈕第五步:輸入數(shù)據(jù)庫(kù)名后,單擊【保存】按鈕返回1/13/202380VisualFoxPro6.04.3數(shù)據(jù)庫(kù)的使用

語(yǔ)法:打開數(shù)據(jù)庫(kù):OPENDATABASE[DatabaseName][EXCLUSIVE|SHARED][NOUPDATE][VALIDATE]設(shè)置當(dāng)前數(shù)據(jù)庫(kù):SETDATABASETODatabaseName檢查數(shù)據(jù)庫(kù)的有效性:

VALIDATEDATABASE[RECOVER][TOPRINTER|TOFILEFileName]關(guān)閉數(shù)據(jù)庫(kù):CLOSEDATABASE例:OPENDATABASEjxgl

打開jxgl數(shù)據(jù)庫(kù)OPENDATABASEhqgl

打開hqgl數(shù)據(jù)庫(kù)SETDATABASETOjxgl

設(shè)置jxgl為當(dāng)前數(shù)據(jù)庫(kù)CLOSEDATABASE

關(guān)閉jxgl數(shù)據(jù)庫(kù)返回1/13/202381VisualFoxPro6.0語(yǔ)法:第一步:OPENDATABASEDatabaseName第二步:CREATETABLE-SQL系統(tǒng)打開表設(shè)計(jì)器第一步:選擇【數(shù)據(jù)】選項(xiàng)卡第二步:?jiǎn)螕簟氨怼边x項(xiàng)第三步:?jiǎn)螕簟拘陆ā堪粹o4.4數(shù)據(jù)庫(kù)表返回1/13/202382VisualFoxPro6.0數(shù)據(jù)庫(kù)表的字段擴(kuò)展屬性字段顯示屬性字段驗(yàn)證指定與字段相應(yīng)的控件類以下屬性不存在于自由表設(shè)計(jì)器中返回1/13/202383VisualFoxPro6.0為字段設(shè)置有效性規(guī)則語(yǔ)法:CREATETABLEcj(xhC(6)DEFAULT“030000”,kcdhC(6),cjN(3,0);CHECKcj>=0ANDcj<=100)等價(jià)于:CREATETABLEcj(xhC(6),kcdhC(6),cjN(3,0))ALTERTABLEcjALTERCOLUMNxhSETDEFAULT“030000”ALTERTABLEcjALTERCOLUMNcjSETCHECKcj>=0ANDcj<=100返回1/13/202384VisualFoxPro6.0數(shù)據(jù)庫(kù)表的表屬性記錄驗(yàn)證插入、更新或刪除記錄時(shí)進(jìn)行的檢驗(yàn)規(guī)則長(zhǎng)表名,可通過(guò)CREATETABLE表名NAME長(zhǎng)表名(···)定義返回1/13/202385VisualFoxPro6.0為記錄設(shè)置有效性規(guī)則語(yǔ)法:ALTERTABLExsSETCHECKcsrq<date()ERROR”尚未出生”刪除有效性規(guī)則:ALTERTABLExsDROPCHECK

語(yǔ)法:CREATETRIGGERONTableNameFORDELETE|INSERT|UPDATEASlExpression例:CREATETRIGGERONkcFORDELETEAS.F.

無(wú)條件地不允許刪除刪除表的觸發(fā)器:DELETETRIGGERONTableNameFORDELETE|INSERT|UPDATE設(shè)置表的觸發(fā)器返回1/13/202386VisualFoxPro6.0數(shù)據(jù)庫(kù)表的添加與移去語(yǔ)法:添加:ADDTABLETableName[NAMELongTableName]移去:REMOVETABLETableName[DELETE] FREETABLETableName第一步:?jiǎn)螕粢迫サ谋淼谌剑哼x中要添加的表,單擊【確定】按鈕第一步:?jiǎn)螕簟氨怼边x項(xiàng)第二步:?jiǎn)螕簟咎砑印堪粹oZy表被成功添加到j(luò)xgl數(shù)據(jù)庫(kù)中第二步:?jiǎn)螕簟疽迫ァ堪粹o第三步:?jiǎn)螕簟疽迫ァ炕颉緞h除】按鈕返回1/13/202387VisualFoxPro6.0將表加入到數(shù)據(jù)庫(kù)要添加的表必須具備下列條件:■該表是一個(gè)有效的.DBF文件;■表不能同時(shí)放在另一個(gè)數(shù)據(jù)庫(kù)中。要加入表的數(shù)據(jù)庫(kù)必須具備下列條件:■必須以獨(dú)占方式打開。要想獨(dú)占地打開一個(gè)數(shù)據(jù)庫(kù),在使用OPENDATABASE命令時(shí)加入EXCLUSIVE子句;■不包含在事務(wù)中。

返回1/13/202388VisualFoxPro6.04.5永久關(guān)系與參照完整性要在兩張表之間正確地建立關(guān)系,首先必須明確這兩張表之間存在何種關(guān)系。在關(guān)系模型中,實(shí)體之間的聯(lián)系有三種:一對(duì)一聯(lián)系、一對(duì)多關(guān)聯(lián)系和多對(duì)多聯(lián)系。一對(duì)一關(guān)系:設(shè)有甲乙兩張表,如果甲表的一個(gè)記錄在乙表中有且僅有一個(gè)相應(yīng)記錄,而乙表中的一個(gè)記錄在甲表中也有且僅有一個(gè)記錄與之對(duì)應(yīng),則甲乙表間為一對(duì)一關(guān)系。一對(duì)多關(guān)系:設(shè)有甲乙兩張表,如果甲表中的任意一個(gè)記錄在乙表中都有幾個(gè)記錄與之對(duì)應(yīng),則稱甲乙兩張表之間存在一對(duì)多關(guān)系,并稱甲表為“一”表(或“主表”、“父表”),乙表為“多表”(或“子表”)。多對(duì)多關(guān)系:設(shè)有甲乙兩張表,如果甲表中的任意一個(gè)記錄在乙表中存在多個(gè)記錄與之對(duì)應(yīng),而乙表中的每個(gè)記錄在甲表中也存在多個(gè)記錄與之對(duì)應(yīng),則甲乙表之間存在多對(duì)多關(guān)系。在實(shí)際應(yīng)用中,遇到“多對(duì)多”的情況時(shí),必須建立第三張表“紐帶表”,把多對(duì)多關(guān)系分解為兩個(gè)一對(duì)多關(guān)系。紐帶表可能只包含這兩個(gè)表的主關(guān)鍵字,也可能包含其它信息。

返回1/13/202389VisualFoxPro6.0永久關(guān)系與參照完整性的設(shè)定

第二步:?jiǎn)螕粝鄳?yīng)數(shù)據(jù)庫(kù)第三步:?jiǎn)螕繇?xiàng)目管理器中的【修改】按鈕,打開數(shù)據(jù)庫(kù)設(shè)計(jì)器普通索引第一步:在項(xiàng)目管理器中選擇【數(shù)據(jù)】選項(xiàng)卡主索引通過(guò)鼠標(biāo)拖放建立的永久關(guān)系圖示線雙擊,可編輯關(guān)系返回1/13/202390VisualFoxPro6.0數(shù)據(jù)庫(kù)表字段確定確定表字段的幾點(diǎn)技巧:每個(gè)字段直接和表的主題相關(guān);不要包含可推導(dǎo)得到或通過(guò)計(jì)算可以得到的字段;收集所需的全部信息;以最小的邏輯單位存儲(chǔ)信息。每張表必須包含主關(guān)鍵字使用主關(guān)鍵字段

VFP不允許在主關(guān)鍵字中有重復(fù)值或null值。因此,不能選擇包含有這類值的字段作為主關(guān)鍵字。因?yàn)橐弥麝P(guān)鍵字的值來(lái)查找記錄,所以它不能太長(zhǎng),以方便記憶和鍵入。主關(guān)鍵字可由一定長(zhǎng)度的字母和數(shù)字組成,或是某一范圍內(nèi)的值。主關(guān)鍵字的長(zhǎng)度直接影響數(shù)據(jù)庫(kù)的操作速度,因此,在創(chuàng)建主關(guān)鍵字時(shí),該字段值最好使用能滿足存儲(chǔ)要求的最小長(zhǎng)度。

返回1/13/202391VisualFoxPro6.0數(shù)據(jù)庫(kù)設(shè)計(jì)求精對(duì)所設(shè)計(jì)的表分析,查找是否存在如下問(wèn)題:庫(kù)中是否有多余的表或者還缺少某些主題的表現(xiàn)有表是否有多余字段或缺少字段信息?能否從現(xiàn)有的表中,得到所需的結(jié)果,如各種查詢統(tǒng)計(jì)、報(bào)表等等。在設(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)時(shí),一張表不要喊有太多的字段,特別是不應(yīng)有與該表主題無(wú)關(guān)的字段不要對(duì)同一個(gè)主題建立多張表不應(yīng)使表中的某些字段中存有大量的空值。查找到存在的問(wèn)題后,就要修改表的結(jié)構(gòu),以改進(jìn)設(shè)計(jì)方案。

返回1/13/202392VisualFoxPro6.0小結(jié)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)可以分為五步:確定建立數(shù)據(jù)庫(kù)的目的;確定需要的表;確定每個(gè)表所需字段;確定表間的關(guān)系關(guān)系;設(shè)計(jì)求精。返回1/13/202393VisualFoxPro6.05.1查詢的創(chuàng)建和使用5.2創(chuàng)建視圖5.3SELECT-SQL語(yǔ)句第5章查詢與視圖

返回1/13/202394VisualFoxPro6.0“查詢”,是指向一個(gè)數(shù)據(jù)庫(kù)發(fā)出的檢索信息的請(qǐng)求,它使用一些條件提取特定的記錄。查詢的運(yùn)行結(jié)果是一個(gè)基于表和視圖的動(dòng)態(tài)的數(shù)據(jù)集合。創(chuàng)建查詢的方法如下:1、使用CREATEQUERY命令啟動(dòng)“查詢?cè)O(shè)計(jì)

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論