第4章表的創(chuàng)建與操作.ppt_第1頁
第4章表的創(chuàng)建與操作.ppt_第2頁
第4章表的創(chuàng)建與操作.ppt_第3頁
第4章表的創(chuàng)建與操作.ppt_第4頁
第4章表的創(chuàng)建與操作.ppt_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、,第4章 表的建立與操作,引言 4.1 表的建立 4.2 表的顯示與維護 4.3 表的復制 4.4 表的排序與索引 4.5 表的查詢 4.6 表的統(tǒng)計與計算 4.7 多個表的操作,引言,在Visual FoxPro中,表(Table)是組織數(shù)據(jù)、建立關系數(shù)據(jù)庫的基本元素。 Visual FoxPro中的表有兩種類型,一類是自由表,它不屬于任何數(shù)據(jù)庫而獨立存在;另一類是數(shù)據(jù)庫表,它是數(shù)據(jù)庫的一部分。 處理自由表和數(shù)據(jù)庫表的方法基本相同。本章暫不涉及數(shù)據(jù)庫的操作,主要介紹自由表的基本操作。,4.1 表的建立,在關系模型中,用二維表來表示數(shù)據(jù)之間的聯(lián)系。一個二維表由表的框架和表中的數(shù)據(jù)兩部分組成,而

2、一個表文件則由表結構和記錄數(shù)據(jù)兩部分組成。,表結構的建立,利用表設計器創(chuàng)建表,菜單操作方式,利用表設計器創(chuàng)建表,命令操作方式 可以在命令窗口中使用CREATE命令來建立表的結構。其命令格式是: CREATE 表文件名? 在命令中使用?或省略該參數(shù)時,將打開“創(chuàng)建”對話框,提示輸入表名并選擇保存表的位置。 執(zhí)行CREATE命令后,屏幕上彈出表設計器窗口,以后的操作方法與菜單操作相同。,向表中輸入記錄,在把剛建立好的表結構存盤以后,若要立即輸入記錄,此時,屏幕顯示記錄輸入窗口,用戶可通過它輸入記錄。 輸入完成之后按住Ctrl+W組合鍵將數(shù)據(jù)存入相應的表文件之中 。,4.2 表的顯示與維護,表的打開

3、 : 菜單方式:文件菜單打開選項 命令方式: USENOUPDATEEXCLUSIVE|SHARED NOUPDATE指定以只讀方式打開表 EXCLUSIVE指定以獨占方式打開表, SHARED指定以共享方式打開表。 表的關閉: USE 命令,后不接任何語句,表的顯示,表結構的顯示 : LIST|DISPLAY STRUCTURETO PRINTER PROMPTTO FILE LIST命令是連續(xù)顯示,當顯示的內容超過一屏時,自動向上滾動,直到顯示完成為止;DISPLAY命令是分屏顯示,顯示滿屏時暫停,待用戶按任意鍵后繼續(xù)顯示后面的內容。,表的顯示,表記錄的顯示 : LIST|DISPLAY

4、FIELDS范圍 FORWHILETO PRINTER PROMPTTO FILE OFF FIELDS 表達式表指定要顯示的表達式 若選定FOR子句,則顯示滿足所給條件的所有記錄。若選定WHILE子句,顯示直到條件不成立時為止,這時后面即使還有滿足條件的記錄也不再顯示。 范圍、FOR子句和WHILE子句用于決定對哪些記錄進行操作。 選用OFF時,表示只顯示記錄內容而不顯示記錄號。,例4.1 針對學生表,寫出進行如下操作的命令。,顯示前5條記錄: Use 學生表 List next 5 顯示第5號記錄:list record 5 顯示記錄號為奇數(shù)的記錄:list for mod(recno()

5、,2)=1 顯示漢族男學生的記錄: LIST FOR ! 少數(shù)民族否 AND 性別=男 顯示湖北或湖南籍學生的姓名、性別、年齡以及簡歷。 LIST 姓名,性別,YEAR(DATE()-YEAR(出生日期),簡歷 FOR 湖$籍貫,表的修改,表結構的修改 :MODIFY STRUCTURE 表中記錄的修改: 瀏覽窗口的操作 :打開表后,在“顯示”菜單中選擇“瀏覽”命令,則打開瀏覽窗口,表的內容將出現(xiàn)在瀏覽窗口中。也可以在打開表后,輸入BROWSE命令打開瀏覽窗口。 數(shù)據(jù)的兩種顯示方式:瀏覽窗口中的數(shù)據(jù)有瀏覽和編輯兩種顯示方式。 瀏覽窗口的分割與同步:瀏覽窗口左下角有一黑色小方塊,可用于窗口的分割

6、。,表的修改,成批替換修改 : REPLACEWITHADDITIVE ,字段2 WITH 表達式2 ADDITIVE ,范圍 FOR 條件 WHILE 條件 若不選擇范圍和FOR子句或WHILE子句,則默認為當前記錄。如果選擇了FOR子句,則范圍默認為ALL,選擇了WHILE子句,則范圍默認為REST ADDITIVE只能在替換備注型字段時使用。,表記錄指針的定位 :,在表中,系統(tǒng)給每個記錄提供一個記錄號。對打開的表都自動設置一個指針,用以指示當前被操作的記錄,即當前記錄。剛打開表時,記錄指針自動指向第一個記錄。 絕對定位 :GO TO|TOP|BOTTOM 相對定位:SKIP 記錄數(shù) 注意

7、:如果記錄數(shù)的值為正數(shù),則記錄指針往表尾方向移動,若為負數(shù),則往表頭方向移動。,表記錄的增加,插入記錄 :INSERT BLANK BEFORE 若給出BLANK選項,則插入一個空記錄; 若給出BEFORE選項,則在當前記錄的前面插入一新記錄 追加記錄 :APPEND BLANK 該命令在當前表的末 尾追加一個新記錄。若選用BLANK選項,則追加一個空記錄到表的末尾。 這兩個命令區(qū)別在于: APPEND命令是在當前表的末尾增加新記錄,而INSERT命令可以在指定位置上增加新記錄。,表記錄的刪除,Visual FoxPro對部分記錄的刪除分兩步進行:邏輯刪除與物理刪除。 (1) 給記錄加刪除標志

8、: DELETE FORWHILE (2) 取消刪除標記: RECALL FORWHILE (3) 真正刪除記錄: PACK 該命令清除所有帶刪除標志的記錄。 (4) 刪除全部記錄:ZAP 該命令刪除當前表的全部記錄,只留下表結構。,4.3 表的復制,復制表的結構 : COPY STRUCTURE TO FIELDS 該命令將當前表的結構復制到指定的表中。它僅復制當前表的結構,不復制其記錄數(shù)據(jù)。 表結構和記錄同時復制 : COPY TOFIELDS FORWHILETYPESDFDELIMITEDXLSWITHBLANK,從其他文件向表中添加數(shù)據(jù),APPEND FROM 文件名 FIELDS

9、字段名表FOR 條件 WHILE 條件 TYPE 文件類型,表與數(shù)組間的數(shù)據(jù)傳送,將表中的記錄數(shù)據(jù)傳送到數(shù)組 SCATTERFIELDS TO MEMO 將數(shù)組數(shù)據(jù)傳送到表中的記錄 GATHER FROM FIELDSMEMO 把表的一批記錄同時復制到數(shù)組 (必須是二維數(shù)組) COPY TO ARRAYFIELDS FORWHILE條件 從數(shù)組向表中添加記錄 APPEND FROM ARRAYFOR FIELDS ,4.4 表的排序與索引,在一般情況下,表中的記錄是按其輸入的先后順序存放的,在對數(shù)據(jù)記錄進行操作時,就按照這種順序進行處理。但有時希望按別的順序將數(shù)據(jù)記錄重新組織,例如,對學生表,

10、希望數(shù)據(jù)記錄按入學成績由高到低排列,按出生日期的先后順序排列等。要完成這種操作有兩種方法:排序和索引。排序是生成一個新的表,而索引是建立一種對應關系,兩者都能達到重新組織數(shù)據(jù)記錄的目的。,表的排序,排序是根據(jù)不同的字段對當前表的記錄做出不同的排列,產生一個新的表。新表與舊表內容完全一樣,只是它們的記錄排列順序不同而已。 SORT TOON/A/D/CFIELDSFORWHILE 思考:排序有什么缺點? 造成數(shù)據(jù)的重復,排序一次就生成一個新表。 不能及時更新,改動數(shù)據(jù)就要重新排序。,索引概述,索引并不是重新排列表中記錄的物理順序,而是另外形成一個索引關鍵表達式值與記錄號之間的對照表,這個對照表就

11、是索引文件。 Visual FoxPro提供了兩種不同類型的索引文件:單索引文件和復合索引文件。 (1) 單索引文件是指一個索引文件中只能保存一個索引,其擴展名為.idx。 (2) 復合索引文件可以存儲多個索引,其擴展名為.cdx。當索引名與表文件名相同時,稱為結構化復合索引,索引的類型,主索引:是不允許在指定字段或表達式中出現(xiàn)重復值的索引,每一個表只能建立一個主索引,只有數(shù)據(jù)庫表才能建立主索引。 候選索引:也是一個不允許在指定字段和表達式中出現(xiàn)重復值的索引。數(shù)據(jù)庫表和自由表都可以建立候選索引,一個表可以建立多個候選索引。 惟一索引:系統(tǒng)只在索引文件中保留第一次出現(xiàn)的索引關鍵字值。 普通索引:

12、這是一個最簡單的索引,數(shù)據(jù)庫表和自由表都可以建立普通索引。,索引文件的建立,命令格式: 單索引文件:INDEX ONTO FOR COMPACTASCENDINGDESCENDING UNIQUE ADDITIVE 復合索引文件:INDEX ONTAG OF FOR COMPACTASCENDINGDESCENDING UNIQUE ADDITIVE,在表設計器中建立索引,注意:在表設計器中建立的都是結構化復合索引,索引文件的使用,索引文件必須先打開才能使用 : 同時打開表和索引文件: USE 表文件名 INDEX 索引文件名表 (2) 打開表后再打開索引文件: SET INDEX TO AD

13、DITIVE 確定主控索引 : SET ORDER TOTAG OF,索引文件的使用,關閉索引文件: CLOSE INDEX SET INDEX TO 刪除索引 : DELETE FILE 索引文件名 DELETE TAG ALL索引標志名表 更新索引 :索引文件依賴于表而存在,當表中的數(shù)據(jù)發(fā)生變化時,打開的索引文件也應相應地被更新。,4.5 表的查詢,順序查詢 : LOCATE FOR |WHILE 按表中記錄的物理順序逐個查詢符合條件的記錄,找到后,記錄指針指向該記錄,當查找到第一個滿足條件的記錄后,如果執(zhí)行CONTINUE命令,則繼續(xù)尋找滿足條件的記錄,直到范圍結束為止。,順序查詢使用示

14、例:,例4.18在學生表中查詢漢族男生的姓名、入學成績和年齡。 USE 學生 LOCATE FOR ! 少數(shù)民族否AND 性別=男 DISP 姓名,入學成績, YEAR(DATE()-YEAR(出生日期) CONTINUE ? RECNO(),姓名,入學成績, YEAR(DATE()-YEAR(出生日期),索引查詢,SEEK 表達式 在當前表中,按已確定的主索引文件關鍵字來查詢與指定表達式值相匹配的第一條記錄,找到后將記錄指針定位于該記錄。該命令只能使記錄指針定位于符合條件的第一條記錄,可用SKIP命令使指針指向下一個符合條件的記錄。 注意: 索引查詢只能查詢建立了索引的關鍵字那一字段,索引查

15、詢使用示例:,例4.19查詢學生表中1983年9月7日出生的學生的記錄。 USE 學生 INDEX ON 出生日期 TAG sy4 D=19830907 SEEK D DISP,4.6 表的統(tǒng)計與計算,統(tǒng)計記錄個數(shù) : COUNT FOR WHILE TO 求和與求平均值 : SUMAVERAGEFORWHILETOARRAY ,統(tǒng)計函數(shù)的計算,CALCULATEFOR WHILETO|ARRAY 表達式表中的表達式至少應包含一種統(tǒng)計函數(shù)。 AVG(數(shù)值表達式):求數(shù)值表達式的平均值。 CNT():統(tǒng)計表中指定范圍內滿足條件的記錄個數(shù)。 MAX(表達式):求表達式的最大值。 MIN(表達式):

16、求表達式的最小值。 SUM(數(shù)值表達式):求表達式之和。 NPV(數(shù)值表達式1,數(shù)值表達式2,數(shù)值表達式3):求數(shù)值表達式的凈現(xiàn)值。 STD(數(shù)值表達式):求數(shù)值表達式的標準偏差。 VAR(數(shù)值表達式):求數(shù)值表達式的均方差。,分類匯總,TOTAL ONTO FIELDS FOR WHILE 條件 該命令對當前表的某些數(shù)值型字段按關鍵字表達式進行分類統(tǒng)計,并把統(tǒng)計結果存放在文件名指定的表中。 為了進行分類匯總,必須對當前表按關鍵字表達式進行排序或建立索引文件。,4.7 多個表的操作,工作區(qū) :工作區(qū)是用來保存表及其相關信息的一片內存空間。在每個工作區(qū)中只能打開一個表文件。 工作區(qū)號與別名:不同工作區(qū)可以用其編號或別

溫馨提示

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

最新文檔

評論

0/150

提交評論