數據庫表的查詢與統計_第1頁
數據庫表的查詢與統計_第2頁
數據庫表的查詢與統計_第3頁
數據庫表的查詢與統計_第4頁
數據庫表的查詢與統計_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第三章表的查詢與統計根據表的某些字段重排記錄,排序后將產生一個新表,其記錄按新的順序排列,但原文件不變。 SORT TO ON /A|/D/C , /A|/D/C FOR WHILE FIELDS FILEDS LIKE | EXCEPT 排序與索引排序【例】Use students Sort to sts ON bh, rxcj/D For ssmz Use sts List & 主窗口顯示如下 文件中的記錄一般按其磁盤存儲順序輸出,這種順序稱為物理順序。排序后,在生成的新文件中形成了新的物理順序。索引與此不同,它不改變記錄的物理順序,而是按某個索引關鍵字來建立記錄的邏輯順序。在索引文件中,

2、所有關鍵字值順序排列,每個值對應原文件的一個記錄號,這樣便確定了記錄的邏輯順序。使用時,系統就依次按索引文件中的記錄號取出表中的物理記錄,達到按關鍵字值順序來列出記錄的效果。索引功能分類表索引類型關鍵字重復值說 明創建修改命令索引個數普通索引允許可作為一對多永久關系中的“多方”INDEX 允許多個唯一索引允許,但輸出無重復值為與以前版本兼容而設置候選索引不允許,輸入重復值將禁止存盤可用作主關鍵字,可用于在永久關系中建立參照完整性INDEXCREATE TABLEALTER TABLE主索引僅適用數據庫表,可用于在永久關系中建立參照完整性CREATE TABLEALTER TABLE僅可1個排序

3、與索引索引單索引文件,復合索引文件:結構化復合索引(主名與表的主名相同),非結構化復合索引。排序與索引利用表設計器的字段標簽頁建立索引文件 建立索引文件或增加索引標識 INDEX ON TO | TAG OF FOR ASCENDING | DESCENDING UNIQUE | CANDIDATEADDITIVE排序與索引確定主控索引 SET ORDER TO | | TAG ASCENDING | DESCENDING 索引文件的更新 REINDEX COMPACT刪除索引 DELETE TAG ALL | ,.【例】為Students.dbf建立一個結構復合索引文件,其中包括3個索引:(

4、1) 記錄以入學成績(rxcj)降序排列,,索引標識為普通索引型。(2) 記錄以班號(bh)升序排列,班號相同時則按學號(xh)升序排列,索引標識為普通索引型。(3) 記錄以班號(bh)升序排列,班號相同時則按入學成績(rxcj)降序排列,索引標識為候選索引型。排序與索引 Use students Index on rxcj tag cj desc &建復合索引,關鍵字rxcj,索引標識cj,普通索引 List & 記錄已按rxcj降序排列 Index on bh+xh tag bhxh &關鍵字bh+xh,索引標識bhxh,增入Students.cdx List & 記錄按班級升序、班級相同

5、按學號升序排列 Index on bh+str(1000-rxcj) tag bhcj candidate * bhcj為候選索引型索引標識,索引標識增入students.cdx List & 索引表達式運算后升序排列,使記錄按bh升序、bh相同按rxcj降序排列 Set order to tag cj & 指定索引標識CJ為主控索引 List & 記錄按入學成績降序排列 Set order to tag bhxh List & 記錄按(2)排列 Set order to & 取消主控索引 List CONTINUE ?RECNO(),xh,xm,xb,csrq 查詢順序查詢【格式】 LOCA

6、TE FOR WHILE USE students LOCATE FOR rxcj600 AND NOT ssmz DISPLAY CONTINUE索引查詢【格式】 SET EXACT ON | OFF 設置完全匹配或模糊匹配 FIND | 【功能】在已經建立索引的表文件中查找索引關鍵值與指定的字符串或數值型常量相匹配的第一條記錄。【說明】此命令只能對索引關鍵字進行查詢,且必須在索引文件打開之后使用。 查詢字符串,字符串可以不用定界符括起來,但前后有空格的,則必須要括進來。 查詢常數,必須使用索引關鍵字的完整值。 允許查詢字符型內存變量,但必須使用宏替換函數。 由于索引文件中關鍵字表達式值相同

7、的記錄總是排在一起的,可用SKIP、DISP命令來逐個查詢。查詢【格式】SEEK 【功能】在表文件的主索引中查找關鍵字值與值相匹配的第一個記錄。【說明】 SEEK命令與FIND命令的功能基本相同,但SEEK命令的功能更強,不僅可以查找字符串和常數,它還可以查找字符型、數值型、日期型或邏輯型表達式的值。 SEEK命令中的表達式的類型必須與索引表達式的類型相同。Use studentsInde on xm tag xmFind 李DispAa=“費敏“Find &aa? Recno(),Found()Inde on rxcj tag cjFind 600DispSkipDisp INDEX ON

8、csrq TAG rq SEEK 1988/08/12 ? FOUND() &.顯示.T. INDEX ON rxcj TAG cj SEEK 602 USE students INDEX ON xh TAG xh SEEK 07011002 ? RECNO(),FOUND() & 顯示:2 .T. AA=“07011003” SEEK AA【格式】 COUNT FOR TO 【格式】 SUM FOR TO | ARRAY 【說明】 在Set talk off狀態下,不顯示執行命令統計的結果;在Set deleted on狀態下,帶有刪除標記的記錄不被統計。【例】 Use students C

9、ount for xb=”女” to girl Count for xb=”男” and ynty to boy? ”女生的人數為:”,girl? ”男生中團員的人數為:,boy在選課成績表中如何統計某學生共選修了多少門課。【說明】 若不選擇任何選項,則對表文件中所有數值型字段分別求和。【例】 Use Classes Sum rs to n1 Sum rs to n2 for left(bh,2)=”JZ” ? n1,n2表的統計與計算統計記錄個數求和9表的統計與計算【格式】 AVERAGE FOR TO |ARRAY 【例】 Use students Average year(date()-

10、year(csrq), rxcj for xb=”女” to n1,n2 Average year(date()-year(csrq), rxcj for xb=”男” to array nn? ”女生的平均年齡為:”,n1,”平均入學成績為:”,n2? ”男生的平均年齡為:”,nn(1),”平均入學成績為:”,nn(2)【格式】 CALCULATE FOR TO |ARRAY 【說明】 表達式表中的表達式通常是一些財會統計中的函數表達式。【例】 Use Classes Calculate Avg(rs),sum(rs),max(rs),min(rs) to n1,n2,n3,n4 ? ”所有

11、班級的平均人數為:”,n1, ”所有班級人數總數為:”,n2? ”人數最多班級的人數為:”,n3, ”人數最少班級的人數為:”,n4求平均值計算表的統計與計算 可對數據進行分類合計。在當前表中,分別對值相同的記錄的數值型字段值求和,并將結果存入一個新表。 一組關鍵字值相同的記錄在新表中只產生一個記錄,對于非數值型字段,只將關鍵字值相同的第一個記錄的字段放入該記錄。【例】 Use Classes Index on yxbm tag yxbm set order to yxbm total on yxbm to yxrs fields rs use yxrs in 0 sele yxrs list

12、 close all分類匯總 【格式】 TOTAL TO ON FIELDS FOR 注:在匯總前必須對進行排序或索引。表的統計與計算【例】Use studentsSet exact off Count for xm=李 or xm=王 to A &統計姓李或姓王同學的記錄個數 ? A Count to B &統計表記錄總數 ? 總記錄個數, B ? Recsize() Sum rxcj to cj &求入學成績總和Store cj/b TO av &求平均入學成績,并存入變量av中? 平均成績=,av pinture 9999.99 &運行結果:平均成績= 600.17AVER ALL rx

13、cj TO av1? Av1 &運行結果:600.17CALC CNT(),AVG(rxcj),MAX(rxcj),min(rxcj) TO x1,x2,x3,x4? x1,x2,x3,x4多工作區操作 工作區是指當打開表文件時,把指定的表文件從磁盤調入內存中所分配的一個區域。VFP系統可提供32767個工作區,其編號從1至32767,每個工作區任何時候只能被一個表文件打開占據,在多個工作區中可同時打開多個表文件,但在任何一個時刻只能對一個工作區(當前工作區)進行操作。 系統別名:VFP對編號1-10前10個工作區規定了固定的系統別名,用字母AJ表示。用戶別名:用戶打開表文件時自定義的工作區別

14、名。【格式】 Use Alias In 【例】 Use d:vfpStudents in 0 use g:students alias st in 0 sele st ? Select() go 5 sele students ? Select() go 2 ? Students.xh, xm, st.xh, st.xm Close all 【格式】 Select | | 0工作區別名工作區工作區選擇“0”工作區代表未被使用的最小號工作區工作區別名.字段名多工作區操作【例】 Sele 1 Use Students Sele 2 Use Course Sele 1 Browse Close da

15、tabaseSele AUse Students & 在A工作區中打開StudentsSele BUse Grade & 在B工作區中打開GradeSele A & 選擇A工作區為當前工作區Disp all xh, xm, xb, csrq, B.kch, Grade.cj表的關聯在2個或2個以上工作區的表之間建立的邏輯連接,使其表的記錄指針同步移動。父表子表索引字段多一關系關聯關聯的一多關系表的關聯父表子表索引字段多一關系表的關聯【例】use students Set order to bh Sele 0 Use Classes set rela to bh into students Br

16、ow fields bh,bjmc,students.xh,students.xm set skip to students Brow fields bh,bjmc,students.xh,students.xm Set rela off into students Close【例】 sele studentsSet order to xhSele 0Use classesset relation to mon_xh into studentsBrow fields zy,bjmc,students.xm List zy,bjmc,students.xm,students,xbSet rela

17、 to Close all【格式】 Set Relation to | into Additive建立表文件之間的關聯關系的前提條件:父表和子表必須具有某一相同的關聯字段,并且其域相同。子表必須以關聯字段建立索引,并且把它設為主控索引。 關聯的關系有:“一對一”、“一對多”和“多對一”三種(VFP系統不能處理“多對多”關系)。表的關聯一對多多對一表的關聯在數據庫設計器中創建表與表之間的永久關聯。表的參照完整性課后作業完成實驗指導書“實驗1.3”,熟悉VFP表的記錄排列次序的兩種方法:排序、索引。分清兩種方法的特點 :物理排序和邏輯排序。熟悉主索引、候選索引、唯一索引和普通索引的不同,通過對已創

溫馨提示

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

評論

0/150

提交評論