數(shù)據(jù)庫軟件Visual Foxpro第五章 查詢、統(tǒng)計(jì)ppt課件_第1頁
數(shù)據(jù)庫軟件Visual Foxpro第五章 查詢、統(tǒng)計(jì)ppt課件_第2頁
數(shù)據(jù)庫軟件Visual Foxpro第五章 查詢、統(tǒng)計(jì)ppt課件_第3頁
數(shù)據(jù)庫軟件Visual Foxpro第五章 查詢、統(tǒng)計(jì)ppt課件_第4頁
數(shù)據(jù)庫軟件Visual Foxpro第五章 查詢、統(tǒng)計(jì)ppt課件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第五章第五章 排序、查詢和多表操作排序、查詢和多表操作5.1 5.1 物物 理理 排排 序序 物理排序:根據(jù)表的某些字段重排記錄。排序后將產(chǎn)生物理排序:根據(jù)表的某些字段重排記錄。排序后將產(chǎn)生一個(gè)新一個(gè)新 表,其記錄按新的順序排列,但原文件不變表,其記錄按新的順序排列,但原文件不變命令命令:SORT TO :SORT TO ON ON /A /D /C ,1 /A /D /C , /A /D /C /A /D /C FOR FOR 1 FIEL FIEL 例例5-15-1:對表文件:對表文件stud.dbfstud.dbf按入??偡纸敌蚺帕?,生成新表按入??偡纸敌蚺帕?,生成新表zf.dbfzf.

2、dbf,且新表中只包含學(xué)號(hào)、姓名、入??偡?,且新表中只包含學(xué)號(hào)、姓名、入??偡? 3個(gè)字段個(gè)字段 use stud use stud brow brow sort to zf on sort to zf on 入??偡秩胄?偡?d fields /d fields 學(xué)號(hào)學(xué)號(hào), ,姓名姓名, ,入???cè)胄?偡址?use zf use zf brow brow 闡明:闡明:1 1ONON子句的字段名表示排序字段,記錄可子句的字段名表示排序字段,記錄可以隨字段以隨字段 值的增大值的增大(升序升序)或減小或減小(降序降序)來排序。選項(xiàng)來排序。選項(xiàng)/A和和/D分別用來指定分別用來指定升序或降序,默認(rèn)按升

3、序排序。選項(xiàng)升序或降序,默認(rèn)按升序排序。選項(xiàng)/C適用于適用于c型數(shù)據(jù),表示不型數(shù)據(jù),表示不區(qū)分字段值中字母大小寫,即把同一字母的大寫與小寫看成一樣區(qū)分字段值中字母大小寫,即把同一字母的大寫與小寫看成一樣 2如果在如果在ON子句中使用多個(gè)字段名表示多重排序,即先子句中使用多個(gè)字段名表示多重排序,即先按主排序字段字段名按主排序字段字段名1排序,對于字段值相同的記錄再按第排序,對于字段值相同的記錄再按第二排序字段字段名二排序字段字段名2排序,依此類推排序,依此類推 3缺省范圍、缺省范圍、FOR條件條件1和和WHILE條件條件2等等子句表示對所有記錄排序子句表示對所有記錄排序 4FIELDS子句的字段

4、名表指定新表應(yīng)包含的字段,子句的字段名表指定新表應(yīng)包含的字段,若缺省默認(rèn)包含原表所有字段若缺省默認(rèn)包含原表所有字段例例5-2:對表:對表stud按專業(yè)號(hào)降序排序,當(dāng)專業(yè)號(hào)相同時(shí)則按性別降序按專業(yè)號(hào)降序排序,當(dāng)專業(yè)號(hào)相同時(shí)則按性別降序排序,生成新表排序,生成新表zy.dbfuse studsort to zy on 專業(yè)號(hào)專業(yè)號(hào)/d,性別性別/duse zybrow5.2 5.2 索索 引引索引的概念索引的概念 索引與排序的區(qū)別索引與排序的區(qū)別 表中的記錄在磁盤中按實(shí)際排列順序存儲(chǔ),這種表中的記錄在磁盤中按實(shí)際排列順序存儲(chǔ),這種順序稱為物理順序。執(zhí)行排序后,在新表中形成了新的物理順順序稱為物理順

5、序。執(zhí)行排序后,在新表中形成了新的物理順序。按照某個(gè)關(guān)鍵字與記錄號(hào)之間建立的一種邏輯上的順序,序。按照某個(gè)關(guān)鍵字與記錄號(hào)之間建立的一種邏輯上的順序,稱為邏輯順序。索引就是按索引關(guān)鍵字建立記錄的邏輯順序,稱為邏輯順序。索引就是按索引關(guān)鍵字建立記錄的邏輯順序,并生成一個(gè)索引文件。在索引文件中只包含索引關(guān)鍵字和記錄并生成一個(gè)索引文件。在索引文件中只包含索引關(guān)鍵字和記錄號(hào)兩個(gè)字段,每個(gè)關(guān)鍵字值對應(yīng)表文件的一個(gè)記錄號(hào),因此索號(hào)兩個(gè)字段,每個(gè)關(guān)鍵字值對應(yīng)表文件的一個(gè)記錄號(hào),因此索引能確定記錄的邏輯順序。引能確定記錄的邏輯順序。排序生成的新文件排序生成的新文件索引文件索引文件l索引文件的分類索引文件的分類l

6、 (1)單索引文件單索引文件l 它是包含一個(gè)索引項(xiàng)的索引文件。單索引文件擴(kuò)它是包含一個(gè)索引項(xiàng)的索引文件。單索引文件擴(kuò)展名為展名為.IDX,這種類型是為了與,這種類型是為了與FOXBASE開發(fā)的應(yīng)用程開發(fā)的應(yīng)用程序兼容而設(shè)置的序兼容而設(shè)置的l (2)復(fù)合索引文件復(fù)合索引文件l 它是包含多個(gè)索引項(xiàng)的索引文件。每個(gè)索引項(xiàng)它是包含多個(gè)索引項(xiàng)的索引文件。每個(gè)索引項(xiàng)都有一個(gè)索引標(biāo)識(shí),代表一種記錄邏輯順序。復(fù)合索引文都有一個(gè)索引標(biāo)識(shí),代表一種記錄邏輯順序。復(fù)合索引文件又可分為結(jié)構(gòu)的和非結(jié)構(gòu)的兩種,若定義復(fù)合索引文件件又可分為結(jié)構(gòu)的和非結(jié)構(gòu)的兩種,若定義復(fù)合索引文件時(shí)為它顯式取了名字,則其為非結(jié)構(gòu)的,否則為結(jié)

7、構(gòu)的。時(shí)為它顯式取了名字,則其為非結(jié)構(gòu)的,否則為結(jié)構(gòu)的。結(jié)構(gòu)復(fù)合索引文件與表主名相同,隨表打開而打開,推薦結(jié)構(gòu)復(fù)合索引文件與表主名相同,隨表打開而打開,推薦使用結(jié)構(gòu)復(fù)合索引文件。復(fù)合索引文件的擴(kuò)展名為使用結(jié)構(gòu)復(fù)合索引文件。復(fù)合索引文件的擴(kuò)展名為.CDX索引的建立索引的建立 INDEX ON索引關(guān)鍵字索引關(guān)鍵字 TO 單索引文件名單索引文件名 | TAG 索引標(biāo)識(shí)索引標(biāo)識(shí)OF復(fù)合索引文件名復(fù)合索引文件名 FOR條條件件 COMPACT ASCENDING |DESCENDING UNIQUE| CANDIDATE ADDITIVE功能:建立索引文件或增加索引標(biāo)識(shí)功能:建立索引文件或增加索引標(biāo)識(shí)闡

8、明:闡明:(1)TO子句適用于建立單索引文件子句適用于建立單索引文件(擴(kuò)展名為擴(kuò)展名為.IDX),其,其主主 名由單索引文件名指出。名由單索引文件名指出。 例例5-3:對:對stud按入??偡纸嗡饕募慈胄?偡纸嗡饕募?use stud index on 入??偡秩胄?偡?to zf list index on -入校總分入??偡?to zfj list index on 性別性別 to xb unique list (2)UNIQUE表示對于關(guān)鍵字值相同的記錄,索引中只列入其中第表示對于關(guān)鍵字值相同的記錄,索引中只列入其中第一個(gè)記錄;一個(gè)記錄; CANDIDATE只能與只能與TA

9、G聯(lián)合使用聯(lián)合使用 (3)TAG子句適用于建立復(fù)合索引文件子句適用于建立復(fù)合索引文件(擴(kuò)展名為擴(kuò)展名為.CDX)及索引標(biāo)識(shí)。及索引標(biāo)識(shí)。OF選項(xiàng)的復(fù)合選項(xiàng)的復(fù)合 索引文件名用于指定非結(jié)構(gòu)復(fù)合索引文件的索引文件名用于指定非結(jié)構(gòu)復(fù)合索引文件的名字,缺省該選項(xiàng)表示建立結(jié)構(gòu)復(fù)合索引文件,其文件名同表名,名字,缺省該選項(xiàng)表示建立結(jié)構(gòu)復(fù)合索引文件,其文件名同表名,隨表打開而打開隨表打開而打開 (4)索引關(guān)鍵字可用表達(dá)式表示。記錄邏輯順序默認(rèn)為升序,也可索引關(guān)鍵字可用表達(dá)式表示。記錄邏輯順序默認(rèn)為升序,也可用用ASCENDING選項(xiàng)表示升序選項(xiàng)表示升序,DESCENDING選項(xiàng)表示降序選項(xiàng)表示降序 (5)A

10、DDITIVE表示建立本索引文件時(shí)并不關(guān)閉先前打開的索引文表示建立本索引文件時(shí)并不關(guān)閉先前打開的索引文件件索引類型索引類型關(guān)鍵字是否允許重復(fù)關(guān)鍵字是否允許重復(fù)索引個(gè)數(shù)索引個(gè)數(shù)普通索引普通索引允許允許允許多個(gè)允許多個(gè)唯一索引唯一索引建立允許,但輸出無重復(fù)值建立允許,但輸出無重復(fù)值候選索引候選索引建立和輸出都不允許,輸入建立和輸出都不允許,輸入重復(fù)值將禁止存盤重復(fù)值將禁止存盤主索引主索引僅可僅可1個(gè)個(gè)索引功能分類表索引功能分類表索引表達(dá)式索引表達(dá)式 | 索引關(guān)鍵字索引關(guān)鍵字:索引后,各記錄將按索引表達(dá)式值排序,數(shù)值型數(shù)據(jù)按數(shù)值大小索引后,各記錄將按索引表達(dá)式值排序,數(shù)值型數(shù)據(jù)按數(shù)值大小排序,字符型

11、數(shù)據(jù)按其排序,字符型數(shù)據(jù)按其ASCII碼值大小排序,日期型數(shù)據(jù)按日碼值大小排序,日期型數(shù)據(jù)按日期先后排序期先后排序當(dāng)表達(dá)式中含有多個(gè)字段時(shí),表達(dá)式各項(xiàng)的數(shù)據(jù)類型必須一致,當(dāng)表達(dá)式中含有多個(gè)字段時(shí),表達(dá)式各項(xiàng)的數(shù)據(jù)類型必須一致,若各字段數(shù)據(jù)類型不一致,一般通過轉(zhuǎn)換函數(shù)若各字段數(shù)據(jù)類型不一致,一般通過轉(zhuǎn)換函數(shù) STR( ) 和和 DTOC( ) 轉(zhuǎn)換成字符型,組合成字符型索引表達(dá)式,字符型表轉(zhuǎn)換成字符型,組合成字符型索引表達(dá)式,字符型表達(dá)式按從左到右的順序依次排序達(dá)式按從左到右的順序依次排序 例例:索引表達(dá)式,索引表達(dá)式,STR(入校總分入??偡?3)+ 姓名姓名 +DTOC(出生日期出生日期,1

12、),已轉(zhuǎn)已轉(zhuǎn)換為字符型表達(dá)式,排序時(shí)先排換為字符型表達(dá)式,排序時(shí)先排“入??偡秩胄?偡帧保胄?偡窒嗤?,入??偡窒嗤排拧靶彰彰?,姓名再相同排,姓名再相同排“出生日期出生日期” 例例5-4:為表:為表stud建立一個(gè)結(jié)構(gòu)復(fù)合索引文件,其中包括三個(gè)索建立一個(gè)結(jié)構(gòu)復(fù)合索引文件,其中包括三個(gè)索引:引: (1) 以姓名降序排列,為普通索引以姓名降序排列,為普通索引 (2) 以性別升序排列,性別相同時(shí)則按入??偡稚蚺帕?,以性別升序排列,性別相同時(shí)則按入??偡稚蚺帕?,為普通索引為普通索引 (3) 以性別升序排列,性別相同時(shí)則按出生日期降序排列,以性別升序排列,性別相同時(shí)則按出生日期降序排列,為候選

13、索引為候選索引 use stud index on 姓名 tag xm desc listindex on 性別性別+str(入??偡秩胄?偡?3) tag xbzfalistindex on 性別性別+str(date()-出生日期出生日期) tag xbcsd candidatelist索引的使用和刪除索引的使用和刪除 使用索引必須按以下步驟進(jìn)行使用索引必須按以下步驟進(jìn)行 打開表打開表 打開索引文件打開索引文件 確定主控索引文件確定主控索引文件 對于復(fù)合索引文件還須確定主控索引對于復(fù)合索引文件還須確定主控索引打開索引文件打開索引文件 要進(jìn)行索引查詢,必須打開表與索引文件。一個(gè)表要進(jìn)行索引查

14、詢,必須打開表與索引文件。一個(gè)表可以打開多個(gè)索引文件,但任何時(shí)候只有一個(gè)索引文件能起可以打開多個(gè)索引文件,但任何時(shí)候只有一個(gè)索引文件能起作用,當(dāng)前起作用的索引文件稱為主控索引文件作用,當(dāng)前起作用的索引文件稱為主控索引文件打開索引文件的三種方法:打開索引文件的三種方法: 建立索引文件的同時(shí),就打開了索引文件建立索引文件的同時(shí),就打開了索引文件 打開表后再打開索引文件打開表后再打開索引文件 命令格式:命令格式: set index to additive 功能:打開當(dāng)前表中的一個(gè)或多個(gè)索引文件并確定主控索引功能:打開當(dāng)前表中的一個(gè)或多個(gè)索引文件并確定主控索引 文件文件 闡明:闡明: (1)索引文件

15、表可包含多個(gè)索引文件,索引文件名之間索引文件表可包含多個(gè)索引文件,索引文件名之間以逗號(hào)分隔,表中第一個(gè)索引文件為主控索引文件,例如:以逗號(hào)分隔,表中第一個(gè)索引文件為主控索引文件,例如: use stud set index to zf,zfj list (2)若缺省若缺省ADDITIVE選項(xiàng),則在用本命令打開索引文件時(shí),選項(xiàng),則在用本命令打開索引文件時(shí),除結(jié)構(gòu)復(fù)合索引文件以外的索引文件均被關(guān)閉除結(jié)構(gòu)復(fù)合索引文件以外的索引文件均被關(guān)閉 打開表文件的同時(shí)打開索引文件打開表文件的同時(shí)打開索引文件 命令:命令:use index | order 單索單索 引文件名引文件名| tag標(biāo)識(shí)名標(biāo)識(shí)名 of復(fù)

16、合索引文件名復(fù)合索引文件名闡明:闡明: index 包括單索引或復(fù)合索引文件包括單索引或復(fù)合索引文件 order 單索引文件名單索引文件名,指定單索引文件名為主控索引文件指定單索引文件名為主控索引文件 order tag 標(biāo)識(shí)名標(biāo)識(shí)名 of復(fù)合索引文件名復(fù)合索引文件名,指定復(fù)合索引,指定復(fù)合索引的標(biāo)識(shí)名的標(biāo)識(shí)名 為主控索引;省略為主控索引;省略of復(fù)合索引文件名復(fù)合索引文件名,則打開則打開結(jié)構(gòu)復(fù)合索引文件結(jié)構(gòu)復(fù)合索引文件例例5-6: use stud index stud order tag xbzfa brow close all use stud order tag xm brow確定主控

17、索引確定主控索引 如果打開了多個(gè)索引文件,但任何時(shí)候只有一如果打開了多個(gè)索引文件,但任何時(shí)候只有一個(gè)索引文件能起作用。一個(gè)復(fù)合索引文件中可能包含多個(gè)個(gè)索引文件能起作用。一個(gè)復(fù)合索引文件中可能包含多個(gè)索引標(biāo)識(shí),但任何時(shí)候只有一個(gè)索引標(biāo)識(shí)能起作用,因此索引標(biāo)識(shí),但任何時(shí)候只有一個(gè)索引標(biāo)識(shí)能起作用,因此還須確定主控索引還須確定主控索引 命令格式:命令格式: SET ORDER TO|TAG OFASCENDING | DESCENDING闡明:闡明: (1) TO子句的數(shù)值表達(dá)式表示已打開索引的序號(hào),子句的數(shù)值表達(dá)式表示已打開索引的序號(hào),該序號(hào)用來指定主控索引。系統(tǒng)先為各單索引文件編號(hào),該序號(hào)用來指

18、定主控索引。系統(tǒng)先為各單索引文件編號(hào),故結(jié)構(gòu)復(fù)合索引文件的序號(hào)比單索引文件大故結(jié)構(gòu)復(fù)合索引文件的序號(hào)比單索引文件大 (2) TAG子句的索引標(biāo)識(shí)指定該索引標(biāo)識(shí)為主控子句的索引標(biāo)識(shí)指定該索引標(biāo)識(shí)為主控索引索引 (3) SET ORDER TO或或SET ORDER TO 0命令取消命令取消主控索引文件及主控索引,表中記錄將按物理順序輸出主控索引文件及主控索引,表中記錄將按物理順序輸出 例例5-7:為:為stud.cdx 設(shè)置主控索引設(shè)置主控索引 use stud list &按物理順序顯示按物理順序顯示 modi stru set index to zf set order to 2 l

19、ist set order to 1 list set order to tag xbcsd list更新索引更新索引 命令:命令:reindex 功能:重新建立打開的索引文件功能:重新建立打開的索引文件 注:在更新索引之前,應(yīng)打開表文件和相應(yīng)的索引文件注:在更新索引之前,應(yīng)打開表文件和相應(yīng)的索引文件例例5-8:use stud append brow use stud index stud order tag xbzfa brow use stud set index to zf brow reindex brow關(guān)閉索引文件關(guān)閉索引文件 關(guān)閉索引文件,就是取消索引文件對表文件的控制作用關(guān)閉

20、索引文件,就是取消索引文件對表文件的控制作用 set index to:關(guān)閉當(dāng)前索引文件:關(guān)閉當(dāng)前索引文件 close index:關(guān)閉所有索引文件:關(guān)閉所有索引文件 use:關(guān)閉表文件的同時(shí)關(guān)閉索引文件:關(guān)閉表文件的同時(shí)關(guān)閉索引文件l刪除索引刪除索引l (1)刪除索引文件刪除索引文件l 若用刪除文件命令來刪除索引文件,須遵循先關(guān)若用刪除文件命令來刪除索引文件,須遵循先關(guān)閉后刪除的原則,這與刪除表文件類似閉后刪除的原則,這與刪除表文件類似l (2)刪除索引標(biāo)識(shí)刪除索引標(biāo)識(shí)l 命令格式:命令格式:l delete tag all |索引標(biāo)識(shí)索引標(biāo)識(shí)1,索引標(biāo)識(shí),索引標(biāo)識(shí)2l 功能:刪除打開的復(fù)合

21、索引文件的索引標(biāo)識(shí)功能:刪除打開的復(fù)合索引文件的索引標(biāo)識(shí)l 例:刪除上例建立的復(fù)合索引文件中的索引標(biāo)識(shí)例:刪除上例建立的復(fù)合索引文件中的索引標(biāo)識(shí)l use studl delete tag xml delete tag alll 闡明:闡明:ALL子句用于刪除復(fù)合索引文件的所有索引標(biāo)識(shí)。子句用于刪除復(fù)合索引文件的所有索引標(biāo)識(shí)。如果某索引文件的所有索引標(biāo)識(shí)都被刪除,則該索引文件如果某索引文件的所有索引標(biāo)識(shí)都被刪除,則該索引文件也就被刪除了也就被刪除了5.3 查查 詢詢 所謂查詢,即按照某些條件在表中查找所需的記錄。兩種所謂查詢,即按照某些條件在表中查找所需的記錄。兩種傳統(tǒng)的查詢方法:順序查詢和索

22、引查詢傳統(tǒng)的查詢方法:順序查詢和索引查詢順序查詢:按照表記錄的物理順序依次逐個(gè)查詢順序查詢:按照表記錄的物理順序依次逐個(gè)查詢 其命令包括其命令包括locate和和continue兩條命令兩條命令 命令格式:命令格式: LOCATE 范圍范圍 FOR條件條件 WHILE條件條件 功能:搜索指定范圍內(nèi)滿足條件的第一個(gè)記錄。若找到,功能:搜索指定范圍內(nèi)滿足條件的第一個(gè)記錄。若找到,記錄指針就指向該記錄記錄指針就指向該記錄,并停止查找;若表中無此記錄,狀態(tài)條并停止查找;若表中無此記錄,狀態(tài)條中將顯示中將顯示“已到定位范圍末尾已到定位范圍末尾”,此時(shí)記錄指針指向文件結(jié)束,此時(shí)記錄指針指向文件結(jié)束處處例例

23、5-9:在:在stud中查找姓名為劉雨的記錄中查找姓名為劉雨的記錄 use stud locate for 姓名姓名= 劉雨劉雨 disp例例5-10:在:在stud.dbf中查找是團(tuán)員的記錄中查找是團(tuán)員的記錄 use stud locate for 團(tuán)員團(tuán)員=.t. disp continue disp continue 闡明:闡明: (1)缺省范圍為缺省范圍為ALL (2)查到記錄后,要繼續(xù)往下查找滿足條件的記錄查到記錄后,要繼續(xù)往下查找滿足條件的記錄必須用必須用 CONTINUE命令命令l索引查詢索引查詢l 按表記錄的邏輯順序查詢,因此,須事先對表建立索按表記錄的邏輯順序查詢,因此,須事

24、先對表建立索引并打開索引引并打開索引lfind 命令命令l 命令格式:命令格式: find |l 功能:在已確定主控索引的表中按索引關(guān)鍵字搜索與功能:在已確定主控索引的表中按索引關(guān)鍵字搜索與 或或相匹配的第一個(gè)記錄。若找到,記相匹配的第一個(gè)記錄。若找到,記錄指針就指向該記錄;找不到該記錄則在狀態(tài)條中顯示錄指針就指向該記錄;找不到該記錄則在狀態(tài)條中顯示“沒有沒有找到找到”l 例例5-11:在:在stud中查找姓名為楊海的記錄中查找姓名為楊海的記錄l use studl set order to tag xml find 楊海楊海l disp 闡明:闡明: find 命令只查找符合條件的第一個(gè)記錄

25、,與命令只查找符合條件的第一個(gè)記錄,與skip命令配套命令配套使用可以實(shí)現(xiàn)繼續(xù)查找使用可以實(shí)現(xiàn)繼續(xù)查找 命令中的字符型常量可以不加定界符命令中的字符型常量可以不加定界符seek 命令命令 命令格式:命令格式: seek 表達(dá)式表達(dá)式 功能:在已確定主控索引的表中按索引關(guān)鍵字搜索滿足表功能:在已確定主控索引的表中按索引關(guān)鍵字搜索滿足表 達(dá)式值的第一個(gè)記錄。若找到,記錄指針就指向該達(dá)式值的第一個(gè)記錄。若找到,記錄指針就指向該 記錄;找不到該記錄則在狀態(tài)條中顯示記錄;找不到該記錄則在狀態(tài)條中顯示 “沒有找到?jīng)]有找到”例例5-14:在:在stud中查找姓名為劉雨的記錄,再查找年齡為中查找姓名為劉雨的記

26、錄,再查找年齡為22歲的記歲的記錄和專業(yè)號(hào)為錄和專業(yè)號(hào)為03的記錄的記錄 use stud index on 姓名姓名 tag xm seek “劉雨劉雨” index on int(date( )-出生日期出生日期)/365) tag nj seek 22 ?recno( ), found( ) index on 專業(yè)號(hào)專業(yè)號(hào) tag zyh desc seek “03” ?recno( ), found( ) skip disp 注:注: seek命令只查找符合條件的第一個(gè)記錄,與命令只查找符合條件的第一個(gè)記錄,與skip命令配套命令配套使用可以實(shí)現(xiàn)繼續(xù)查找使用可以實(shí)現(xiàn)繼續(xù)查找 seek命

27、令可以查找命令可以查找c型、型、 n型、型、 d型、型、 l型數(shù)據(jù)。如果查找型數(shù)據(jù)。如果查找c型常量,必須用定界符將型常量,必須用定界符將c型常量括起來型常量括起來 對于字符串表達(dá)式,系統(tǒng)允許模糊查找,即只要字符串表達(dá)式值對于字符串表達(dá)式,系統(tǒng)允許模糊查找,即只要字符串表達(dá)式值與索引關(guān)鍵字值左子串相同,就認(rèn)為找到。命令與索引關(guān)鍵字值左子串相同,就認(rèn)為找到。命令“SET EXACT ON | OFF用于設(shè)置匹配,用于設(shè)置匹配,ON表示完全匹配,用于精確查找;表示完全匹配,用于精確查找;OFF表示模糊匹配,系統(tǒng)默認(rèn)表示模糊匹配,系統(tǒng)默認(rèn)OFF 例:模糊查找與精確查找例:模糊查找與精確查找 use

28、zymc index on 專業(yè)名稱專業(yè)名稱 tag mc seek 電子電子 ?recno( ),found( ) set exact on seek 電子電子 ? found( ) set exact off5.4 統(tǒng)統(tǒng) 計(jì)計(jì)計(jì)數(shù)命令計(jì)數(shù)命令 命令格式:命令格式: COUNT 范圍范圍FOR條件條件1WHILE條件條件2TO 內(nèi)存變量內(nèi)存變量功能:計(jì)算當(dāng)前表中指定范圍內(nèi)滿足條件的記錄數(shù)功能:計(jì)算當(dāng)前表中指定范圍內(nèi)滿足條件的記錄數(shù)闡明:闡明: (1)通常記錄數(shù)顯示在主窗口的狀態(tài)條中,使用通常記錄數(shù)顯示在主窗口的狀態(tài)條中,使用TO子句還能將記錄子句還能將記錄數(shù)保存到內(nèi)存變量中,便于以后引用此變

29、量數(shù)保存到內(nèi)存變量中,便于以后引用此變量 (2)缺省范圍是表的所有記錄缺省范圍是表的所有記錄例:試統(tǒng)計(jì)例:試統(tǒng)計(jì)stud.dbf中學(xué)生總?cè)藬?shù)和女生總?cè)藬?shù)中學(xué)生總?cè)藬?shù)和女生總?cè)藬?shù) use stud count to xsr count to nsr for 性別性別=女女 求和命令求和命令 命令格式:命令格式: SUM FORWHILE 條件條件2 TO內(nèi)存變量表內(nèi)存變量表|ARRAY數(shù)組數(shù)組 功能:在打開的表中,對指定范圍內(nèi)滿足條件的功能:在打開的表中,對指定范圍內(nèi)滿足條件的N型字段縱向型字段縱向 求和求和 闡明:闡明: (1) 中各個(gè)表達(dá)式的值的和數(shù)可依次存中各個(gè)表達(dá)式的值的和數(shù)可依次存入內(nèi)

30、存變量表或數(shù)組。如果缺省該表,則對當(dāng)前表所有的入內(nèi)存變量表或數(shù)組。如果缺省該表,則對當(dāng)前表所有的 數(shù)值表達(dá)式求和數(shù)值表達(dá)式求和 (2)缺省范圍指表中所有記錄缺省范圍指表中所有記錄?學(xué)生總?cè)藬?shù):學(xué)生總?cè)藬?shù):+str(xsr,3)+space(8)+女生人數(shù):女生人數(shù):+str(nsr,3)例例5-18:對:對stud.dbf求學(xué)生入校總分的平均分求學(xué)生入??偡值钠骄?求平均值命令求平均值命令 命令格式:命令格式: AVERAGE 范圍范圍FOR條件條件1 WHILE條件條件2 TO內(nèi)存變量表內(nèi)存變量表|ARRAY數(shù)組數(shù)組 功能:在打開的表中,對指定范圍內(nèi)滿足條件的功能:在打開的表中,對指定范圍

31、內(nèi)滿足條件的N型字段縱向型字段縱向 求平均值求平均值例例5-19:求:求stud.dbf學(xué)生入校總分的平均分學(xué)生入??偡值钠骄謚se studsum 入校總分入??偡?to zf?zf/reccount( ) use stud aver 入??偡秩胄?偡?to nl 計(jì)算命令計(jì)算命令 命令格式:命令格式: CALCULATE 表達(dá)式表表達(dá)式表范圍范圍FOR條件條件1 WHILE條件條件2 TO內(nèi)存變量表內(nèi)存變量表|ARRAY數(shù)組數(shù)組 功能:功能: 在打開的表中,分別計(jì)算表達(dá)式表的值在打開的表中,分別計(jì)算表達(dá)式表的值 留意:表達(dá)式中由以下函數(shù)之一構(gòu)成。其中常用的函數(shù)有留意:表達(dá)式中由以下函數(shù)之

32、一構(gòu)成。其中常用的函數(shù)有AVG(數(shù)值表達(dá)式數(shù)值表達(dá)式)、CNT( )、MAX(表達(dá)式表達(dá)式)、MIN(表達(dá)式表達(dá)式)、SUM(數(shù)值表達(dá)式數(shù)值表達(dá)式)等等5個(gè)個(gè)例例5-20:求:求stud.dbf中的入??偡肿罡叻趾妥畹头?;求中的入??偡肿罡叻趾妥畹头?;求cj.dbf中大學(xué)中大學(xué)英語和計(jì)算機(jī)基礎(chǔ)的平均分英語和計(jì)算機(jī)基礎(chǔ)的平均分 use stud calculate max(入??偡秩胄?偡?,min(入校總分入??偡? to array zf ?zf(1),zf(2) select 0 use cj calculate avg(大學(xué)英語大學(xué)英語),avg(計(jì)算機(jī)基礎(chǔ)計(jì)算機(jī)基礎(chǔ)) to array

33、 pjf ?pjf(1),pjf(2)匯總命令匯總命令 命令格式:命令格式: total to 文件名文件名 on 關(guān)鍵字段名關(guān)鍵字段名 fields數(shù)值型字段表數(shù)值型字段表 范圍范圍for條件條件lwhile條件條件2 功能:在當(dāng)前表中,分別對關(guān)鍵字段名值相同的記錄的數(shù)功能:在當(dāng)前表中,分別對關(guān)鍵字段名值相同的記錄的數(shù)值型字段值求和,并將結(jié)果存入一個(gè)新表值型字段值求和,并將結(jié)果存入一個(gè)新表闡明:闡明: (1)關(guān)鍵字段名指排序字段或索引關(guān)鍵字,即當(dāng)前表必須是有關(guān)鍵字段名指排序字段或索引關(guān)鍵字,即當(dāng)前表必須是有序的,否則不能匯總序的,否則不能匯總 (2)FIELDS子句的數(shù)值型字段表指出要分類求

34、和的字段。如子句的數(shù)值型字段表指出要分類求和的字段。如果缺省,則對表中所有數(shù)值型字段分類求和果缺省,則對表中所有數(shù)值型字段分類求和 (3)匯總的數(shù)值型字段,該字段值求和后存入?yún)R總文件中;對于非匯總的數(shù)值型字段,該字段值求和后存入?yún)R總文件中;對于非數(shù)值型字段,只把與關(guān)鍵字值相同的第一個(gè)記錄的字段值放入?yún)R數(shù)值型字段,只把與關(guān)鍵字值相同的第一個(gè)記錄的字段值放入?yún)R總文件中總文件中例例5-21:對:對js.dbf按職稱匯總工資按職稱匯總工資 use js index on 職稱職稱 tag zc total on 職稱職稱 to zcgz fields 工資工資 use zcgz brow5.5 多工作

35、區(qū)的操作多工作區(qū)的操作一一 工作區(qū)與數(shù)據(jù)工作期工作區(qū)與數(shù)據(jù)工作期多工作區(qū)多工作區(qū)工作區(qū)號(hào)工作區(qū)號(hào) 表打開后才能進(jìn)行操作。實(shí)際上,打開表就是把它從磁盤表打開后才能進(jìn)行操作。實(shí)際上,打開表就是把它從磁盤調(diào)入內(nèi)存的某一個(gè)工作區(qū)。調(diào)入內(nèi)存的某一個(gè)工作區(qū)。VFP提供了提供了32767個(gè)工作區(qū),編號(hào)個(gè)工作區(qū),編號(hào)從從1到到32767每個(gè)工作區(qū)只允許打開一個(gè)表,若在已有表的工作每個(gè)工作區(qū)只允許打開一個(gè)表,若在已有表的工作區(qū)打開新的表,以前打開的表就會(huì)自動(dòng)關(guān)閉區(qū)打開新的表,以前打開的表就會(huì)自動(dòng)關(guān)閉別名別名 前前10個(gè)工作區(qū)除編號(hào)外,還可依次用個(gè)工作區(qū)除編號(hào)外,還可依次用AJ十個(gè)字母代表工十個(gè)字母代表工作區(qū)號(hào),

36、這稱為工作區(qū)別名。還有一種代表表文件名的別名叫作區(qū)號(hào),這稱為工作區(qū)別名。還有一種代表表文件名的別名叫表別名,用命令表別名,用命令“usealias”指定,例如命令指定,例如命令“use stud alias xs指定指定xs為為stud的別名。如果未用的別名。如果未用alias子句子句對表指定別名,對表指定別名, VFP默認(rèn)表主名為別名。例如命令默認(rèn)表主名為別名。例如命令“use stud表示表示stud.dbf的別名也是的別名也是stud。注:在當(dāng)前工作區(qū)調(diào)用其他工作區(qū)中的表文件字段時(shí),要使用以下注:在當(dāng)前工作區(qū)調(diào)用其他工作區(qū)中的表文件字段時(shí),要使用以下別名調(diào)用格式:別名調(diào)用格式:(1)工作

37、區(qū)別名工作區(qū)別名.字段名字段名 或或 工作區(qū)別名工作區(qū)別名字段名字段名 (2) 表別名表別名.字段名字段名 或或 表別名表別名字段名字段名選擇工作區(qū)選擇工作區(qū) SELECT 工作區(qū)號(hào)工作區(qū)號(hào) | 別名別名 功能:選定某個(gè)工作區(qū)為當(dāng)前工作區(qū)功能:選定某個(gè)工作區(qū)為當(dāng)前工作區(qū)闡明:闡明: (1)用用SELECT命令選定的工作區(qū)稱為當(dāng)前工作區(qū),命令選定的工作區(qū)稱為當(dāng)前工作區(qū),VFP默認(rèn)默認(rèn)1號(hào)工作區(qū)為當(dāng)前工作區(qū)。函數(shù)號(hào)工作區(qū)為當(dāng)前工作區(qū)。函數(shù)SELECT( )可以返回當(dāng)前工作可以返回當(dāng)前工作區(qū)的區(qū)號(hào)。區(qū)的區(qū)號(hào)。例:例:close all select 1 use stud select 2 use j

38、s disp a.姓名姓名,a.性別性別,姓名姓名sele adisp 姓名姓名, 性別性別,b.姓名姓名?select()sele jsgo 2disp a.姓名姓名,a.性別性別,姓名姓名(2)命令命令“SELECT 0表示選定當(dāng)前未使用的最小工作區(qū)號(hào)表示選定當(dāng)前未使用的最小工作區(qū)號(hào) 例:通過多表操作查出肖君老師所授課程的課程號(hào)例:通過多表操作查出肖君老師所授課程的課程號(hào),并顯示相應(yīng)的并顯示相應(yīng)的教師號(hào),姓名,課程號(hào)教師號(hào),姓名,課程號(hào) close all cleal select 1 use js locate for 姓名姓名=肖君肖君 select 2 use sk locate f

39、or 教師號(hào)教師號(hào)= display fields 教師號(hào),姓名,課程號(hào)教師號(hào),姓名,課程號(hào) close alljs.教師號(hào)教師號(hào) (3) 命令命令“USE文件名文件名IN工作區(qū)號(hào)工作區(qū)號(hào)”相當(dāng)于:相當(dāng)于: SELECT工作區(qū)號(hào)工作區(qū)號(hào) USE文件名文件名二二 表的關(guān)聯(lián)表的關(guān)聯(lián)關(guān)聯(lián)的概念關(guān)聯(lián)的概念 所謂關(guān)聯(lián),就是令不同工作區(qū)的記錄指針建立一種臨時(shí)的所謂關(guān)聯(lián),就是令不同工作區(qū)的記錄指針建立一種臨時(shí)的聯(lián)動(dòng)關(guān)系,若一個(gè)表的記錄指針移動(dòng)會(huì)使另一個(gè)表的記錄指針聯(lián)動(dòng)關(guān)系,若一個(gè)表的記錄指針移動(dòng)會(huì)使另一個(gè)表的記錄指針能隨之移動(dòng)。能隨之移動(dòng)。多一關(guān)系多一關(guān)系 按照不同表的兩個(gè)字段表達(dá)式值相等來關(guān)聯(lián)的原則,若出

40、按照不同表的兩個(gè)字段表達(dá)式值相等來關(guān)聯(lián)的原則,若出現(xiàn)父表多條記錄對應(yīng)子表中一條記錄的情況,這種關(guān)聯(lián)稱為多現(xiàn)父表多條記錄對應(yīng)子表中一條記錄的情況,這種關(guān)聯(lián)稱為多一關(guān)系一關(guān)系一多關(guān)系一多關(guān)系 按照不同表的兩個(gè)字段表達(dá)式值相等來關(guān)聯(lián)的原則,若出按照不同表的兩個(gè)字段表達(dá)式值相等來關(guān)聯(lián)的原則,若出現(xiàn)父表一條記錄對應(yīng)子表中多條記錄的情況,這種關(guān)聯(lián)稱為一現(xiàn)父表一條記錄對應(yīng)子表中多條記錄的情況,這種關(guān)聯(lián)稱為一多關(guān)系多關(guān)系 多一關(guān)系父表父表子表子表索引字段索引字段 一多關(guān)系父表父表子表子表索引字段索引字段zymc.dbfstud.dbf用命令方式建立關(guān)聯(lián)用命令方式建立關(guān)聯(lián)建立關(guān)聯(lián)命令建立關(guān)聯(lián)命令 命令格式:命令

41、格式: set relation to 表達(dá)式表達(dá)式l into 別名別名1 , 表達(dá)式表達(dá)式N into 別名別名 Nadditive 功能:以當(dāng)前表為父表與其他一個(gè)或多個(gè)子表建立關(guān)聯(lián)功能:以當(dāng)前表為父表與其他一個(gè)或多個(gè)子表建立關(guān)聯(lián)闡明:闡明:(1)表達(dá)式用來指定父表的字段表達(dá)式,其值將與表達(dá)式用來指定父表的字段表達(dá)式,其值將與子子 表索引關(guān)鍵字對照,看二者是否相同。別名表索引關(guān)鍵字對照,看二者是否相同。別名 表表示示 子表別名或其所在的工作區(qū)別名子表別名或其所在的工作區(qū)別名 (2)ADDITIVE保證在建立關(guān)聯(lián)時(shí)不取消以前建立的關(guān)保證在建立關(guān)聯(lián)時(shí)不取消以前建立的關(guān)聯(lián)聯(lián) (3)命令命令“se

42、t relation to ”解除關(guān)聯(lián)解除關(guān)聯(lián)例例5-24:列出所有學(xué)生的姓名、性別、專業(yè)號(hào)、專業(yè)名稱、計(jì)算機(jī):列出所有學(xué)生的姓名、性別、專業(yè)號(hào)、專業(yè)名稱、計(jì)算機(jī)基礎(chǔ)的成績,試寫出命令序列。基礎(chǔ)的成績,試寫出命令序列。close allselect 1use cjindex on 學(xué)號(hào)學(xué)號(hào) tag xhselect 2use zymcindex on 專業(yè)號(hào)專業(yè)號(hào) tag zyhselect 3use studset relation to 學(xué)號(hào)學(xué)號(hào) into a,專業(yè)號(hào)專業(yè)號(hào) into b list all fields 姓名姓名,性別性別,專業(yè)號(hào)專業(yè)號(hào),b.專業(yè)名稱專業(yè)名稱,a.計(jì)算機(jī)基礎(chǔ)

43、計(jì)算機(jī)基礎(chǔ)set relation to 學(xué)號(hào)學(xué)號(hào) into aset relation to 專業(yè)號(hào)專業(yè)號(hào) into b additive例例5-24:利用:利用stud.dbf、xk.dbf、kc.dbf顯示學(xué)生選課的課程名稱與顯示學(xué)生選課的課程名稱與課程的成績情況課程的成績情況go 2disp 姓名姓名, b.專業(yè)名稱專業(yè)名稱, a.計(jì)算機(jī)基礎(chǔ)計(jì)算機(jī)基礎(chǔ)sele 2go 3disp c.姓名姓名, 專業(yè)名稱專業(yè)名稱, a.計(jì)算機(jī)基礎(chǔ)計(jì)算機(jī)基礎(chǔ)說明一多關(guān)系的命令說明一多關(guān)系的命令 set skip to別名別名1,別名,別名2 功能:用在功能:用在set relation命令之后,說明關(guān)聯(lián)

44、性命令之后,說明關(guān)聯(lián)性質(zhì)為質(zhì)為 一多關(guān)系一多關(guān)系闡明:闡明: (1)別名表示在一多關(guān)系中位于多方的子表別名表示在一多關(guān)系中位于多方的子表別名或其所在的工作區(qū)別名別名或其所在的工作區(qū)別名 (2)不帶可選項(xiàng)的命令不帶可選項(xiàng)的命令“set skip to用于取消用于取消一多關(guān)系一多關(guān)系利用數(shù)據(jù)工作期窗口建立關(guān)聯(lián)利用數(shù)據(jù)工作期窗口建立關(guān)聯(lián)例例5-25:利用表:利用表stud和和zymc顯示學(xué)生的姓名顯示學(xué)生的姓名, 性別和選課的專業(yè)號(hào)性別和選課的專業(yè)號(hào),專業(yè)名稱專業(yè)名稱 close tables allselect 1use studindex on 專業(yè)號(hào)專業(yè)號(hào) tag zyhselect 2use zymcset relation to 專業(yè)號(hào)專業(yè)號(hào) into aset skip to alist all fields a.姓名姓名,a.性別性別,a.專業(yè)號(hào)專業(yè)號(hào),專業(yè)名稱專業(yè)名稱省略命令省略命令 set s

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論