vfp數(shù)據(jù)庫(kù)應(yīng)用基礎(chǔ)_第1頁(yè)
vfp數(shù)據(jù)庫(kù)應(yīng)用基礎(chǔ)_第2頁(yè)
vfp數(shù)據(jù)庫(kù)應(yīng)用基礎(chǔ)_第3頁(yè)
vfp數(shù)據(jù)庫(kù)應(yīng)用基礎(chǔ)_第4頁(yè)
vfp數(shù)據(jù)庫(kù)應(yīng)用基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩67頁(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、2015.9 日常生活工作中,我們每天都要接觸大量的信息,比如學(xué)生成績(jī)、人事檔案、工資表、貨物清單等。那么,它們都可以表示為數(shù)據(jù)的形式,這么多的數(shù)據(jù),單靠紙、筆、算盤(pán)進(jìn)行統(tǒng)計(jì)幾乎是不可能的,計(jì)算機(jī)的出現(xiàn)解決了這個(gè)復(fù)雜的問(wèn)題,它將大批量的數(shù)據(jù)信息存儲(chǔ)在大容量磁盤(pán)上,并方便地進(jìn)行管理。那么,這些數(shù)據(jù)是怎樣存儲(chǔ)的,怎樣被訪問(wèn)、修改和刪除呢?這就用到了數(shù)據(jù)庫(kù)技術(shù)。數(shù)據(jù)庫(kù)技術(shù)將各種各樣的數(shù)據(jù)分門(mén)別類(lèi)地存儲(chǔ)起來(lái),用戶可以很容易地查看、管理、操作這些數(shù)據(jù)。 數(shù)據(jù)不僅僅是文本,多媒體數(shù)據(jù)庫(kù)的發(fā)展可以讓數(shù)據(jù)是圖片、聲音、視頻等內(nèi)容。 a. 數(shù)據(jù)的共享性 b. 數(shù)據(jù)的獨(dú)立性 c. 數(shù)據(jù)的完整性 d. 數(shù)據(jù)的集中性

2、數(shù)據(jù)模型系名系名 系號(hào)系號(hào) 系主任系主任專(zhuān)業(yè)號(hào)專(zhuān)業(yè)名專(zhuān)業(yè)號(hào)專(zhuān)業(yè)名教師號(hào)教師號(hào) 姓名姓名 職稱職稱學(xué)號(hào)學(xué)號(hào) 姓名姓名 性別性別 年齡年齡課程號(hào)課程號(hào) 課程名課程名 學(xué)分學(xué)分課程課程學(xué)生學(xué)生選修選修系部系部 關(guān)系模型中每個(gè)關(guān)系對(duì)應(yīng)一張二維表,它由一些行和列組成。關(guān)系模型中,實(shí)體和實(shí)體之間的聯(lián)系都使用關(guān)系(二維表)來(lái)表示的。關(guān)系模型結(jié)構(gòu)單一、操作方便,容易被用戶接收,且有堅(jiān)實(shí)的數(shù)學(xué)理論基礎(chǔ),因而得到了廣泛的應(yīng)用,成為目前最流行的一種數(shù)據(jù)模型。當(dāng)前的一些數(shù)據(jù)庫(kù),從Oracle到SQL Server,以及Access和VFP,都毫無(wú)例外地采用了關(guān)系模型。1、字符型(C) 由字母(漢字)、數(shù)字、空格等任意

3、字符串組成。每個(gè)字符占1字節(jié),漢字占2字節(jié)。長(zhǎng)度0-254。2、貨幣型(Y) 存儲(chǔ)與貨幣有關(guān)的數(shù)據(jù),如工資、價(jià)格等。3、日期型(D) 保存不帶時(shí)間的日期,存儲(chǔ)格式為“yyyymmdd”。字段寬度8字節(jié)。4、日期時(shí)間型(T) 包括年、月、日、時(shí)、分、秒。 5、邏輯型 用于存儲(chǔ)只有兩個(gè)值的數(shù)據(jù),存入的值只有(.T.)和(.F.)兩種狀態(tài),占一個(gè)字節(jié)。如婚否,及格否等。6、數(shù)值型用來(lái)存儲(chǔ)由數(shù)字、小數(shù)點(diǎn)和正負(fù)號(hào)組成的,可以進(jìn)行計(jì)算的數(shù)據(jù),如成績(jī)、重量、體積、訂貨數(shù)量等。7、雙精度型(B) 存儲(chǔ)高精度的試驗(yàn)數(shù)據(jù)。8、浮點(diǎn)型(F)9、整型 存放由數(shù)字和正負(fù)號(hào)構(gòu)成的整數(shù)型數(shù)據(jù)。其字段寬度為4字節(jié)。使用整型比

4、使用其它類(lèi)型節(jié)省空間,運(yùn)算速度也快。10、備注型(M) 占用10個(gè)字節(jié)的空間,單獨(dú)存在于一個(gè)備注文件中,備注文件擴(kuò)展名為.DBT。1、常量 值不變的數(shù)據(jù)項(xiàng)。 數(shù)值型常量:5、2.345、-100。 字符型常量:“XUV”、“歡迎!”、Hello。 邏輯型常量:.T. 和 .F. 。 日期型常量和日期時(shí)間型常量:2008-11-11、2009-1-12 11:11am 。2、變量 可以變化,有名字的數(shù)據(jù)。 命名規(guī)則:變量名只能由組成。以字母或下劃線,長(zhǎng)度為1128個(gè)字符。不能使用VFP的保留字。每個(gè)漢字占2字符。 “A_XX” 、“_UU” 、“運(yùn)算結(jié)果”。 “7abc” 、“IF”、 “ELS

5、E” 、“A2”、“2” 、“8開(kāi)始” 。1、算術(shù)運(yùn)算符2、字符串運(yùn)算符3、日期時(shí)間運(yùn)算符4、關(guān)系運(yùn)算符5、邏輯運(yùn)算符 2+3 1+4 .AND. .NOT. 68運(yùn)算符名稱示例加減乘除乘方X*3, X100求余250%50=0表達(dá)式的書(shū)寫(xiě)規(guī)則: 每個(gè)符號(hào)占格,所有符號(hào)都必須排在同一橫線上,不能出現(xiàn)上標(biāo)或下標(biāo)。 例如:102寫(xiě)為102或10*2、3xy寫(xiě)為3*x*y、2x+5(y+z)寫(xiě)為2*(x+5*(y+z)、r2寫(xiě)為pi*r2。練習(xí):將下式寫(xiě)為VFP算術(shù)表達(dá)式。運(yùn)算符名稱說(shuō)明連接將字符型數(shù)據(jù)進(jìn)行連接空格移位連接兩字符串連接時(shí),前一數(shù)據(jù)尾部的空格移到后面數(shù)據(jù)的尾部。字符串表達(dá)式: “ab1

6、23”+”88xy” 結(jié)果為:“ab12388xy”。 “歡迎光臨”“謝謝惠顧!”結(jié)果為:“歡迎光臨謝謝惠顧!”。 “abc “+” 123 “+” xyz “結(jié)果為:”abc 123 xyz “。 “ABC “+”DEF”結(jié)果為:”ABCDEF ”。日期之間只能進(jìn)行加減運(yùn)算,有下面3種情況: (1) 日期相減,得到相差的天數(shù)。 (2) 日期加數(shù)值,得到新的日期。 (3) 日期減數(shù)值,得到以前某個(gè)日期。例如:2008/11/11 2008/11/1 結(jié)果為數(shù)值10。2008/11/11 + 5 結(jié)果為日期型數(shù)據(jù): 2008/11/16。2008/11/11 - 3 結(jié)果為日期型數(shù)據(jù): 2008

7、/11/8。運(yùn)算符運(yùn)算符名稱名稱示例示例110 值為:值為: .T.=3=、#、!=不等于不等于72+5 值為:值為:.F. $包含于包含于“ABC”$”ABCDE”值為:值為: .T.=等同于等同于 說(shuō)明:關(guān)系運(yùn)算符兩邊的表達(dá)式只能是數(shù)值型、字符串型、日期型,不能是邏輯型的表達(dá)式或值 。 字符型數(shù)據(jù)按其ASCII碼值進(jìn)行比較,ASCII碼大的字符所在的串值大。(ASCII碼用0-127的數(shù)字表示字母和一些符號(hào),其中(的ASCII碼) “=”表示精確匹配。例如,使用條件UPPER(NAME)=“SMITH”進(jìn)行查找時(shí),可以找到SMITHSON、SMITHERS、SMITH等串,而如果用“=”,

8、將得到SMITH的串。.NOT. 非 .AND. 與.OR. 或邏輯運(yùn)算真值表:ab.NOT. aa .AND. ba .OR. b.T.T.F.T.T.T.F.F.F.T.F.T.T.F.T.F.F.T.F.F.運(yùn)算符的優(yōu)先順序:優(yōu)先級(jí)降低算數(shù)運(yùn)算符的優(yōu)先級(jí)為( ) 或* *和/ % +和- 。關(guān)系運(yùn)算符: 、 1+4 .AND. .NOT. 65 .AND. .NOT. 682) 關(guān)系運(yùn)算:.F. .AND. .NOT. .T.3) 非運(yùn)算: .F. .AND. .F.4) 結(jié)果; .F.例:根據(jù)所給條件,寫(xiě)出例:根據(jù)所給條件,寫(xiě)出VFP邏輯表達(dá)式。邏輯表達(dá)式。(1) 一元二次方程ax2+

9、bx+c=0有實(shí)根的條件是: a0,并且b2-4ac0。結(jié)果為:a0 .AND. B2-4*a*c=0。 MAX(表達(dá)式1,表達(dá)式2,) 求各表達(dá)式中的最大值。 MIN( ) 求各表達(dá)式中最小值。 MOD(表達(dá)式1,表達(dá)式2) 求表達(dá)式1除以表達(dá)式2的余數(shù)。 ?BETWEEN(15,10,30) &結(jié)果顯示結(jié)果顯示 .T. score=80 ?IIF(score=90,”優(yōu)優(yōu)”,”合格合格”) &顯示:合格。顯示:合格。 LEN(表達(dá)式表達(dá)式) 求字符串表達(dá)式長(zhǎng)度。求字符串表達(dá)式長(zhǎng)度。 SUBSTR(表達(dá)式表達(dá)式 ,n,m ) 從字符串表達(dá)式中提取從從字符串表達(dá)式中提取從n開(kāi)始

10、的開(kāi)始的m個(gè)字符的字符串,若省略個(gè)字符的字符串,若省略m,則取,則取n開(kāi)始的所有字符串。開(kāi)始的所有字符串。 SUBSTR(“11/30/03”,7,2)=“03 LOWER(表達(dá)式) 將字符串表達(dá)式中的大寫(xiě)字母轉(zhuǎn)化為小寫(xiě)字母,其余不變。 UPPER(表達(dá)式) 與上相反。 DATE( ) 取系統(tǒng)當(dāng)前日期。 TIME( ) 取系統(tǒng)當(dāng)前時(shí)間。 DATETIME( ) YEAR(日期表達(dá)式) 取日期表達(dá)式的年份值,返回整數(shù)。 MONTH(日期表達(dá)式) 取日期表達(dá)式的月份值,返回整數(shù)。 DAY(日期表達(dá)式) 取日期表達(dá)式的月份值,返回整數(shù)。 STR(數(shù)值表達(dá)式) 轉(zhuǎn)換數(shù)值表達(dá)式為數(shù)字字符串。 CTOD(

11、表達(dá)式) 將字符串轉(zhuǎn)化為日期型。 DTOC(表達(dá)式) 將日期型表達(dá)式轉(zhuǎn)化為字符串。 86年出生的表達(dá)式: SUBSTR(DTOC(出生時(shí)間出生時(shí)間),7,2)=86 等價(jià)于:等價(jià)于: YEAR(出生時(shí)間出生時(shí)間)=1986 出生時(shí)間必須為日期型。出生時(shí)間必須為日期型。1、求3的10次方。2、求199除以5得的余數(shù)。3、 1995 + 年+ 8 + 月+ 日 結(jié)果為什么?4、 聞雞 起舞 + 枕戈 待旦 5、 聞雞 起舞 枕戈 待旦6、2008/11/11 - 3 結(jié)果為?7、3#9 結(jié)果為 ?(或、!=)8、菊$采菊東籬下 結(jié)果為?9、陶潛=陶 精確匹配,結(jié)果為?10、(18).AND.(28

12、).OR.(24) 12、求 a$bca .AND. (3!=5 .OR. .F.) 的值。13、ALLTRIM( 123 ) =?14、STR(表達(dá)式) 的作用?15、CTOD(表達(dá)式) 的作用?16、DTOC(表達(dá)式) 的作用?17、YEAR(CTOD(01/01/08) 的值為什么?18、MONTH(CTOD(11/01/86) 的值為什么?19、DATE()、TIME()、DATETIME() 的值為什么?VFP命令由命令動(dòng)詞(關(guān)鍵字)+短語(yǔ)。CREATE 數(shù)據(jù)庫(kù)文件名。USE SHARED EXCLUSIVE NOUPDATE 以共享方式打開(kāi),以獨(dú)占方式打開(kāi),以只讀方式打開(kāi)。以共享方

13、式打開(kāi),以獨(dú)占方式打開(kāi),以只讀方式打開(kāi)。VFP中有些中有些命令要求以命令要求以獨(dú)占獨(dú)占的方式打開(kāi)才能執(zhí)行,如的方式打開(kāi)才能執(zhí)行,如ALTER TABLE 、INDEX、INSERT、MODIFY STRUCTURE 、PACK等。等。對(duì)記錄進(jìn)行操作的命令:命令動(dòng)詞命令動(dòng)詞 FIELDS FOR OFF ( 表示可選,表示必選。)LIST | DISPLAY STRUCTURE &多出來(lái)的一個(gè)字節(jié)是存放刪除標(biāo)記多出來(lái)的一個(gè)字節(jié)是存放刪除標(biāo)記用的。用的。BROWSE &打開(kāi)表的瀏覽窗口打開(kāi)表的瀏覽窗口。LIST (列出當(dāng)前表中所有記錄項(xiàng))。命令:LIST &默認(rèn)范圍為ALL

14、LIST NEXT 3 &只對(duì)包含當(dāng)前記錄在內(nèi)的n 個(gè)記錄進(jìn)行操作。LIST RECORD 5 &只對(duì)第5條記錄進(jìn)行操作。Go 6 &跳轉(zhuǎn)到第6條記錄。LISTREST &從當(dāng)前記錄一直到文件尾。記錄范圍一般有種選擇:ALL: 對(duì)數(shù)據(jù)表文件的全部記錄進(jìn)行操作,省略時(shí),默認(rèn)為ALL。NEXT n: 對(duì)包含當(dāng)前記錄在內(nèi)的以下n個(gè)記錄操作。RECORD n : 只對(duì)第n個(gè)記錄操作。REST :從當(dāng)前位置開(kāi)始到文件尾。默認(rèn)的數(shù)據(jù)表記錄范圍:默認(rèn)的數(shù)據(jù)表記錄范圍:DELETENEXT 1 (當(dāng)前記錄)ALLDISPLAYRECALLREPLACE其它命令A(yù)LLDELETE

15、 & 刪除當(dāng)前記錄行。(不帶FOR語(yǔ)句)DISPLAY & 顯示當(dāng)前記錄。RECALL & 取消當(dāng)前記錄的刪除標(biāo)記DELETE FOR 性別 &(刪除所有性別為男的學(xué)生,僅打上刪除標(biāo)記,非物理刪除)。DISPLAY FOR 入學(xué)成績(jī)=480 & 顯示入學(xué)成績(jī)大于480的所有記錄。Go 2RECALL ALL & 取消當(dāng)前表中所有記錄的刪除標(biāo)記。后面可以跟字段名和表達(dá)式。LIST FIELDS 姓名,性別,出生時(shí)間,入學(xué)成績(jī) & 后跟字段名LIST FIELDS “姓名”+姓名,”性別”,性別FOR子句:LIST FOR 性別 .AND.

16、入學(xué)成績(jī)=480LIST FIELDS 姓名,入學(xué)成績(jī) FOR 性別 .AND. 入學(xué)成績(jī)=480LIST FIELDS “姓名”+姓名,”性別”,性別 FOR .NOT. 性別LIST ALL FIELDS 學(xué)號(hào),入學(xué)成績(jī) FOR 入學(xué)成績(jī)=460 .AND. 性別DISPLAY FOR 出生時(shí)間CTOD(“03/16/86”) FOR的作用是:在規(guī)定的中,按檢查全部記錄。即從第1條記錄開(kāi)始,滿足條件的就執(zhí)行該命令,不滿足條件就跳過(guò)去繼續(xù)搜索,直到最后一條記錄。若省略,則默認(rèn)為ALL。命令書(shū)寫(xiě)規(guī)則:命令書(shū)寫(xiě)規(guī)則:1)每條命令必須以一個(gè)命令動(dòng)詞開(kāi)頭。2).T. .F. 兩個(gè)邏輯值中的小數(shù)點(diǎn)與字

17、母間不能有空格。3)一個(gè)命令行的最大長(zhǎng)度是254個(gè)字符,空格數(shù)也包括在內(nèi)。4)如果一個(gè)命令太長(zhǎng),一行寫(xiě)不下,可以使用續(xù)行符“”。5)不區(qū)分大小寫(xiě)。6)命令動(dòng)詞和子句中的短語(yǔ)可以用其前4個(gè)字符縮寫(xiě)表示。如DISPLAY STRUCTURE 可簡(jiǎn)寫(xiě)為DISP STRU。7)不要用A到I之間的單個(gè)字母作為表名,因?yàn)樗鼈円驯槐A糇鲾?shù)據(jù)庫(kù)工作區(qū)的名稱。8)不要用VFP的保留字作文件名、字段名、變量名等。9)一行只能寫(xiě)一條命令,每條命令的結(jié)束標(biāo)志是回車(chē)鍵。10)數(shù)據(jù)庫(kù)文件后綴為數(shù)據(jù)庫(kù)文件后綴為.DBC、表文件名后綴為、表文件名后綴為.DBF、備注文件、備注文件.FPT。數(shù)據(jù)表的基本概念數(shù)據(jù)表的基本概念 數(shù)

18、據(jù)表: 一些有組織數(shù)據(jù)的集合,由行、列組成的二維表格。簡(jiǎn)稱表(Table)。一個(gè)數(shù)據(jù)庫(kù)包含一個(gè)或多個(gè)二維表,表表示現(xiàn)實(shí)世界的關(guān)系或?qū)嶓w,各個(gè)數(shù)據(jù)表之間可能存在某種關(guān)系。 字段:數(shù)據(jù)表中的每一列稱為一個(gè)字段,它對(duì)應(yīng)表格中的數(shù)據(jù)項(xiàng),每個(gè)數(shù)據(jù)項(xiàng)的名稱稱為字段名(屬性),如“年齡”、“性別”、“學(xué)號(hào)”、“入學(xué)時(shí)間”等都是字段名。 記錄:表中每一數(shù)據(jù)行成為一條記錄,每條記錄由許多字段組成,如“2006001、趙小霞、女、1987年6月12日、490、計(jì)算機(jī)、程家吉”。St.dbf數(shù)據(jù)表數(shù)據(jù)表啟動(dòng)啟動(dòng)VFP建立數(shù)據(jù)表建立數(shù)據(jù)表 可以在VFP中建立兩種表:數(shù)據(jù)表和自由表。數(shù)據(jù)表是數(shù)據(jù)庫(kù)的一部分,自由表可以獨(dú)

19、立存在于任何數(shù)據(jù)庫(kù)之外。數(shù)據(jù)庫(kù)文件后綴為.DBC、表文件名后綴為.DBF、備注文件.FPT。 1) 利用“表設(shè)計(jì)器”創(chuàng)建新表。 2) 追加記錄。 3) 使用命令創(chuàng)建新表 CREATE TABLE ( () ,() 字符型(C) 由字母(漢字)、數(shù)字、空格等任意字符串組成。每個(gè)字符占1字節(jié),漢字占2字節(jié)。長(zhǎng)度0-254。貨幣型(Y) 存儲(chǔ)與貨幣有關(guān)的數(shù)據(jù),如工資、價(jià)格等。日期型(D) 保存不帶時(shí)間的日期,存儲(chǔ)格式為“yyyymmdd”。字段寬度 字節(jié)。日期時(shí)間型(T) 包括年、月、日、時(shí)、分、秒。 邏輯型 用于存儲(chǔ)只有兩個(gè)值的數(shù)據(jù),存入的值只有(.T.)和(.F.)兩種狀態(tài),占 個(gè)字節(jié)。如婚否,

20、及格否等。數(shù)值型 用來(lái)存儲(chǔ)由數(shù)字、小數(shù)點(diǎn)和正負(fù)號(hào)組成的,可以進(jìn)行計(jì)算的數(shù)據(jù),如成績(jī)、重量、體積、訂貨數(shù)量等。整型 存放由數(shù)字和正負(fù)號(hào)構(gòu)成的整數(shù)型數(shù)據(jù)。其字段寬度為4字節(jié)。使用整型比使用其它類(lèi)型節(jié)省空間,運(yùn)算速度也快。備注型(M) 占用10個(gè)字節(jié)的空間,單獨(dú)存在于一個(gè)備注文件中,備注文件擴(kuò)展名為.DBT。CREATE TABLE St_1(學(xué)號(hào) c(7), 姓名 C(6), 性別 L(1), 出生時(shí)間 d(8),入學(xué)成績(jī) n(6,1), 所在系 c(10), 系負(fù)責(zé)人 c(8) )2、打開(kāi)表命令 USE St3、關(guān)閉表命令 USE4、添加記錄命令 APPEND瀏覽數(shù)據(jù)表 USE St (如果當(dāng)前

21、表不在如果當(dāng)前表不在默認(rèn)路徑默認(rèn)路徑下下,一定要加路徑一定要加路徑) BROWSE USE “d:vfpst.dbf” 顯示數(shù)據(jù)還可以使用LIST和DISPLAY命令。命令格式如下: LIST或DISPLAY FIELDS FOR OFF (DISPLAY若沒(méi)有FOR語(yǔ)句,則只顯示當(dāng)前行。若不指定FIELDS,則輸出所有字段。加上OFF,則顯示系統(tǒng)加上的記錄號(hào),反之,不顯示。)顯示所有數(shù)據(jù): LIST 或 DISPLAY ALL。顯示當(dāng)前記錄: DISPLAY不帶記錄號(hào)現(xiàn)實(shí)當(dāng)前記錄: DISP OFF顯示男同學(xué)的姓名和出生時(shí)間: DISPLAY 姓名,出生時(shí)間 FOR 性別 或 LIST 姓名

22、,出生時(shí)間 FOR 性別顯示入學(xué)成績(jī)?cè)?80分以上的女生的學(xué)號(hào)、姓名、性別、入學(xué)成績(jī)。 LIST OFF “學(xué)號(hào):”+學(xué)號(hào),姓名,性別,入學(xué)成績(jī) FOR .not. 性別 .and. 入學(xué)成績(jī)=480顯示女同學(xué)的姓名和年齡: DISP 姓名,year(date()-year(出生時(shí)間) FOR 性別:EDIT與CHANGE命令等價(jià)。例如: 修改當(dāng)前記錄 EDIT 修改第n條記錄 EDIT n 修改包括當(dāng)前記錄在內(nèi)的n條記錄:EDIT NEXT n列出列出8月份出生的女同學(xué)的姓名和出生時(shí)間月份出生的女同學(xué)的姓名和出生時(shí)間?列出年齡大于等于列出年齡大于等于20歲的學(xué)生紀(jì)錄歲的學(xué)生紀(jì)錄,要求不顯示記

23、錄號(hào)要求不顯示記錄號(hào)? 記錄指針的移動(dòng): 絕對(duì)定位: GO TOP、GO BOTTOM、GO 。 相對(duì)定位: SKIP 。 n0 下移、n0 上移、無(wú)n向下移動(dòng)一條記錄,n包含小數(shù),則四舍五入取整。 條件定位:LOCATE FOR條件范圍 按順序搜索表,直到找到滿足制定條件的第一個(gè)記錄,若無(wú)滿足條件的記錄,指針停在指定范圍的最后一條記錄。(所謂的“范圍”包括ALL、NEXT n、RECORD n、REST)若要繼續(xù)查找滿足條件的記錄,用CONTINUE(必須在LOCATE之后出現(xiàn))。定位到第1條記錄: GO TOP。定位到最后一條記錄:GO BOTTOM。下一個(gè): SKIP。上一個(gè): SKIP

24、-1。定位到第n條記錄: GO n 。當(dāng)前記錄的記錄號(hào)可用函數(shù) 返回。當(dāng)前表中記錄的總個(gè)數(shù)可用 函數(shù)返回。指向文件頭的函數(shù)和指向文件尾的函數(shù)。 由于大多數(shù)的操作都是針對(duì)表記錄的,那么就引入了一個(gè)概念:當(dāng)前記錄。剛打開(kāi)一個(gè)表時(shí),指針指向表的第一條記錄。第一條記錄前還有一個(gè)位置稱為文件頭,在最后一條記錄的后面有一個(gè)位置稱為文件尾。記錄指針記錄指針文件頭文件頭12n文件尾文件尾第第1條記錄條記錄第第2條記錄條記錄第第n條記錄條記錄 指針指向文件頭時(shí):函數(shù)指針指向文件頭時(shí):函數(shù)BOF( )的值為的值為 .T. 。當(dāng)指針指向文件尾。當(dāng)指針指向文件尾時(shí),文件尾函數(shù)時(shí),文件尾函數(shù)EOF( )值為真。如果打開(kāi)

25、的是一個(gè)空表,則兩函數(shù)同值為真。如果打開(kāi)的是一個(gè)空表,則兩函數(shù)同時(shí)為時(shí)為 .T. 。USE st?BOF(),EOF(),RECNO() &結(jié)果為 .F. .F. 1SKIP?BOF(),EOF(),RECNO() &結(jié)果為 .F. .F. 2GO TOP?BOF(),EOF(),RECNO() &結(jié)果為 .F. .F. 1SKIP-1?BOF(),EOF(),RECNO() &結(jié)果為 .T. .F. 1GO BOTTOMSKIP?BOF(),EOF(),RECNO() &結(jié)果為 .F. .T. 12 1、在“瀏覽”模式下修改記錄 2、在“編輯”模式下修

26、改記錄 EDIT 3、使用批替換命令 例:給女同學(xué)的“入學(xué)成績(jī)”加10分,將某數(shù)據(jù)表的總分字段設(shè)置為“語(yǔ)文”和“數(shù)學(xué)”的成績(jī)和。 命令如下: REPLACE ALL 入學(xué)成績(jī) WITH 入學(xué)成績(jī)+10 FOR 性別 REPLACE ALL 入學(xué)成績(jī) WITH 語(yǔ)文+數(shù)學(xué)將計(jì)算機(jī)系學(xué)生的成績(jī)加將計(jì)算機(jī)系學(xué)生的成績(jī)加10分分?將計(jì)算機(jī)系學(xué)生的系負(fù)責(zé)人改為將計(jì)算機(jī)系學(xué)生的系負(fù)責(zé)人改為”丁老師丁老師”? 批替換命令REPLACE可對(duì)字段內(nèi)容成批自動(dòng)地進(jìn)行修改(替換),而不必在編輯狀態(tài)下逐條修改。語(yǔ)法格式如下: REPLACE WITH , WITH FOR 說(shuō)明: 選項(xiàng)只能是ALL、NEXT、RECO

27、RD、REST4種。 若不選擇、FOR 子句,默認(rèn)為當(dāng)前記錄。 REPLACE 命令不重新定位記錄指針,因此在執(zhí)行該命令時(shí),必須先把記錄指針定位到要修改的那個(gè)記錄,如果沒(méi)有FOR條件限制,只更改當(dāng)前行。 如果要用REPLACE命令填充一個(gè)新記錄的數(shù)據(jù),那么這個(gè)記錄應(yīng)先用APPEND BLANK或INSERT BLANK命令生成一個(gè)空記錄,再填入數(shù)據(jù)。例如: APPEND BLANK REPLACE 學(xué)號(hào) WITH “2006200”,姓名 WITH “丁一”,性別WITH .T.,出生時(shí)間 WITH CTOD(“07/19/87”),入學(xué)成績(jī) WITH 505,所在系 WITH “計(jì)算機(jī)”,系

28、負(fù)責(zé)人 WITH “程家吉”將第將第2條記錄的名字改為條記錄的名字改為“朱勤朱勤”。例例:新表的創(chuàng)建和數(shù)據(jù)的添加:新表的創(chuàng)建和數(shù)據(jù)的添加:create table ScoreTable(學(xué)號(hào) c(8), 課程號(hào) c(3), 成績(jī) n(6,1)append blankreplace 學(xué)號(hào) with 2002001, 課程號(hào) with 003,成績(jī) with 99append blankreplace 學(xué)號(hào) with 2002200, 課程號(hào) with 001,成績(jī) with 80.5append blankreplace 學(xué)號(hào) with 2002020, 課程號(hào) with 002,成績(jī) with

29、 89list1、在“瀏覽”或“編輯”模式下刪除記錄 標(biāo)記刪除屬于邏輯刪除,不等同于物理刪除,要想真正刪除記錄(物理刪除),應(yīng)選擇“表”菜單”徹底刪除”。2、刪除滿足條件的記錄3、刪除的命令 DELETE FOR &該命令屬于邏輯刪除,刪除后記錄仍能夠被修改、復(fù)制、顯示等,只是前面多了刪除標(biāo)記“*”。 例:將所有記錄加上刪除標(biāo)記。 DELETE ALL 例:刪除所有入學(xué)成績(jī)小于等于470的學(xué)生記錄。 DELETE ALL FOR 入學(xué)成績(jī)=470 例:刪除所有中文系的女生記錄。(VFP 中,邏輯運(yùn)算符兩側(cè)的點(diǎn)號(hào)可以省略。) DELETE ALL FOR st.所在系=“中文” .and

30、. .not. 性別 RECALL FOR RECALL是DELETE的逆操作,作用是取消標(biāo)記,恢復(fù)成正常記錄。刪除出生時(shí)間在刪除出生時(shí)間在1986年及以前的學(xué)生信息?年及以前的學(xué)生信息? 刪除中文系的所有學(xué)生?刪除中文系的所有學(xué)生? 物理刪除所有男同學(xué)的信息?物理刪除所有男同學(xué)的信息? 將數(shù)據(jù)表中所有具有刪除標(biāo)記的記錄正式從表中刪除。 PACK 為物理刪除命令,一旦執(zhí)行,無(wú)法恢復(fù)。 ZAP 命令等價(jià)于DELETE ALL 與 PACK連用,但速度更快,一旦執(zhí)行,無(wú)法恢復(fù)。 例如:徹底刪除表中所有記錄。 DELETE ALL PACK7.2.6 修改數(shù)據(jù)表結(jié)構(gòu)修改數(shù)據(jù)表結(jié)構(gòu) 使用下面命令打開(kāi)表

31、設(shè)計(jì)器: MODIFY STRUCTURE 或 MODI STRU 。 通常我們輸入的數(shù)據(jù)是無(wú)序的,當(dāng)數(shù)據(jù)量很大,表中有成千上萬(wàn)條記錄時(shí),如果不按照某種順序排列,尋找數(shù)據(jù)必須從頭到尾搜索整個(gè)數(shù)據(jù)表,這樣效率就大大降低了。為了解決這個(gè)問(wèn)題,可以讓記錄按照某種順序(如數(shù)字大小或字符順序)來(lái)排列,在數(shù)據(jù)庫(kù)中該方法稱為索引 。有了索引,用戶可以快速查到所需的數(shù)據(jù)。 索引就是根據(jù)某字段值,創(chuàng)建一個(gè)有序的索引文件,并不實(shí)際調(diào)整數(shù)據(jù)表中每個(gè)記錄的位置,因而記錄在數(shù)據(jù)表中的位置不變,而索引文件中的項(xiàng)是有序的。索引相當(dāng)于基本表的目錄,如同有一本書(shū),它前面設(shè)有目錄,目錄包括摘要內(nèi)容和對(duì)應(yīng)頁(yè)碼,索引則相應(yīng)地含有和。

32、基于學(xué)號(hào)的索引基本表(無(wú)序)索引包括兩項(xiàng)內(nèi)容:索引包括兩項(xiàng)內(nèi)容:無(wú)序表無(wú)序表和和有序表有序表的查詢時(shí)間區(qū)別很大。的查詢時(shí)間區(qū)別很大。 在沒(méi)有索引的表上進(jìn)行數(shù)據(jù)查詢,顯然,是對(duì)無(wú)序表的查詢,需要花費(fèi)相當(dāng)多的時(shí)間,從第一行記錄開(kāi)始一行一行地進(jìn)行查詢,這種方法顯然效率很低。那么,如果是對(duì)于一個(gè)有序表,在查詢它的某一行記錄時(shí),就可采用查詢速度快的快速查找方法。 這樣,對(duì)于數(shù)據(jù)含量非常大的表,就必須提取一列或若干列,建立有序索引,才能大大加快數(shù)據(jù)的查詢速度。1nx折半查找法有序樹(shù) 主索引、候選索引、唯一索引、普通索引。 主索引強(qiáng)調(diào)“不允許出現(xiàn)重復(fù)值”,一個(gè)表只能有一個(gè)主索引。 候選索引也要求字段的唯一性

33、,可建立多個(gè)候選索引。 普通索引允許字段中出現(xiàn)重復(fù)值,可建立多個(gè)普通索引。 獨(dú)立索引后綴為 .IDX,復(fù)合索引后綴為 .CDX。 表設(shè)計(jì)器建立 命令建立 在VFP中,有時(shí)需要臨時(shí)建立一些普通索引或唯一索引,可以用命令來(lái)建立,語(yǔ)法如下: INDEX ON TO FOR 注意:組合索引(多列)要將非字符串類(lèi)型的數(shù)據(jù)轉(zhuǎn)化為字符串?dāng)?shù)據(jù),然后按照主關(guān)鍵字在前,次關(guān)鍵字在后的次序用“+”號(hào)連接在一起。 例如:要按語(yǔ)文、數(shù)學(xué)的順序?qū)τ涗浗⒔M合索引,則各關(guān)鍵字轉(zhuǎn)化為字符后用“+”連接。索引表達(dá)式為:STR(語(yǔ)文,5,1)+STR(數(shù)學(xué),5,1) 如果用多個(gè)數(shù)值型字段建立一個(gè)索引表達(dá)式,索引則按照表達(dá)式的值進(jìn)

34、行排序。STR(語(yǔ)文,5,1)+STR(數(shù)學(xué),5,1)與 語(yǔ)文+數(shù)學(xué)這兩個(gè)索引含義不同,前者建立有主次關(guān)系的組合索引,后者按照兩個(gè)數(shù)值和的值進(jìn)行排序。 若選用FOR子句,則只有符合條件的記錄才被索引。這樣,既縮短了索引建立時(shí)間,又提高了FIND或SEEK命令的檢索速度。索引默認(rèn)按升序排列,執(zhí)行創(chuàng)建命令后,索引就被打開(kāi),其記錄指針指向邏輯首記錄(GO TOP處)。 幾個(gè)創(chuàng)建普通索引的命令: INDEX ON 學(xué)號(hào) TO xh LIST INDEX ON -入學(xué)成績(jī) TO cj LIST INDEX ON 姓名 TO xm LIST 篩選年齡在19歲以上的記錄:(條件為YEAR(DATE( )-Y

35、EAR(出生時(shí)間)19)。 INDEX ON 學(xué)號(hào) to xh for year(date()-year(出生時(shí)間)=22 LIST 使用普通索引、候選索引或主索引,可以進(jìn)行記錄排序,以便提高顯示、查詢或打印的速度。 例:在已經(jīng)建立的索引文件的基礎(chǔ)上,查找姓名為“李才”和學(xué)號(hào)為“2006011”的記錄。 SET ORDER TO xm FIND 李才 DISP SET ORDER TO xh FIND 2006011 DISP FIND 2006001 DISP 注意:使用SET ORDER命令,可以改變表單中記錄的順序。格式為:SET ORDER TO (索引名為已存在的索引)。FIND字符

36、查找命令,查找關(guān)鍵字與所給字符串相匹配的第一個(gè)記錄。若找到,指針指向該記錄,否則指向文件尾。 FIND | : 例:以性別為關(guān)鍵字建立索引,并查找第一個(gè)男生記錄和第一個(gè)女生記錄. INDEX ON 性別 TO xb SET ORDER TO xb LIST SEEK .T. DISP SEEK .F. DISP SEEK 命令查找關(guān)鍵字與所給字符串相匹配的第一個(gè)記錄。若找到,指針指向該記錄,否則指向文件尾,給出信息“沒(méi)找到”。語(yǔ)法格式為: SEEK 刪除所有索引: 刪除索引:DELETE TAG 索引名。說(shuō)明:只能找出符合條件的第一條記錄,該命令可以查找字符、數(shù)值、日期和邏輯型索引關(guān)鍵字。若為

37、字符串,則必須用界限符號(hào)括起來(lái)(,“”,)。 若是找到了符合條件的首記錄,則函數(shù)FOUND( )的值為 .T. ,否則為 .F. 。例:在數(shù)據(jù)表中依次查找86年出生的學(xué)生記錄。 USE ST LIST LOCATE FOR SUBSTR(DTOC(出生時(shí)間),7,2)=“86” DISP CONTINUE DISP CONTINUE DISP將記錄指針定位在第一條中文系學(xué)生紀(jì)錄上?將記錄指針定位在第一條中文系學(xué)生紀(jì)錄上?將記錄指針定位在第一條成績(jī)大于將記錄指針定位在第一條成績(jī)大于500分的學(xué)生分的學(xué)生紀(jì)錄上?紀(jì)錄上? LOCATE命令是在不建立索引的條件下,查找當(dāng)前數(shù)據(jù)表中滿足條件的。語(yǔ)法格式

38、為: LOCATE FOR 建立數(shù)據(jù)表后,常常要對(duì)數(shù)據(jù)表中數(shù)值型字段的記錄進(jìn)行統(tǒng)計(jì)。 例:分別統(tǒng)計(jì)女生人數(shù)和入學(xué)成績(jī)480分的學(xué)生記錄。 USE st LIST COUNT FOR .NOT. 性別 TO n COUNT FOR 入學(xué)成績(jī)=480 TO x ? n,x統(tǒng)計(jì)函數(shù)使用COUNT命令,格式為: COUNT FOR TO 例:求女生入學(xué)成績(jī)之和。 SUM 入學(xué)成績(jī) FOR .NOT. 性別 TO nu 例:求86年出生的學(xué)生的平均入學(xué)成績(jī),以及中文系男學(xué)生的平均入學(xué)成績(jī)。 AVERAGE 入學(xué)成績(jī) FOR SUBSTR(DTOC(出生時(shí)間),7,2)=“86” TO pjcj AVER

39、AGE 入學(xué)成績(jī) FOR SUBSTR(DTOC(出生時(shí)間),7,2)=“86” 另外一種寫(xiě)法: AVERAGE 入學(xué)成績(jī)?nèi)雽W(xué)成績(jī) FOR YEAR(出生時(shí)間出生時(shí)間)=1986 LIST YEAR(出生時(shí)間出生時(shí)間) &返回返回4位數(shù)整數(shù)。位數(shù)整數(shù)。 LIST FOR YEAR(出生時(shí)間出生時(shí)間)=1987 AVERAGE FOR 所在系“中文”TO pjszx ? “86年出生的學(xué)生的平均入學(xué)成績(jī)?yōu)椋骸?str(pjcj) ? “中文系學(xué)生的平均入學(xué)成績(jī)?yōu)椋骸?+str(pjszx) AVERAGE命令格式為: AVERAGE FOR TO 補(bǔ)充內(nèi)容補(bǔ)充內(nèi)容: 如果是數(shù)字,可直接在

40、前面加“-”號(hào)。如果是字符串,則格式如下: INDEX ON 出生時(shí)間出生時(shí)間 TAG sj DESC CALCULATE SUM(入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)),MAX(入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)),MIN(入學(xué)成入學(xué)成績(jī)績(jī)),AVG(入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)) CALCULATE MAX(入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)) TO maxcj 命令如下:COPY TO FIELDS FOR COPY TO FIELDS 姓名,補(bǔ)助,出生日期 FOR 專(zhuān)業(yè)=計(jì)算機(jī)對(duì)計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生按年齡的降序排列,生產(chǎn)新表對(duì)計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生按年齡的降序排列,生產(chǎn)新表table1.dbf,且只包含姓且只包含姓名、性別、出生時(shí)間名、性別、出生時(shí)間3字段?字段?將將1986年出生的同學(xué)按分?jǐn)?shù)升序排列,并生成新表年出生的同學(xué)按

溫馨提示

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