《數(shù)據(jù)庫應用基礎》PPT課件.ppt

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

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

14.9 積分

下載資源

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

資源描述:

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

1、第7章 數(shù)據(jù)庫應用基礎VFP,7.1 數(shù)據(jù)庫的基本概念,日常生活工作中,我們每天都要接觸大量的信息,比如學生 成績、人事檔案、工資表、貨物清單等。那么,它們都可以表示 為數(shù)據(jù)的形式,這么多的數(shù)據(jù),單靠紙、筆、算盤進行統(tǒng)計幾乎 是不可能的,計算機的出現(xiàn)解決了這個復雜的問題,它將大批量 的數(shù)據(jù)信息存儲在大容量磁盤上,并方便地進行管理。那么,這 些數(shù)據(jù)是怎樣存儲的,怎樣被訪問、修改和刪除呢?這就用到了 數(shù)據(jù)庫技術。數(shù)據(jù)庫技術將各種各樣的數(shù)據(jù)分門別類地存儲起 來,用戶可以很容易地查看、管理、操作這些數(shù)據(jù)。,數(shù)據(jù)不僅僅是文本,多媒體數(shù)據(jù)庫的發(fā)展可以讓數(shù)據(jù)是圖 片、聲音、視頻等內容。 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è)名,教師號 姓名 職稱,學號 姓名 性別 年齡,課程號 課程名 學分,系教務管理層次模型,2、網狀數(shù)據(jù)模型,3、關系數(shù)據(jù)模型 關系模型中每個關系對應一張二維表,它由一些行和列組 成。關系模型中,實體和實體之間的聯(lián)系都使用關系(二維表) 來表示的。關系模型結構單一、操作方便,容易被用戶接收,且 有堅實的數(shù)學理論基礎,因而得到了廣泛的應用,成為目前最流 行的一種數(shù)據(jù)模型。當前的一些數(shù)據(jù)庫,從O

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

4、可以進行計算的數(shù)據(jù),如成績、重量、體積、訂貨數(shù)量等。 7、雙精度型(B) 存儲高精度的試驗數(shù)據(jù)。 8、浮點型(F) 9、整型(I) 存放由數(shù)字和正負號構成的整數(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” 、“運算結果”。 “7abc” 、“IF”、 “ELSE” 、“A2”、“2” 、“8開始” 。,7.1.4 掌握VFP表達式的使用 1、算術運算符 2、字符串運算符 3、日期時間運算符 4、關系運算符 5、邏輯運算符,求值: 2+3 1+4 .AND. .NOT. 68,算數(shù)運算符的優(yōu)先級為( ) 或* *和/ % +和- 。,1、算術運算符,表達式的書寫規(guī)則: 每個符號占格,所

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

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

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

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

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

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

12、8).AND.(24),習題:,11、(18).OR.(24) 12、求 a$bca .AND. (3!=5 .OR. .F.) 的值。 13、ALLTRIM( 123 ) =? 14、STR(表達式) 的作用? 15、CTOD(表達式) 的作用? 16、DTOC(表達式) 的作用? 17、YEAR(CTOD(01/01/08) 的值為什么? 18、MONTH(CTOD(11/01/86) 的值為什么? 19、DATE()、TIME()、DATETIME() 的值為什么?,7.1.6 VFP命令的語法 VFP命令由命令動詞(關鍵字)+短語。 CREATE 數(shù)據(jù)庫文件名。 USE SHARED

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

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

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

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

17、AY STRUCTURE 可簡寫為DISP STRU。 7)不要用A到I之間的單個字母作為表名,因為它們已被保留作數(shù)據(jù)庫工作區(qū)的名稱。 8)不要用VFP的保留字作文件名、字段名、變量名等。 9)一行只能寫一條命令,每條命令的結束標志是回車鍵。 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)實世界的關系 或實體,各個數(shù)據(jù)表之間可能存在某種關系。 字段:數(shù)據(jù)表中的每一列稱為一個字段,它對應表格中的數(shù)

18、據(jù)項, 每個數(shù)據(jù)項的名稱稱為字段名(屬性),如“年齡”、“性別”、“學號”、“入 學時間”等都是字段名。 記錄:表中每一數(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) 利用“表設計器”創(chuàng)建新表。 2) 追加記錄。 3) 使用命令創(chuàng)建新表 CREATE TABLE ( ()

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

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

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

22、t. 性別 .and. 入學成績=480 顯示女同學的姓名和年齡: DISP 姓名,year(date()-year(出生時間) FOR 性別 編輯模式:EDIT與CHANGE命令等價。 例如: 修改當前記錄 EDIT 修改第n條記錄 EDIT n 修改包括當前記錄在內的n條記錄:EDIT NEXT n,列出8月份出生的女同學的姓名和出生時間? 列出年齡大于等于20歲的學生紀錄,要求不顯示記錄號?,記錄指針的移動: 絕對定位: 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 。 當前記錄的記錄號可用函數(shù) RECNO( ) 返回。 當前表中記錄的總個數(shù)可用RECCOUNT( ) 函數(shù)返回。,指向文件頭的BOF( )函數(shù)和指向文件尾

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

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

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

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

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

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

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

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

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

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

34、EX ON 學號 TO xh LIST INDEX ON -入學成績 TO cj LIST INDEX ON 姓名 TO xm LIST,篩選年齡在19歲以上的記錄:(條件為YEAR(DATE( )-YEAR(出 生時間)19)。 INDEX ON 學號 to xh for year(date()-year(出生時間)=22 LIST 4、查詢記錄 使用普通索引、候選索引或主索引,可以進行記錄排序,以便提 高顯示、查詢或打印的速度。 字符查找 例:在已經建立的索引文件的基礎上,查找姓名為“李才”和學 號為“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 字符查找命令,查找關鍵字與所給字符串相匹配的第一個記錄。若找 到,指針指向該記錄,否則指向文件尾。 FIND | ,表達式查找: 例:以性別為關鍵字建立索引,并查找第一個男生記錄和第一個女生記錄. INDEX ON 性別 TO xb SET ORDER TO xb LIST SEEK .T. DISP SEEK .F. DISP SEEK 命令查找關鍵字與所給字符串

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

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

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

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

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

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

42、 .not. 性別 DELETE ALL FOR 入學成績 FOR RECALL (只恢復當前一條記錄)。 RECALL ALL (恢復所有打上刪除標記的記錄)。,插入記錄(用REPLACE命令填充一個新數(shù)據(jù)) APPEND BLANK (書上第222頁) REPLACE 學號 WITH “2006200”,姓名 WITH “丁一”,性別 WITH .T. ,出生時間 WITH CTOD(“07/19/87”), 入學成績 WITH 508,所在系 WITH “計算機”,系負責人 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 入學成績=480 TO x ? n, x SUM 入學成績 FOR .NOT. 性別 TO nu SUM 入學成績FOR 所在系=計算機 TO n

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

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

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

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

備案號:ICP2024067431-1 川公網安備51140202000466號


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