《數(shù)據(jù)庫應(yīng)用基礎(chǔ)》PPT課件.ppt

上傳人:w****2 文檔編號:15613413 上傳時間:2020-08-24 格式:PPT 頁數(shù):72 大?。?.78MB
收藏 版權(quán)申訴 舉報 下載
《數(shù)據(jù)庫應(yīng)用基礎(chǔ)》PPT課件.ppt_第1頁
第1頁 / 共72頁
《數(shù)據(jù)庫應(yīng)用基礎(chǔ)》PPT課件.ppt_第2頁
第2頁 / 共72頁
《數(shù)據(jù)庫應(yīng)用基礎(chǔ)》PPT課件.ppt_第3頁
第3頁 / 共72頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《數(shù)據(jù)庫應(yīng)用基礎(chǔ)》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫應(yīng)用基礎(chǔ)》PPT課件.ppt(72頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、第7章 數(shù)據(jù)庫應(yīng)用基礎(chǔ)VFP,7.1 數(shù)據(jù)庫的基本概念,日常生活工作中,我們每天都要接觸大量的信息,比如學(xué)生 成績、人事檔案、工資表、貨物清單等。那么,它們都可以表示 為數(shù)據(jù)的形式,這么多的數(shù)據(jù),單靠紙、筆、算盤進行統(tǒng)計幾乎 是不可能的,計算機的出現(xiàn)解決了這個復(fù)雜的問題,它將大批量 的數(shù)據(jù)信息存儲在大容量磁盤上,并方便地進行管理。那么,這 些數(shù)據(jù)是怎樣存儲的,怎樣被訪問、修改和刪除呢?這就用到了 數(shù)據(jù)庫技術(shù)。數(shù)據(jù)庫技術(shù)將各種各樣的數(shù)據(jù)分門別類地存儲起 來,用戶可以很容易地查看、管理、操作這些數(shù)據(jù)。,數(shù)據(jù)不僅僅是文本,多媒體數(shù)據(jù)庫的發(fā)展可以讓數(shù)據(jù)是圖 片、聲音、視頻等內(nèi)容。 7.1.1 數(shù)據(jù)庫系

2、統(tǒng)的特點、數(shù)據(jù)模型 7.1.1.1 數(shù)據(jù)庫系統(tǒng)的特點 a. 數(shù)據(jù)的共享性 b. 數(shù)據(jù)的獨立性 c. 數(shù)據(jù)的完整性 d. 數(shù)據(jù)的集中性 7.1.1.2 數(shù)據(jù)模型,1、層次數(shù)據(jù)模型,系名 系號 系主任,專業(yè)號專業(yè)名,教師號 姓名 職稱,學(xué)號 姓名 性別 年齡,課程號 課程名 學(xué)分,系教務(wù)管理層次模型,2、網(wǎng)狀數(shù)據(jù)模型,3、關(guān)系數(shù)據(jù)模型 關(guān)系模型中每個關(guān)系對應(yīng)一張二維表,它由一些行和列組 成。關(guān)系模型中,實體和實體之間的聯(lián)系都使用關(guān)系(二維表) 來表示的。關(guān)系模型結(jié)構(gòu)單一、操作方便,容易被用戶接收,且 有堅實的數(shù)學(xué)理論基礎(chǔ),因而得到了廣泛的應(yīng)用,成為目前最流 行的一種數(shù)據(jù)模型。當(dāng)前的一些數(shù)據(jù)庫,從O

3、racle到SQL Server,以及Access和VFP,都毫無例外地采用了關(guān)系模型。,7.1.2 了解數(shù)據(jù)類型1、字符型(C) 由字母(漢字)、數(shù)字、空格等任意字符串組成。每個字符占1字節(jié),漢字占2字節(jié)。長度0-254。 2、貨幣型(Y) 存儲與貨幣有關(guān)的數(shù)據(jù),如工資、價格等。 3、日期型(D) 保存不帶時間的日期,存儲格式為“yyyymmdd”。字段寬度8字節(jié)。 4、日期時間型(T) 包括年、月、日、時、分、秒。,5、邏輯型(L) 用于存儲只有兩個值的數(shù)據(jù),存入的值只有(.T.)和(.F.)兩種狀態(tài),占一個字節(jié)。如婚否,及格否等。 6、數(shù)值型(N) 用來存儲由數(shù)字、小數(shù)點和正負(fù)號組成的,

4、可以進行計算的數(shù)據(jù),如成績、重量、體積、訂貨數(shù)量等。 7、雙精度型(B) 存儲高精度的試驗數(shù)據(jù)。 8、浮點型(F) 9、整型(I) 存放由數(shù)字和正負(fù)號構(gòu)成的整數(shù)型數(shù)據(jù)。其字段寬度為4字節(jié)。使用整型比使用其它類型節(jié)省空間,運算速度也快。,10、備注型(M) 占用10個字節(jié)的空間,單獨存在于一個備注文件中,備注文件擴展名為.DBT。 7.1.3 掌握VFP中常量與變量的概念1、常量 值不變的數(shù)據(jù)項。 數(shù)值型常量:5、2.345、-100。 字符型常量:“XUV”、“歡迎!”、Hello。 邏輯型常量:.T. 和 .F. 。 日期型常量和日期時間型常量:2008-11-11、2009-1-12 11

5、:11am 。,2、變量 可以變化,有名字的數(shù)據(jù)。 命名規(guī)則:變量名只能由字母、數(shù)字、下劃線組成。以字母或 下劃線開頭,長度為1128個字符。不能使用VFP的保留字。每個漢 字占2字符。 “A_XX” 、“_UU” 、“運算結(jié)果”。 “7abc” 、“IF”、 “ELSE” 、“A2”、“2” 、“8開始” 。,7.1.4 掌握VFP表達(dá)式的使用 1、算術(shù)運算符 2、字符串運算符 3、日期時間運算符 4、關(guān)系運算符 5、邏輯運算符,求值: 2+3 1+4 .AND. .NOT. 68,算數(shù)運算符的優(yōu)先級為( ) 或* *和/ % +和- 。,1、算術(shù)運算符,表達(dá)式的書寫規(guī)則: 每個符號占格,所

6、有符號都必須排在同一橫線上,不能出現(xiàn)上標(biāo)或下標(biāo)。 例如:102寫為102或10*2、3xy寫為3*x*y、2x+5(y+z)寫為2*(x+5*(y+z)、r2寫為pi()*r2。 練習(xí):將下式寫為VFP算術(shù)表達(dá)式。 2、字符串運算符,字符串表達(dá)式: “ab123”+”88xy” 結(jié)果為:“ab12388xy”。 “歡迎光臨”“謝謝惠顧!”結(jié)果為:“歡迎光臨謝謝惠顧!”。 “abc “+” 123 “+” xyz “結(jié)果為:”abc 123 xyz “。 “ABC “+”DEF”結(jié)果為:”ABCDEF ”。 3、日期時間運算符 日期之間只能進行加減運算,有下面3種情況: (1) 日期相減,得到相

7、差的天數(shù)。 (2) 日期加數(shù)值,得到新的日期。 (3) 日期減數(shù)值,得到以前某個日期。,例如: 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/11/8。 4、關(guān)系運算符,說明:關(guān)系運算符兩邊的表達(dá)式只能是數(shù)值型、字符串型、 日期型,不能是邏輯型的表達(dá)式或值 。 字符型數(shù)據(jù)按其ASCII碼值進行比較,ASCII碼大的字符所在 的串值大。(ASCII碼用0-127的數(shù)字表示字母和一些符號,其中 空格(的ASCII碼)0129ABZabcz) “=”表示

8、精確匹配。例如,使用條件 UPPER(NAME)=“SMITH”進行查找時,可以找到SMITHSON、 SMITHERS、SMITH等串,而如果用“=”,將得到精確匹配 SMITH的串。,5、邏輯運算符 .NOT. 非 AND. 與.OR. 或,邏輯運算真值表:,運算符的優(yōu)先順序:,算術(shù)運算符,關(guān)系運算符,邏輯運算符,優(yōu)先級降低,算數(shù)運算符的優(yōu)先級為( ) 或* *和/ % +和- 。關(guān)系運算符: 、=、#、$、=。邏輯運算符:.NOT. 、.AND. 、.OR. 。,例7-1:寫出VFP表達(dá)式2+3 1+4 .AND. .NOT. 65 .AND. .NOT. 60 .AND. B2-4*a

9、*c=0。,閏年的條件是:年號(year)能被4整除,但不能被100整除;或者能被400整除。 結(jié)果為:(y%4=0 .AND. Y%1000) .OR. (y%400=0) 7.1.5 VFP常用函數(shù) 1、數(shù)學(xué)函數(shù) MAX(表達(dá)式1,表達(dá)式2,) 求各表達(dá)式中的最大值。 MIN( ) 求各表達(dá)式中最小值。 MOD(表達(dá)式1,表達(dá)式2) 求表達(dá)式1除以表達(dá)式2的余數(shù)。 ?BETWEEN(15,10,30) &結(jié)果顯示 .T. score=80 ?IIF(score=90,”優(yōu)”,”合格”) &顯示:合格。 2、字符串函數(shù) LEN(表達(dá)式) 求字符串表達(dá)式長度。 SUBSTR(表達(dá)式 ,n,m

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

11、達(dá)式) 轉(zhuǎn)換數(shù)值表達(dá)式為數(shù)字字符串。 CTOD(表達(dá)式) 將字符串轉(zhuǎn)化為日期型。 DTOC(表達(dá)式) 將日期型表達(dá)式轉(zhuǎn)化為字符串。 86年出生的表達(dá)式: SUBSTR(DTOC(出生時間),7,2)=86 等價于: YEAR(出生時間)=1986 出生時間必須為日期型。,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、(1

12、8).AND.(24),習(xí)題:,11、(18).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() 的值為什么?,7.1.6 VFP命令的語法 VFP命令由命令動詞(關(guān)鍵字)+短語。 CREATE 數(shù)據(jù)庫文件名。 USE SHARED

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

14、記錄進行操作。 LIST RECORD 5 &只對第5條記錄進行操作。 Go 6 &跳轉(zhuǎn)到第6條記錄。 LISTREST &從當(dāng)前記錄一直到文件尾。 范圍子句的說明: 記錄范圍一般有種選擇: ALL: 對數(shù)據(jù)表文件的全部記錄進行操作,省略時,默認(rèn)為ALL。 NEXT n: 對包含當(dāng)前記錄在內(nèi)的以下n個記錄操作。 RECORD n : 只對第n個記錄操作。 REST :從當(dāng)前位置開始到文件尾。,默認(rèn)的數(shù)據(jù)表記錄范圍:,DELETE & 刪除當(dāng)前記錄行。(不帶FOR語句) DISPLAY & 顯示當(dāng)前記錄。 RECALL & 取消當(dāng)前記錄的刪除標(biāo)記 DELETE FOR 性別 &(刪除所有性別為男

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

16、 LIST ALL FIELDS 學(xué)號,入學(xué)成績 FOR 入學(xué)成績=460 .AND. 性別 DISPLAY FOR 出生時間的作用是:在規(guī)定的中,按檢查全部記錄。即從第1條記錄開始,滿足條件的就執(zhí)行該命令,不滿足條件就跳過去繼續(xù)搜索,直到最后一條記錄。若省略,則默認(rèn)為ALL。,命令書寫規(guī)則: 1)每條命令必須以一個命令動詞開頭。 2).T. .F. 兩個邏輯值中的小數(shù)點與字母間不能有空格。 3)一個命令行的最大長度是254個字符,空格數(shù)也包括在內(nèi)。 4)如果一個命令太長,一行寫不下,可以使用續(xù)行符“;”。 5)不區(qū)分大小寫。 6)命令動詞和子句中的短語可以用其前4個字符縮寫表示。如DISPL

17、AY STRUCTURE 可簡寫為DISP STRU。 7)不要用A到I之間的單個字母作為表名,因為它們已被保留作數(shù)據(jù)庫工作區(qū)的名稱。 8)不要用VFP的保留字作文件名、字段名、變量名等。 9)一行只能寫一條命令,每條命令的結(jié)束標(biāo)志是回車鍵。 10)數(shù)據(jù)庫文件后綴為.DBC、表文件名后綴為.DBF、備注文件.FPT。,7.2 VFP數(shù)據(jù)表 7.2.1 數(shù)據(jù)表的基本概念 數(shù)據(jù)表: 一些有組織數(shù)據(jù)的集合,由行、列組成的二維表格。簡稱表 (Table)。一個數(shù)據(jù)庫包含一個或多個二維表,表表示現(xiàn)實世界的關(guān)系 或?qū)嶓w,各個數(shù)據(jù)表之間可能存在某種關(guān)系。 字段:數(shù)據(jù)表中的每一列稱為一個字段,它對應(yīng)表格中的數(shù)

18、據(jù)項, 每個數(shù)據(jù)項的名稱稱為字段名(屬性),如“年齡”、“性別”、“學(xué)號”、“入 學(xué)時間”等都是字段名。 記錄:表中每一數(shù)據(jù)行成為一條記錄,每條記錄由許多字段組成, 如“2006001、趙小霞、女、1987年6月12日、490、計算機、程家吉”。,St.dbf數(shù)據(jù)表,7.2.2 啟動VFP 7.2.3 建立數(shù)據(jù)表 可以在VFP中建立兩種表:數(shù)據(jù)表和自由表。數(shù)據(jù)表是數(shù)據(jù)庫的一部分,自由表可以獨立存在于任何數(shù)據(jù)庫之外。數(shù)據(jù)庫文件后綴為.DBC、表文件名后綴為.DBF、備注文件.FPT。 1) 利用“表設(shè)計器”創(chuàng)建新表。 2) 追加記錄。 3) 使用命令創(chuàng)建新表 CREATE TABLE ( ()

19、,() ,字符型(C) 由字母(漢字)、數(shù)字、空格等任意字符串組成。每個字符占1字節(jié),漢字占2字節(jié)。長度0-254。 貨幣型(Y) 存儲與貨幣有關(guān)的數(shù)據(jù),如工資、價格等。 日期型(D) 保存不帶時間的日期,存儲格式為“yyyymmdd”。字段寬度8字節(jié)。 日期時間型(T) 包括年、月、日、時、分、秒。 邏輯型(L) 用于存儲只有兩個值的數(shù)據(jù),存入的值只有(.T.)和(.F.)兩種狀態(tài),占1個字節(jié)。如婚否,及格否等。,數(shù)值型(N) 用來存儲由數(shù)字、小數(shù)點和正負(fù)號組成的,可以進行計算的數(shù)據(jù),如成績、重量、體積、訂貨數(shù)量等。 整型(I) 存放由數(shù)字和正負(fù)號構(gòu)成的整數(shù)型數(shù)據(jù)。其字段寬度為4字節(jié)。使用整

20、型比使用其它類型節(jié)省空間,運算速度也快。 備注型(M) 占用10個字節(jié)的空間,單獨存在于一個備注文件中,備注文件擴展名為.DBT。 1、創(chuàng)建新表命令 CREATE TABLE St_1(學(xué)號 c(7), 姓名 C(6), 性別 L(1), 出生時間 d(8),入學(xué)成績 n(6,1), 所在系 c(10), 系負(fù)責(zé)人 c(8) ),2、打開表命令 USE St 3、關(guān)閉表命令 USE 4、添加記錄命令 APPEND 7.2.4 瀏覽數(shù)據(jù)表 USE St (如果當(dāng)前表不在默認(rèn)路徑下,一定要加路徑) BROWSE USE “d:vfpst.dbf” 顯示數(shù)據(jù)還可以使用LIST和DISPLAY命令。命

21、令格式如下: LIST或DISPLAY FIELDS FOR OFF (DISPLAY若沒有FOR語句,則只顯示當(dāng)前行。若不指定FIELDS,則輸出所有字段。加上OFF,則顯示系統(tǒng)加上的記錄號,反之,不顯示。),顯示所有數(shù)據(jù): LIST 或 DISPLAY ALL。 顯示當(dāng)前記錄: DISPLAY 不帶記錄號現(xiàn)實當(dāng)前記錄: DISP OFF 顯示男同學(xué)的姓名和出生時間: DISPLAY 姓名,出生時間 FOR 性別 或 LIST 姓名,出生時間 FOR 性別,顯示入學(xué)成績在480分以上的女生的學(xué)號、姓名、性別、入學(xué)成績。 LIST OFF “學(xué)號:”+學(xué)號,姓名,性別,入學(xué)成績 FOR .no

22、t. 性別 .and. 入學(xué)成績=480 顯示女同學(xué)的姓名和年齡: DISP 姓名,year(date()-year(出生時間) FOR 性別 編輯模式:EDIT與CHANGE命令等價。 例如: 修改當(dāng)前記錄 EDIT 修改第n條記錄 EDIT n 修改包括當(dāng)前記錄在內(nèi)的n條記錄:EDIT NEXT n,列出8月份出生的女同學(xué)的姓名和出生時間? 列出年齡大于等于20歲的學(xué)生紀(jì)錄,要求不顯示記錄號?,記錄指針的移動: 絕對定位: GO TOP、GO BOTTOM、GO 。 相對定位: SKIP 。 n0 下移、n0 上移、無n向下移動一條記錄,n包含小數(shù),則四舍五入取整。 條件定位:LOCATE

23、 FOR條件范圍 按順序搜索表,直到找到滿足制定條件的第一個記錄,若無滿 足條件的記錄,指針停在指定范圍的最后一條記錄。(所謂的“范圍”包 括ALL、NEXT n、RECORD n、REST)若要繼續(xù)查找滿足條件的記 錄,用CONTINUE(必須在LOCATE之后出現(xiàn))。,指針的定位: 定位到第1條記錄: GO TOP。 定位到最后一條記錄:GO BOTTOM。 下一個: SKIP。 上一個: SKIP-1。 定位到第n條記錄: GO n 。 當(dāng)前記錄的記錄號可用函數(shù) RECNO( ) 返回。 當(dāng)前表中記錄的總個數(shù)可用RECCOUNT( ) 函數(shù)返回。,指向文件頭的BOF( )函數(shù)和指向文件尾

24、的EOF( )函數(shù)。 由于大多數(shù)的操作都是針對表記錄的,那么就引入了一個概念: 當(dāng)前記錄。剛打開一個表時,指針指向表的第一條記錄。第一條記錄前 還有一個位置稱為文件頭,在最后一條記錄的后面有一個位置稱為文件 尾。,記錄指針,文件頭,1,2,n,文件尾,第1條記錄,第2條記錄,第n條記錄,指針指向文件頭時:函數(shù)BOF( )的值為 .T. 。當(dāng)指針指向文件尾 時,文件尾函數(shù)EOF( )值為真。如果打開的是一個空表,則兩函數(shù)同 時為 .T. 。,USE st ?BOF(),EOF(),RECNO() &結(jié)果為 .F. .F. 1 SKIP ?BOF(),EOF(),RECNO() &結(jié)果為 .F.

25、.F. 2 GO TOP ?BOF(),EOF(),RECNO() &結(jié)果為 .F. .F. 1 SKIP-1 ?BOF(),EOF(),RECNO() &結(jié)果為 .T. .F. 1 GO BOTTOM SKIP ?BOF(),EOF(),RECNO() &結(jié)果為 .F. .T. 12,7.2.5 編輯表中的數(shù)據(jù) 1、在“瀏覽”模式下修改記錄 2、在“編輯”模式下修改記錄 EDIT 3、使用批替換命令 例:給女同學(xué)的“入學(xué)成績”加10分,將某數(shù)據(jù)表的總分字段設(shè) 置為“語文”和“數(shù)學(xué)”的成績和。 命令如下: REPLACE ALL 入學(xué)成績 WITH 入學(xué)成績+10 FOR 性別 REPLACE

26、 ALL 入學(xué)成績 WITH 語文+數(shù)學(xué),將計算機系學(xué)生的成績加10分? 將計算機系學(xué)生的系負(fù)責(zé)人改為”丁老師”?,批替換命令REPLACE可對字段內(nèi)容成批自動地進行修改(替 換),而不必在編輯狀態(tài)下逐條修改。語法格式如下: REPLACE WITH , WITH FOR 說明: 選項只能是ALL、NEXT、RECORD、REST4種。 若不選擇、FOR 子句,默認(rèn)為當(dāng)前記錄。,REPLACE 命令不重新定位記錄指針,因此在執(zhí)行該命令時,必 須先把記錄指針定位到要修改的那個記錄,如果沒有FOR條件限制,只更改當(dāng)前行。 如果要用REPLACE命令填充一個新記錄的數(shù)據(jù),那么這個記 錄應(yīng)先用APPE

27、ND BLANK或INSERT BLANK命令生成一個空記 錄,再填入數(shù)據(jù)。例如: APPEND BLANK REPLACE 學(xué)號 WITH “2006200”,姓名 WITH “丁一”,性別 WITH .T.,出生時間 WITH CTOD(“07/19/87”),入學(xué)成績 WITH 505,所在系 WITH “計算機”,系負(fù)責(zé)人 WITH “程家吉”,將第2條記錄的名字改為“朱勤”。,例:新表的創(chuàng)建和數(shù)據(jù)的添加: create table ScoreTable(學(xué)號 c(8), 課程號 c(3), 成績 n(6,1) append blank replace 學(xué)號 with 2002001,

28、 課程號 with 003,成績 with 99 append blank replace 學(xué)號 with 2002200, 課程號 with 001,成績 with 80.5 append blank replace 學(xué)號 with 2002020, 課程號 with 002,成績 with 89 list,刪除記錄: 1、在“瀏覽”或“編輯”模式下刪除記錄 標(biāo)記刪除屬于邏輯刪除,不等同于物理刪除,要想真正刪除記錄 (物理刪除),應(yīng)選擇“表”菜單”徹底刪除”。 2、刪除滿足條件的記錄 3、刪除的命令 DELETE FOR &該命令屬于邏輯刪除, 刪除后記錄仍能夠被修改、復(fù)制、顯示等,只是前面

29、多了刪除標(biāo)記“*”。 例:將所有記錄加上刪除標(biāo)記。 DELETE ALL,例:刪除所有入學(xué)成績小于等于470的學(xué)生記錄。 DELETE ALL FOR 入學(xué)成績 FOR RECALL是DELETE的逆操作,作用是取消標(biāo)記,恢復(fù)成正常記錄。,刪除出生時間在1986年及以前的學(xué)生信息? 刪除中文系的所有學(xué)生? 物理刪除所有男同學(xué)的信息?,物理刪除記錄命令 將數(shù)據(jù)表中所有具有刪除標(biāo)記的記錄正式從表中刪除。 PACK 為物理刪除命令,一旦執(zhí)行,無法恢復(fù)。 物理刪除所有記錄命令 ZAP 命令等價于DELETE ALL 與 PACK連用,但速度更快,一旦執(zhí)行,無法恢復(fù)。 例如:徹底刪除表中所有記錄。 DE

30、LETE ALL PACK,7.2.6 修改數(shù)據(jù)表結(jié)構(gòu) 使用下面命令打開表設(shè)計器: MODIFY STRUCTURE 或 MODI STRU 。,7.3 數(shù)據(jù)表的索引、查詢和統(tǒng)計 通常我們輸入的數(shù)據(jù)是無序的,當(dāng)數(shù)據(jù)量很大,表中有成千上萬條 記錄時,如果不按照某種順序排列,尋找數(shù)據(jù)必須從頭到尾搜索整個數(shù) 據(jù)表,這樣效率就大大降低了。為了解決這個問題,可以讓記錄按照某 種順序(如數(shù)字大小或字符順序)來排列,在數(shù)據(jù)庫中該方法稱為索 引 。有了索引,用戶可以快速查到所需的數(shù)據(jù)。 1 、 索引的概念 索引就是根據(jù)某字段值,創(chuàng)建一個有序的索引文件,并不實際調(diào)整 數(shù)據(jù)表中每個記錄的位置,因而記錄在數(shù)據(jù)表中的

31、位置不變,而索引文 件中的項是有序的。索引相當(dāng)于基本表的目錄,如同有一本書,它前面 設(shè)有目錄,目錄包括摘要內(nèi)容和對應(yīng)頁碼,索引則相應(yīng)地含有索引項和 元組地址。,基于學(xué)號的索引,基本表(無序),索引包括兩項內(nèi)容:,索引項 元組地址,無序表和有序表的查詢時間區(qū)別很大。,在沒有索引的表上進行數(shù)據(jù)查詢,顯然,是對無序表的查詢,需要 花費相當(dāng)多的時間,從第一行記錄開始一行一行地進行查詢,這種方法 顯然效率很低。那么,如果是對于一個有序表,在查詢它的某一行記錄 時,就可采用查詢速度快的快速查找方法。 這樣,對于數(shù)據(jù)含量非常大的表,就必須提取一列或若干列,建立 有序索引,才能大大加快數(shù)據(jù)的查詢速度。,1,n

32、,x,折半查找法,有序樹,2、索引的類別 主索引、候選索引、唯一索引、普通索引。 主索引強調(diào)“不允許出現(xiàn)重復(fù)值”,一個表只能有一個主索引。 候選索引也要求字段的唯一性,可建立多個候選索引。 普通索引允許字段中出現(xiàn)重復(fù)值,可建立多個普通索引。 獨立索引后綴為 .IDX,復(fù)合索引后綴為 .CDX。 3、建立索引 表設(shè)計器建立 命令建立 在VFP中,有時需要臨時建立一些普通索引或唯一索引,可以用命 令來建立,語法如下:,INDEX ON TO FOR 注意:組合索引(多列)要將非字符串類型的數(shù)據(jù)轉(zhuǎn)化為字符串 數(shù)據(jù),然后按照主關(guān)鍵字在前,次關(guān)鍵字在后的次序用“+”號連接在 一起。 例如:要按語文、數(shù)學(xué)

33、的順序?qū)τ涗浗⒔M合索引,則各關(guān)鍵字 轉(zhuǎn)化為字符后用“+”連接。索引表達(dá)式為:STR(語文,5,1)+STR(數(shù) 學(xué),5,1) 如果用多個數(shù)值型字段建立一個索引表達(dá)式,索引則按照表達(dá) 式的值進行排序。STR(語文,5,1)+STR(數(shù)學(xué),5,1)與 語文+數(shù)學(xué)這兩個索 引含義不同,前者建立有主次關(guān)系的組合索引,后者按照兩個數(shù)值和 的值進行排序。,若選用FOR子句,則只有符合條件的記錄才被索引。 這樣,既縮短了索引建立時間,又提高了FIND或SEEK命令的檢索速 度。索引默認(rèn)按升序排列,執(zhí)行創(chuàng)建命令后,索引就被打開,其記錄指 針指向邏輯首記錄(GO TOP處)。 幾個創(chuàng)建普通索引的命令: IND

34、EX ON 學(xué)號 TO xh LIST INDEX ON -入學(xué)成績 TO cj LIST INDEX ON 姓名 TO xm LIST,篩選年齡在19歲以上的記錄:(條件為YEAR(DATE( )-YEAR(出 生時間)19)。 INDEX ON 學(xué)號 to xh for year(date()-year(出生時間)=22 LIST 4、查詢記錄 使用普通索引、候選索引或主索引,可以進行記錄排序,以便提 高顯示、查詢或打印的速度。 字符查找 例:在已經(jīng)建立的索引文件的基礎(chǔ)上,查找姓名為“李才”和學(xué) 號為“2006011”的記錄。,SET ORDER TO xm FIND 李才 DISP SE

35、T ORDER TO xh FIND 2006011 DISP FIND 2006001 DISP 注意:使用SET ORDER命令,可以改變表單中記錄的順序。格式 為:SET ORDER TO (索引名為已存在的索引)。FIND 字符查找命令,查找關(guān)鍵字與所給字符串相匹配的第一個記錄。若找 到,指針指向該記錄,否則指向文件尾。 FIND | ,表達(dá)式查找: 例:以性別為關(guān)鍵字建立索引,并查找第一個男生記錄和第一個女生記錄. INDEX ON 性別 TO xb SET ORDER TO xb LIST SEEK .T. DISP SEEK .F. DISP SEEK 命令查找關(guān)鍵字與所給字符串

36、相匹配的第一個記錄。若找到,指針指向該記錄,否則指向文件尾,給出信息“沒找到”。語法格式為: SEEK 刪除所有索引:DELETE TAG ALL。 刪除索引:DELETE TAG 索引名。,說明:只能找出符合條件的第一條記錄,該命令可以查找字符、數(shù)值、日期和邏輯型索引關(guān)鍵字。若為字符串,則必須用界限符號括起來(,“”,)。 若是找到了符合條件的首記錄,則函數(shù)FOUND( )的值為 .T. ,否則為 .F. 。 順序查詢 例:在數(shù)據(jù)表中依次查找86年出生的學(xué)生記錄。 USE ST LIST LOCATE FOR SUBSTR(DTOC(出生時間),7,2)=“86” DISP CONTINUE

37、 DISP CONTINUE DISP,將記錄指針定位在第一條中文系學(xué)生紀(jì)錄上? 將記錄指針定位在第一條成績大于500分的學(xué)生紀(jì)錄上?,LOCATE命令是在不建立索引的條件下,查找當(dāng)前數(shù)據(jù)表中滿足條件的第一條記錄。語法格式為: LOCATE FOR 統(tǒng)計記錄 建立數(shù)據(jù)表后,常常要對數(shù)據(jù)表中數(shù)值型字段的記錄進行統(tǒng)計。 統(tǒng)計記錄數(shù)COUNT: 例:分別統(tǒng)計女生人數(shù)和入學(xué)成績480分的學(xué)生記錄。 USE st LIST COUNT FOR .NOT. 性別 TO n COUNT FOR 入學(xué)成績=480 TO x ? n,x,統(tǒng)計函數(shù)使用COUNT命令,格式為: COUNT FOR TO 求和SUM

38、: 例:求女生入學(xué)成績之和。 SUM 入學(xué)成績 FOR .NOT. 性別 TO nu 求平均值A(chǔ)VERAGE: 例:求86年出生的學(xué)生的平均入學(xué)成績,以及中文系男學(xué)生的平均入學(xué)成績。 AVERAGE 入學(xué)成績 FOR SUBSTR(DTOC(出生時間),7,2)=“86” TO pjcj,AVERAGE 入學(xué)成績 FOR SUBSTR(DTOC(出生時間),7,2)=“86” 另外一種寫法: AVERAGE 入學(xué)成績 FOR YEAR(出生時間)=1986 LIST YEAR(出生時間) &返回4位數(shù)整數(shù)。 LIST FOR YEAR(出生時間)=1987,AVERAGE FOR 所在系“中文

39、”TO pjszx ? “86年出生的學(xué)生的平均入學(xué)成績?yōu)椋骸?str(pjcj) ? “中文系學(xué)生的平均入學(xué)成績?yōu)椋骸?+str(pjszx) AVERAGE命令格式為: AVERAGE FOR TO ,補充內(nèi)容: 索引的降序處理: 如果是數(shù)字,可直接在前面加“-”號。如果是字符串,則格式如下: INDEX ON 出生時間 TAG sj DESC 求最大值最小值函數(shù)(MAX和MIN函數(shù)的使用)。 CALCULATE SUM(入學(xué)成績),MAX(入學(xué)成績),MIN(入學(xué)成績),AVG(入學(xué)成績) CALCULATE MAX(入學(xué)成績) TO maxcj,復(fù)制數(shù)據(jù)到新文件 命令如下:COPY T

40、O FIELDS FOR COPY TO 學(xué)生2.dbf FIELDS 姓名,補助,出生日期 FOR 專業(yè)=計算機,對計算機專業(yè)的學(xué)生按年齡的降序排列,生產(chǎn)新表table1.dbf,且只包含姓名、性別、出生時間3字段? 將1986年出生的同學(xué)按分?jǐn)?shù)升序排列,并生成新表table2?,常用的操作命令總結(jié): 子句 4種情況:ALL 操作對象為表中全部數(shù)據(jù)。 NEXT 操作包括當(dāng)前記錄在內(nèi)的以下n條記錄。 RECORD 只操作第n個數(shù)據(jù)。 REST 操作從當(dāng)前到結(jié)尾的記錄。 顯示表中記錄 LIST、DISPLAY LIST FIELDS FOR OFF LIST ALL FIELDS 學(xué)號,語文 F

41、OR 語文=85 .AND. 性別 DISPLAY FOR 出生日期CTOD(“03/16/86”) OFF,修改記錄 REPLACE REPLACE WITH , WITH FOR REPLACE REPLACE ALL 入學(xué)成績 WITH 入學(xué)成績+10 FOR 性別 REPLACE ALL 總分 WITH 語文+數(shù)學(xué) REPLACE ALL 入學(xué)成績 WITH 入學(xué)成績+2 , 出生時間 WITH 出生時間+1 (如果沒有ALL或FOR,只更替當(dāng)前記錄)。 刪除記錄 DELETE DELETE FOR DELETE ALL DELETE ALL FOR st.所在系=“中文” .and.

42、 .not. 性別 DELETE ALL FOR 入學(xué)成績 FOR RECALL (只恢復(fù)當(dāng)前一條記錄)。 RECALL ALL (恢復(fù)所有打上刪除標(biāo)記的記錄)。,插入記錄(用REPLACE命令填充一個新數(shù)據(jù)) APPEND BLANK (書上第222頁) REPLACE 學(xué)號 WITH “2006200”,姓名 WITH “丁一”,性別 WITH .T. ,出生時間 WITH CTOD(“07/19/87”), 入學(xué)成績 WITH 508,所在系 WITH “計算機”,系負(fù)責(zé)人 WITH “程家吉” 數(shù)據(jù)查詢 LOCATE LOCATE FOR 定位到范圍中滿足FOR條件的第1條記錄。 LO

43、CATE FOR SUBSTR(DTOC(出生時間),7,2)=“86” (或LOCATE FOR YEAR(出生時間)=1986 ) DISP CONTINUE DISP (注:CONTINUE命令必須與LOCATE命令配合使用,以顯示下一條符合條件的記錄)。,統(tǒng)計記錄 COUNT、SUM、AVERAGE COUNT FOR TO SUM FOR TO AVERAGE FORTO COUNT FOR .NOT. 性別 TO n COUNT FOR 入學(xué)成績=480 TO x ? n, x SUM 入學(xué)成績 FOR .NOT. 性別 TO nu SUM 入學(xué)成績FOR 所在系=計算機 TO n

44、umber AVERAGE 入學(xué)成績 FOR SUBSTR(DTOC(出生時間),7,2)=86 TO pjcj (或YEAR(出生時間)1986) AVERAGE 入學(xué)成績 FOR 所在系中文TO pjszx,用命令建立索引 INDEX ON FOR INDEX ON 學(xué)號 TO xh LIST INDEX ON -入學(xué)成績 TO cj LIST INDEX ON 姓名 TAG xm DESC 按姓名的降序建立索引(默認(rèn)為升序)。 LIST,復(fù)制數(shù)據(jù)到新文件 命令如下:COPY TO FIELDS FOR COPY TO 學(xué)生2.dbf FIELDS 姓名,補助,出生日期 FOR 專業(yè)=計算機,

展開閱讀全文
溫馨提示:
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)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!