版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章數(shù)據(jù)庫(kù)操作技術(shù)
15.1數(shù)據(jù)庫(kù)基本操作
5.1.1
結(jié)構(gòu)顯示和表的訪問(wèn)
5.1.2
記錄操作5.2數(shù)據(jù)庫(kù)可視化操作
5.2.1
記錄的瀏覽與編輯修改
5.2.2
備注字段和通用字段的操作5.3排序與索引
5.3.1
排序操作
5.3.2
索引操作5.4查詢(xún)命令
5.4.1
順序查詢(xún)
5.4.2
索引查詢(xún)內(nèi)容目錄25.5多表的操作
5.5.1
工作區(qū)
5.5.2
表的關(guān)聯(lián)
5.5.3
表的聯(lián)接5.6統(tǒng)計(jì)命令
5.6.1計(jì)數(shù)命令
5.6.2求和命令
5.6.3求平均值命令
5.6.4匯總命令5.7表的復(fù)制
5.7.1表的復(fù)制
5.7.2表結(jié)構(gòu)的復(fù)制5.8SELECT-SQL查詢(xún)5.9視圖(*)內(nèi)容目錄3(8)掌握對(duì)表中數(shù)據(jù)的四種統(tǒng)計(jì)命令(SUM、AVERAGE、COUNT、TOTAL)使用方法。
(9)掌握SELECT查詢(xún)語(yǔ)句的引用,能靈活根據(jù)數(shù)據(jù)查詢(xún)要求組合WHERE、HAVING、ORDERBY、GROUPBY等子句并能使用INSERTINTO、DELETEFROM、UPDATESET語(yǔ)句。45.1.1表結(jié)構(gòu)顯示和表的訪問(wèn)1、表結(jié)構(gòu)顯示 格式:LIST|DISPLAYSTRUCTURE[TOPRINT
]
[PROMPT]|TOFILE
<文件名>][NOCONSOLE]說(shuō)明:(1)TOPRINT[PROMPT]:列表結(jié)果輸入打印機(jī),后跟[PROMPT]則顯示打印機(jī)設(shè)置對(duì)話框。(2)TOFILE<文件名>]:列表結(jié)果保存在文件中。(3)[NOCONSOLE]:列表結(jié)果不在屏幕上顯示。
(4)LIST顯示的內(nèi)容是連續(xù)的,而DISPLAY是分屏顯示5.1數(shù)據(jù)庫(kù)基本操作例:顯示XSCJ數(shù)據(jù)庫(kù)STUDENT表的結(jié)構(gòu)。在命令窗口中輸入:
OPENDATABASEe:\vfp6\data\xscj.dbc
USEstudent
LISTSTRUCTURE屏幕上顯示student.dbf的表結(jié)構(gòu):2、數(shù)據(jù)庫(kù)結(jié)構(gòu)顯示 格式:LIST|DISPLAYDATABASE例:顯示XSCJ數(shù)據(jù)庫(kù)的結(jié)構(gòu)。輸入命令:
OPENDATABASEe:\vfp6\data\xscj.dbc
LISTDATABASE3、表的打開(kāi)與關(guān)閉
只有打開(kāi)表后,才能對(duì)表進(jìn)行操作。表關(guān)閉時(shí)數(shù)據(jù)會(huì)自動(dòng)存盤(pán)。命令打開(kāi)或關(guān)閉表打開(kāi)表:USE<表文件名>[EXCLUSIVE|SHARED]
關(guān)閉表:USE
菜單方式打開(kāi)表
(工作區(qū)概念放在本章第5節(jié)介紹)
說(shuō)明:
1)打開(kāi)一個(gè)表,就自動(dòng)關(guān)閉該工作區(qū)原已打開(kāi)的表,一個(gè)工作區(qū)同一時(shí)間只能打開(kāi)一個(gè)表。
2)表剛打開(kāi)時(shí),記錄指針指向第一條記錄。
3)表操作完后應(yīng)及時(shí)關(guān)閉。
4)只有以獨(dú)占方式打開(kāi)才能對(duì)表的結(jié)構(gòu)和記錄內(nèi)容修改?;蛟诖蜷_(kāi)表文件對(duì)話框中選定獨(dú)占復(fù)選框。關(guān)閉表的其它方法:其它命令:命令功能CLEARALL關(guān)閉所有表,釋放內(nèi)存變量及用戶(hù)定義的菜單和窗口(但不釋放系統(tǒng)變量)CLOSEALL關(guān)閉所有數(shù)據(jù)庫(kù)和表CLOSEDATABASE[ALL]關(guān)閉當(dāng)前數(shù)據(jù)庫(kù)及其中的表[自由表]CLOSETABLES[ALL]關(guān)閉當(dāng)前數(shù)據(jù)庫(kù)中的表[自由表],但不關(guān)閉數(shù)據(jù)庫(kù)退出VFP即關(guān)閉表5.1.2記錄操作
表記錄的基本操作有顯示、修改、插入、刪除、替換。1、記錄顯示格式:LIST|DISPLAY
[FIELDS<字段名表>][<范圍>][FOR<邏輯表達(dá)式1>][WHILE<邏輯表達(dá)式2>]
[TOPRINTER[PROMPT]|TOFILE<文件>]功能:連續(xù)顯示記錄說(shuō)明:<范圍>記錄范圍,有NEXT、ALL、REST和RECORD記錄號(hào)子句;
【示例】顯示學(xué)生記錄。USEstudentLIST&&顯示所有的記錄Listfor性別="女"GO3DisplayListfields
學(xué)號(hào),姓名,所在系for
黨員=.t.
&&(或Listfields學(xué)號(hào),姓名,所在系for黨員)Listtott.txtListtoprint2、記錄瀏覽(P74)格式:BROWSE[FIELDS<字段表>][FOR<邏輯表達(dá)式1>][FREEZE<字段>]…【示例】瀏覽學(xué)生記錄。USEstudentbrowse&&瀏覽所有的記錄browsefields
學(xué)號(hào),姓名,所在系freeze
姓名for
黨員=.t.
記錄指針:用來(lái)指示表文件中記錄位置的指針。當(dāng)前記錄:指針當(dāng)前所指向的記錄。3、記錄指針的定位(1)指針的絕對(duì)移動(dòng)命令格式:GO|GOTO[RECORD]<記錄號(hào)>GO|GOTOTOP|BOTTOM示例:USEstudentGO3DISPGOTORECO5DISPGOTOPDISP學(xué)號(hào)姓名
性別98001李泳
男98002劉一幀女98003王小敏女98004張大山男98005張強(qiáng)男98006王達(dá)女98007許志忠男98008劉曉忠男(2)指針的相對(duì)移動(dòng)命令格式:SKIP[+|-][<算術(shù)表達(dá)式>]示例:USEstudent?RECNO(),BOF()
&&1.F.
SKIP–1?RECNO(),BOF()
&&1.T.
SKIP–1
&&到文件頭
GO8?RECNO(),EOF()
&&8.F.
SKIP?RECNO(),EOF()
&&9.T.
SKIP
&&到文件尾4、記錄的插入與追加(1)插入新記錄格式:INSERT[BLANK][BEFORE]
示例:USEstudentSKIP2
INSERTBLANKSKIP
INSERTBLANKBEFORE(2)追加新記錄(*)INSERT-SOL命令格式:INSERTINTO表名[(字段名1[,字段名2,…])]VALUE(表達(dá)式1[,表達(dá)式2,…])功能:在表尾追加一條新記錄,并直接給記錄賦字段值。
(不必事先打開(kāi)表)APPEND命令格式:APPEND[BLANK]功能:在表尾追加一條新記錄。APPENDFROM命令格式:APPENDFROM<文件名>[FIELDS<字段名表>][FOR<邏輯表達(dá)式>][TYPE….]
功能:在當(dāng)前表末尾追加一批記錄,這些記錄來(lái)自于另一文件(表、文本或EXCL文件)。示例2:USEstudentAPPEFROMSTUAPPEFROMSTUtx1
typedelimitedwithblank
APPEFROMSTUxls
xls
LIST5、記錄的刪除與恢復(fù)(1)邏輯刪除命令格式:DELETE[<范圍>][FOR<條件>][WHILE<條件>]功能:對(duì)當(dāng)前表在指定<范圍>內(nèi)符合<條件>的記錄加上刪除標(biāo)記。
(2)物理刪除命令格式:PACK功能:真正刪除帶有刪除標(biāo)記的記錄。示例:USEstudent
DELETEALLFORNOT黨員
PACKLIST
(3)記錄恢復(fù)命令格式:RECALL[<范圍>][FOR<條件>][WHILE<條件>]功能:對(duì)當(dāng)前表在指定<范圍>內(nèi)符合<條件>的記錄去除刪除標(biāo)記。
(4)記錄清除命令格式:ZAP功能:物理刪當(dāng)前表中所有記錄。示例:USESCDELETEALLFOR成績(jī)<=60or成績(jī)>90LISTrecallfor課程號(hào)=“001”LIST6、表數(shù)據(jù)的替換(1)成批修改數(shù)據(jù)格式:REPLACE<字段1>WITH<表達(dá)式1>[ADDITIVE][,<字段2>WITH<表達(dá)式2>[ADDITIVE]…][<范圍>][FOR<條件>]
[WHILE<條件>]說(shuō)明:ADDITIVE用在備注字段,表示將表達(dá)式的值添加到字段的原有內(nèi)容后,而不是替換。示例:USESC.DBFREPLACEALL成績(jī)WITH成績(jī)+10FOR成績(jī)<60LIST(2)單記錄與數(shù)組間的數(shù)據(jù)傳送將記錄傳送到數(shù)組或內(nèi)存格式:SCATTER[FIELDS<字段名表>]TO<數(shù)組名>|MEMVAR說(shuō)明:將當(dāng)前記錄的字段值按<字段名表>順序依次送入數(shù)組中,或依次送入一組內(nèi)存變量。示例:USEstudentSCATTERFIELDS學(xué)號(hào),姓名,性別toA?A(1),A(2),A(3) SCATTERFIELDS學(xué)號(hào),姓名,性別MEMVAR?m.學(xué)號(hào),m.姓名,m.性別將數(shù)組或內(nèi)存變量傳送到記錄格式:GATHERFROM<數(shù)組名>|MEMVAR[FIELDS<字段名表>]說(shuō)明:將數(shù)組或內(nèi)存變量的數(shù)據(jù)依次傳送到當(dāng)前記錄,以替換相應(yīng)字段值。示例:USEstudentGO4SCATTERtoA?A(1),A(2),A(4),A(6) A(6)=“MA” GATHERFROMADISPLAY(3)成批記錄與數(shù)組間的數(shù)據(jù)傳送將表的一批記錄復(fù)制到數(shù)組格式:COPYTOARRY<數(shù)組名>[FIELDS<字段名表>][<范圍>][FOR<條件>][WHILE<條件>]說(shuō)明:將當(dāng)前表選定的數(shù)據(jù)復(fù)制到<數(shù)組名>表數(shù)組中,不復(fù)制備注型字段。
(菜單方式:文件導(dǎo)出)從數(shù)組向表追加記錄格式:APPENDFROMARRY<數(shù)組名>[FIELDS<字段名表>][FOR<條件>]說(shuō)明:將滿足條件的數(shù)組行數(shù)據(jù)按記錄依次追加到當(dāng)前表中。(菜單方式:文件導(dǎo)入)7、邏輯表的設(shè)置(1)過(guò)濾器(記錄篩選,即關(guān)系的選擇運(yùn)算)格式:SETFILTERTO<條件>功能:從當(dāng)前表中過(guò)濾出符合<條件>的記錄,不符合<條件>的記錄被“遮蔽”。示例:USEscSETFILTERTO成績(jī)>80ANDLEFT(學(xué)號(hào),2)=“98”LISTSETFILTERTOLIST(2)字段表(字段篩選,即關(guān)系的投影運(yùn)算)格式:SETFIELDSTO[<字段名表>]|ALLLIKE<通配字段名>|EXCEPT<通配字段名>]功能:設(shè)置后,只能對(duì)當(dāng)前表中指定的字段(列)進(jìn)行操作,其它字段被“遮蔽”,用SETFIELDSOFF解除。示例:USEstudentSETFIELDSTO學(xué)號(hào),姓名,所在系
LISTSETFIELDSOFFLIST(1)兩種記錄顯示方式:編輯和瀏覽
通過(guò)“顯示”菜單來(lái)切換(2)瀏覽窗口的操作
命令打開(kāi)瀏覽窗口:USE<表名>
BROWSE
獨(dú)占方式打開(kāi)表才可對(duì)表數(shù)據(jù)進(jìn)行修改。一窗兩區(qū)顯示記錄的操作方法。
browsereditpartition505.2.1記錄瀏覽與編輯修改 5.2數(shù)據(jù)庫(kù)可視化操作(3)在瀏覽窗口追加與刪除記錄記錄的追加:有“追加方式”和“追加新記錄”兩種菜單選項(xiàng)操作,前者為連續(xù)追加。記錄的刪除:先給記錄打上刪除標(biāo)記再?gòu)拇疟P(pán)上刪除。即先做邏輯刪除,在進(jìn)行物理刪除。(1)通用型字段數(shù)據(jù)錄入 雙擊進(jìn)入錄入窗口,插入圖像、圖形、聲音等對(duì)象(2)通用型字段數(shù)據(jù)的修改
進(jìn)入通用型字段數(shù)據(jù)錄入窗口,雙擊該窗口進(jìn)入對(duì)象文件的編輯環(huán)境修改。
注意對(duì)象的鏈接與嵌入(OLE)兩種方式的區(qū)別。(3)通用型字段數(shù)據(jù)刪除2、通用型字段的操作方法 5.2.2備注字段和通用字段的操作 1、備注字段的操作方法
Ctrl+PgDn或雙擊進(jìn)入,Ctrl+W存盤(pán)退出,Ctrl+Q或Esc放棄退出。
5.3排序與索引(P83)
排序:表中記錄按照某個(gè)字段值的大小順序重新排列。排序后將產(chǎn)生一個(gè)新表,但原文件不變。5.3.1排序操作命令格式:SORTTO<新文件名>ON<字段名1>[/A][/D][/C][,<字段名2>[/A][/D][/C]…][<范圍>][FOR<條件>][WHILE<條件>][FIELDS<字段名表>]示例:對(duì)STUDENT表按所在系排序。
usestudentSORTON
學(xué)號(hào)/dTOtt.dbf&&按學(xué)號(hào)降序排序,并將結(jié)果存入tt.dbf中
USEtt
&&打開(kāi)tt.dbfLIST
&&顯示結(jié)果大小
(要注意區(qū)分索引與排序的差別。)5.3.2索引操作格式1(建立.IDX單索引文件):INDEXON<索引關(guān)鍵字>TO<單索引文件名>[FOR<條件>][UNIQUE][COMPACT][ADDITIVE]示例:USEsc*****按學(xué)號(hào)建普通索引文件XHidx*****INDEXON學(xué)號(hào)TOXHidxLIST*****按課程號(hào)升序建唯一索引文件KHidx*****INDEXON課程號(hào)
TOKHidxUNIQUELIST1、建立索引文件格式2(建立.CDX復(fù)合索引文件):INDEXON<索引關(guān)鍵字>TAG
<標(biāo)記名>[OF<復(fù)合索引文件名>][UNIQUE|CANDIDATE][ASCENDING/DESCENDING][ADDITIVE][FOR<條件>]示例:對(duì)SC.DBF建立各項(xiàng)索引。
USEsc*****按成績(jī)降序建普通索引標(biāo)識(shí)cj*****INDEXON成績(jī)
TAGcjDESCENDINGLIST*****先按課程號(hào)升序再按成績(jī)升序建普通索引標(biāo)識(shí)kccj*****INDEXON課程號(hào)+STR(成績(jī),6,2)
TAGkccjLIST*****先按課程號(hào)升序再按成績(jī)降序建候選索引標(biāo)識(shí)kccj1*****INDEXONVAL(課程號(hào))-成績(jī)/1000TAGkccj1CANDIDATE
2、索引文件的使用
一個(gè)表可以打開(kāi)多個(gè)索引文件,但任何時(shí)候只有一個(gè)索引文件起作用,這當(dāng)前起作用的索引文件就稱(chēng)為主控索引文件;同樣,對(duì)一個(gè)復(fù)合索引文件打開(kāi)的多個(gè)索引標(biāo)識(shí)中,任何時(shí)候都只有主控索引起作用。
結(jié)構(gòu)復(fù)合索引文件隨著表的打開(kāi)而打開(kāi)。單索引文件的打開(kāi)和關(guān)閉(*)
打開(kāi)格式:1、USE<表文件名>INDEX<索引文件表>
2、SETINDEXTO<索引文件表>[ADDITIVE]
關(guān)閉格式(關(guān)閉表就自然關(guān)閉了索引文件):
SETINDEXTO示例:USEscSETINDEXTOXHidx,KHidx&&前者xhidx為主控索引文件
LIST確定復(fù)合索引的主控索引格式:SETORDERTO[<數(shù)值表達(dá)式>|<單索引文件名>]|[TAG]<索引標(biāo)識(shí)>]取消復(fù)合索引的主控索引格式:SETORDERTO
或
SETORDERTO0刪除索引(刪除文件方式來(lái)刪除單索引文件)刪除索引標(biāo)識(shí)命令格式:
DELETETAGALL|<索引標(biāo)識(shí)1>[,<索引標(biāo)識(shí)2>]…重新索引
主控索引隨著記錄操作自動(dòng)更新,而非主控索引不會(huì),在使用該索引時(shí)需要進(jìn)行重新索引。
格式:REINDEX5.4查詢(xún)命令5.4.1順序查詢(xún)1、LOCATE命令格式:LOCATE[<范圍>]FOR<條件>[WHILE<條件>]功能:順序查找指定條件的記錄,記錄指針并定位在該記錄上。2、CONTINUE命令格式:CONTINUE功能:繼續(xù)先前的LOCATE查詢(xún)【示例】
按指定條件定位記錄。USEstudentLOCATEFOR所在系=”IS”
&&找到第一個(gè)“IS”系學(xué)生記錄continue
&&再找到下一個(gè)“IS”系學(xué)生的記錄
FIND和SEEK是針對(duì)索引關(guān)鍵字進(jìn)行查找,故使用索引查詢(xún)命令前,要求查詢(xún)的文件必須先建立了索引,1、FIND命令格式:FIND<字符表達(dá)式>功能:在索引的表文件中查詢(xún)與字符表達(dá)式匹配的第一個(gè)記錄5.4.2索引查詢(xún)命令(FIND和SEEK)【示例】查找學(xué)號(hào)=“98004”的學(xué)生。USEstudentINDEXON學(xué)號(hào)
TAGsnott="98004"FIND&ttDISPLAY記錄號(hào)學(xué)號(hào)姓名性別出生日期黨員所在系簡(jiǎn)歷照片
498004張大山男11/30/81.T.CSmemogen2、SEEK命令格式:SEEK<表達(dá)式>功能:在主控索引的表中按索引關(guān)鍵字搜索滿足<表達(dá)式>值的第一個(gè)記錄。
【示例】查找學(xué)號(hào)=“98004”的學(xué)生。USEstudentSETORDERTOsnoSEEK“98004”DISPLAY記錄號(hào)學(xué)號(hào)姓名性別出生日期黨員所在系簡(jiǎn)歷照片
498004張大山男11/30/81.T.CSmemogen5.5多表的操作5.5.1工作區(qū)
學(xué)籍管理使用的4個(gè)表學(xué)生情況表(STUDENT.DBF):STUDENT(學(xué)號(hào)c(5),姓名c(8),性別
c(2),出生日期d,黨員l,所在系
c(2),簡(jiǎn)歷m,照片g)課程情況表(COURSE.DBF):course(課程號(hào)c(3),課程名c(10),學(xué)時(shí)數(shù)n(4),學(xué)分n(3,1))
成績(jī)表(SC.DBF):sc(學(xué)號(hào)c(5),課號(hào)c(3),成績(jī)n(6,2))學(xué)生特長(zhǎng)表(SPE.DBF):spe(學(xué)號(hào)c(5),專(zhuān)業(yè)c(10),外語(yǔ)水平
c(4),特長(zhǎng)c(20))1、工作區(qū)號(hào)
VFP提供了32767個(gè)工作區(qū),編號(hào)從1到32767。每個(gè)工作區(qū)只允許打開(kāi)一個(gè)表,在同一工作區(qū)打開(kāi)另一個(gè)表時(shí),以前打開(kāi)的表就會(huì)自動(dòng)關(guān)閉。一個(gè)表如果要在不同工作區(qū)中再次打開(kāi),則須在USE命令中加上“AGAIN”選項(xiàng)。2、別名
前10個(gè)工作區(qū)除使用1~10為編號(hào)外,還默認(rèn)用A~J十個(gè)字母作為工作區(qū)別名。VFP自動(dòng)使用文件名作為默認(rèn)表別名??捎肬SE<文件名>ALIAS<別名>
來(lái)指定表別名。3、工作區(qū)的使用(1)SELECT<工作區(qū)號(hào)>∣<別名>&&指定要打開(kāi)表的工作區(qū)號(hào)
SELECT0
&&選定當(dāng)前尚未使用的最小 號(hào)工作區(qū)
SELECT()
&&返回當(dāng)前工作區(qū)號(hào)
別名.字段名
&&引用其它工作區(qū)中打開(kāi)的 表的字段
(2)
USE<表名>IN<工作區(qū)號(hào)>∣<別名>&&在指定的工作區(qū) 打開(kāi)表,但不改變 當(dāng)前工作區(qū)
【示例】通過(guò)多區(qū)操作從SC.DBF表中學(xué)號(hào)查出其在STUDENT.DBF表中對(duì)應(yīng)的姓名。CLOSEALL&&關(guān)閉所有打開(kāi)的表,當(dāng)前工作區(qū)為1號(hào)工作區(qū)SELECT1USEscGO8&&該記錄的學(xué)號(hào)字段值為98004SELECT0&&選定2號(hào)工作區(qū)為當(dāng)前工作區(qū)USEstudentINDEXON學(xué)號(hào)TAGsnoSEEKsc.學(xué)號(hào)
&&即SEEK“98004”?sc.學(xué)號(hào),姓名,SC.成績(jī)&&98004張大山89.00
SELECTsc&&選定SC.DBF所在工作區(qū)為當(dāng)前工作區(qū)?學(xué)號(hào),STUDENT.姓名,成績(jī)
&&98004張大山89.005.5.2表的關(guān)聯(lián)(*)
1、關(guān)聯(lián)的概念
令不同工作區(qū)的記錄指針建立一種臨時(shí)的聯(lián)動(dòng)關(guān)系,使一個(gè)表的記錄指針移動(dòng)時(shí)另一個(gè)表的記錄指針能隨之移動(dòng)。
2、建立關(guān)聯(lián)步驟
·
(1)、確定建立關(guān)聯(lián)的兩個(gè)表,一為父表,一為子表。
(2)子表用關(guān)聯(lián)的字段表達(dá)式先建立索引。
(3)用關(guān)聯(lián)命令建立關(guān)聯(lián)。命令中指明關(guān)聯(lián)字段表達(dá)式。
(4)如是一多關(guān)系,聲名一多關(guān)系
3、關(guān)聯(lián)命令
1)建立關(guān)聯(lián)
格式:SETRELATIONTO[<表達(dá)式1>INTO<別名1>,…,
<表達(dá)式N>INTO<別名N>][ADDITIVE]
功能:以當(dāng)前表為父表與其它子表建立關(guān)聯(lián)
2)解除關(guān)聯(lián):格式:
SETRELATIONTO
3)說(shuō)明一多關(guān)系:
格式:
SETSKIPTO[<表別名1>[,<表別名2>]…]
功能:用在SETRELATION命令后,說(shuō)明已建關(guān)聯(lián)為一多關(guān)系
4)取消一多關(guān)系:
SETSKIPTO
【示例】利用建立表間關(guān)聯(lián),列出所有學(xué)生的學(xué)號(hào)、姓名、系名、課程號(hào)、成績(jī),試寫(xiě)出命令序列。系表結(jié)構(gòu)為dep(所在系C(2),系名C(12))STUDENT—DEP多一關(guān)系
STUDENT—SC一多關(guān)系CLOSALLSELECT2USEdepINDEXON所在系
TAGxbhADDITIVESELECT3USEscINDEXON學(xué)號(hào)
TAGxhADDITIVESELECT1USEstudentSETRELATIONTO所在系INTOdepSETRELATIONTO學(xué)號(hào)INTOscADDITIVE
SETSKIPTOscBROWSEFIELDSSTUDENT.學(xué)號(hào),STUDENT.姓名,DEP.系名,;SC.課程號(hào),SC.成績(jī)5.5.3表的聯(lián)接
格式:JOINWITH<工作區(qū)別名>|<表別名>TO<新表名>FOR<聯(lián)接條件>[FIELDS<字段名表>NOOPTIMIZE]
功能:按照FOR子句規(guī)定的聯(lián)接條件,將當(dāng)前工作區(qū)中的表與另一個(gè)以<工作區(qū)號(hào)>或<表別名>表示的工作區(qū)中的表進(jìn)行聯(lián)接,從而產(chǎn)生一個(gè)新表?!臼纠繉⒈鞸C和表COURSE聯(lián)接為一個(gè)新表SCB,要求包含學(xué)號(hào),課程名和成績(jī)等3個(gè)字段。CLOSEALLSELECT1USEcourseSELECT2USEscJOINWITHcourseTOscbFIELDS學(xué)號(hào),;course.課程名,成績(jī)FORcourse.課程號(hào)=課程號(hào)USEscbBROWSE5.6統(tǒng)計(jì)命令5.6.1計(jì)數(shù)命令
格式:COUNT[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量>]
功能:計(jì)算指定范圍內(nèi)滿足條件的記錄數(shù)。
VFP提供5種命令來(lái)支持統(tǒng)計(jì)功能。
【示例】
:統(tǒng)計(jì)數(shù)學(xué)成績(jī)不及格人數(shù)
usesc
countfor
成績(jī)<60.and.課程號(hào)=“002”
tors
?
“數(shù)學(xué)成績(jī)不及格人數(shù):”,rs5.6.2求和命令格式:SUM[<數(shù)值表達(dá)式表>][<范圍>][FOR<條件>][WHILE
<條件>][TO<內(nèi)存變量表>|ARRAY<數(shù)組>]
功能:在打開(kāi)的表中,對(duì)<數(shù)值表達(dá)式表>的各個(gè)表達(dá)式分別求和?!臼纠扛鶕?jù)course.dbf求所有課程的總學(xué)分。
usecourse
SUM學(xué)分
toxf
?
“課程總學(xué)分為:”,xf5.6.3求平均值命令格式:AVERAGE[<數(shù)值表達(dá)式表>][<范圍>][FOR<條件
>][WHILE<條件>][TO<內(nèi)存變量表>|ARRAY<數(shù)組>]
功能:在打開(kāi)的表中,對(duì)<數(shù)值表達(dá)式表>中的各個(gè)表達(dá)式分別求平均值?!臼纠扛鶕?jù)sc.dbf求98001號(hào)學(xué)生所有課程的平均成績(jī)。
usesc
AVERAGE成績(jī)
topjcjfor學(xué)號(hào)=“98001”
?
“98001號(hào)學(xué)生的平均成績(jī)?yōu)椋骸?,pjcj5.6.4匯總命令格式:TOTALTO<文件名>ON<關(guān)鍵字>[FIELDS<數(shù)值型字段表>][<范圍>][FOR<條件>][WHILE<條件>]
功能:分別對(duì)<關(guān)鍵字>值相同的記錄的數(shù)值型字段值求和,并將結(jié)果存入一個(gè)新表。一組關(guān)鍵字值相同的記錄在新表中產(chǎn)生一個(gè)記錄;對(duì)于非數(shù)值型字段,只將關(guān)鍵字值相同的第一個(gè)記錄的字段值放入該記錄。說(shuō)明:(1)<關(guān)鍵字>指排序字段或索引關(guān)鍵字,即當(dāng)前表必須是有序的,否則不能匯總。
(2)FIELDS子句的<數(shù)值型字段表>指出要匯總的字段。若缺省,則對(duì)表中所有數(shù)值型字段匯總。
【示例】對(duì)賓館收銀表SY,按樓層對(duì)其數(shù)值字段進(jìn)行匯總。 USESY INDEXON樓層TOSYI SETINDEXTOSYI LISTRecord#樓層房號(hào) 姓名 其它應(yīng)收房費(fèi) 實(shí)際金額1二樓 2010 劉炎 48.00250.00 298.002二樓 2020 周敏 50.00300.00 350.003二樓 2030 郭潔45.00500.00 545.004三樓 3001 郭丹丹80.00650.00 730.005三樓 3008 于馳 50.00450.00 500.006三樓 3007 羅貴先45.00500.00 545.00 TOTALON樓層TONSUMFIELDS其它應(yīng)收,房費(fèi),實(shí)際金額
USENSUM LISTRecord#樓層 房號(hào) 姓名 其它應(yīng)收房費(fèi)實(shí)際金額1 二樓 2010 劉炎 143 1050.00 1193.002 三樓 3001 郭丹丹175 1600.00 1775.005.7表的復(fù)制5.7.1表與表結(jié)構(gòu)的復(fù)制 1、任意類(lèi)型文件的復(fù)制格式:COPYFILE<源文件名>TO<目標(biāo)文件名>示例:COPYTOstudent1.DBFCOPYTOstudent1.FPT2、數(shù)據(jù)表文件的復(fù)制(*)格式:COPYTO<新表文件名>[<范圍>][FIELDS<字段名表>][FOR<邏輯表達(dá)式>][WHILE<邏輯表達(dá)式>][TYPE….]
示例1:USEstudent
COPYTOstudent3fields學(xué)號(hào),姓名FOR所在系=“CS”USEstudent3LIST示例2:USEstudentcopytoSTUtxttypesdfcopytoSTUtxt1typedelimitedwithblankcopytoSTUxlsxlstypeSTUtxt.txttypeSTUtxt1.txt5.7.2表結(jié)構(gòu)的復(fù)制格式:COPYSTRUCTURETO<文件名>[FIELDS<字段名表>]示例1:USEstudent
COPYSTRU
TO
student4fields學(xué)號(hào),姓名,所在系
USEstudent4
LISTSTRU5.8SELECT-SQL查詢(xún)
SELECT-SQL查詢(xún)是從SQL語(yǔ)言移植過(guò)來(lái)的查詢(xún)命令,具有強(qiáng)大的單表與多表查詢(xún)功能。
SQL是一種結(jié)構(gòu)化數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)言,它是一種使用你選擇的標(biāo)準(zhǔn)從數(shù)據(jù)庫(kù)記錄中選擇某些記錄的方法。其發(fā)音為“sequel”或“S-Q-L”。
VFP支持在命令窗口直接使用SELECT-SQL命令,也可通過(guò)“查詢(xún)?cè)O(shè)計(jì)器”窗口來(lái)設(shè)計(jì)查詢(xún)、生成查詢(xún)文件,然后運(yùn)行定制的查詢(xún)。SQL主要幾個(gè)命令動(dòng)詞:SELECT、CREATE、DROP、ALTER、INSERT、UPDATE、DELETECREATTABLE<表名>(<字段名1><字段類(lèi)型>[(<字段寬度>[,<小數(shù)位>])][,<字段名2>…])
ALTERTABLE<表名>ADD|ALTER[COLUMN]<字段名>,<字段類(lèi)型>[(<字段寬度>[,<小數(shù)位>])]
INSERTINTO表名[(字段名1[,字段名2,…])]VALUE(表達(dá)式1[,表達(dá)式2,…])DROPTABLE<表名>
UPDATE<表名>SET<字段名1=表達(dá)式1>[,<字段名2=表達(dá)式2>…]
DELETEFROM<表名>[WHERE<條件表達(dá)式>]5.8.1用SELECT-SQL命令直接查詢(xún)1、SELECT-SQL命令的格式
SELECT[ALL|DISTINCT][<別名>.]<SELECT表達(dá)式>[AS<列名>][,[<別名>.]<SELECT表達(dá)式>[AS<列名>]…]
FROM[FORCE][<數(shù)據(jù)庫(kù)名>!]<表名>[<本地名>][[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOIN<數(shù)據(jù)庫(kù)名>!]<表名>[<本地名>]ON<聯(lián)接條件>…]
[[INTO<目標(biāo)>]|[TOFILE<文件名>[ADDITIVE]]|[TOPRINTER][PROMPT]|[TOSCREEN]]
[PREFERENCE<名字>][NOCONSOLE][PLAIN][NOWAIT]
[WHERE<聯(lián)接條件>[AND<聯(lián)接條件>…][AND|OR<篩選條件>[AND|OR<篩選條件>…]]]
[GROUPBY<組表達(dá)>[,<組表達(dá)>…]][HAVING<篩選條件>]
[UNION[ALL]<SELECT命令>]
[ORDERBY<關(guān)鍵字表達(dá)式>[ASC|DESC][,<關(guān)鍵字表達(dá)式>[ASC|DESC]…]]
[TOP<數(shù)值表達(dá)式>[PERCENT]]SELECT說(shuō)明要查詢(xún)的語(yǔ)句FROM說(shuō)明要查詢(xún)的數(shù)據(jù)來(lái)自哪個(gè)(些)表WHERE說(shuō)明查詢(xún)條件GROUPBY對(duì)查詢(xún)結(jié)果進(jìn)行分組,用于分組匯總HAVING須跟GROUPBY使用,限定分組的條件ORDERBY
對(duì)查詢(xún)結(jié)果進(jìn)行排序SELECT-SQL命令的JOIN子句:內(nèi)部聯(lián)接INNERJOIN
左聯(lián)接LEFTOUTERJOIN外部聯(lián)接:右聯(lián)接RIGHTOUTERJOIN
完全聯(lián)接FULLOUTERJOIN2、SELECT-SQL命令查詢(xún)示例
(1)單表查詢(xún)示例
【示例-1】顯示student.dbf表中所有學(xué)生的學(xué)號(hào)、姓名、性別(從一個(gè)表中選取三個(gè)字段)。
SELECT學(xué)號(hào),姓名,性別FROMstudent【示例-2】顯示student.dbf表中所有“CS”系學(xué)生的學(xué)號(hào)、姓名、性別、所在系,其中以“系”作為列標(biāo)題替代“所在系”。
SELECT學(xué)號(hào),姓名,性別,所在系as
系FROMstudent;
where
所在系=“CS”【示例-3】對(duì)sc.dbf先按課號(hào)升序再按成績(jī)降序排序,并將結(jié)果存入新表sc1.dbf。
SELECT學(xué)號(hào),課程號(hào),成績(jī)FROMsc;
ORDERBY
課程號(hào),成績(jī)
DESC;
INTOTABLEsc1【示例-4】顯示sc.dbf中各課程平均成績(jī)(按課程分組,對(duì)成績(jī)求平均)。
select
課程號(hào),avg(成績(jī))as
平均成績(jī);
fromscgroupby
課程號(hào)【示例-5】找出學(xué)生考試成績(jī)之和大于200分的學(xué)生,并將結(jié)果存入數(shù)組SZSC。執(zhí)行程序(2)多表查詢(xún)示例(聯(lián)接查詢(xún))【示例-6】?jī)H查詢(xún)學(xué)號(hào)為98002的學(xué)生的成績(jī),同時(shí)顯示其學(xué)號(hào)、姓名、課程號(hào)和成績(jī)。解一:SELECTstudent.學(xué)號(hào),student.姓名,sc.課程號(hào),sc.成績(jī);FROMscINNERJOINstudentONstudent.學(xué)號(hào)=sc.學(xué)號(hào);
WHEREstudent.學(xué)號(hào)="98002"解二:SELECTstudent.學(xué)號(hào),student.姓名,sc.課程號(hào),sc.成績(jī)
FROM
student,sc;
WHEREstudent.學(xué)號(hào)=sc.學(xué)號(hào)ANDstudent.學(xué)號(hào)="98002"
【示例-7】試統(tǒng)計(jì)學(xué)生修讀課程門(mén)數(shù),要求:(1)student.學(xué)號(hào)后三位小于006;(2)顯示姓名與修讀門(mén)數(shù);(3)顯示結(jié)果按修讀門(mén)數(shù)降序排列。解一:
SELECTstudent.姓名,COUNT(SC.學(xué)號(hào))AS修讀門(mén)數(shù);
FROMstudentINNERJOINscONstudent.學(xué)號(hào)=sc.學(xué)號(hào);
WHEREright(student.學(xué)號(hào),3)<“006”;
GROUPBYSC.學(xué)號(hào);
ORDERBY2DESCENDING解二:SELECTa.姓名,COUNT(b.學(xué)號(hào))AS修讀門(mén)數(shù);
FROMstudenta,scb;
WHEREa.學(xué)號(hào)=b.學(xué)號(hào)andright(a.學(xué)號(hào),3)<"006";
GROUPBYb.學(xué)號(hào);
ORDERBY
2
DESCENDING
【示例-8】查詢(xún)不及格的學(xué)生的成績(jī),同時(shí)顯示其學(xué)號(hào)、姓名、課程名和成績(jī)。注意:本查詢(xún)涉及student,course和sc三個(gè)表SELECTa.學(xué)號(hào),a.姓名,b.課程名,c.成績(jī);FROMstudenta,courseb,scc;WHEREa.學(xué)號(hào)=c.學(xué)號(hào)ANDc.課程號(hào)=b.課程號(hào)ANDc.成績(jī)<605.8.2用查詢(xún)?cè)O(shè)計(jì)器建立查詢(xún)
可生成一條SELECT-SQL語(yǔ)句,并保存在查詢(xún)文件(.QPR)中。1、查詢(xún)?cè)O(shè)計(jì)器
(1)上部窗格:顯示已打開(kāi)的表。
(2)下部窗格
①字段選項(xiàng)卡
②聯(lián)接選項(xiàng)卡:
③篩選選項(xiàng)卡④排序依據(jù)選項(xiàng)卡⑤分組依據(jù)選項(xiàng)卡⑥雜項(xiàng)選項(xiàng)卡2、查詢(xún)?cè)O(shè)計(jì)器的操作
打開(kāi)查詢(xún)?cè)O(shè)計(jì)器、設(shè)置查詢(xún)、執(zhí)行查詢(xún)、保存查詢(xún)
【例3-23】試用查詢(xún)?cè)O(shè)計(jì)器來(lái)查詢(xún)學(xué)號(hào)為98002的學(xué)生的成績(jī),同時(shí)顯示其學(xué)號(hào)、姓名、課程號(hào)和成績(jī)。
查詢(xún)文件的命令方式打開(kāi):MODIFYQUERY
<查詢(xún)文件名>【示例】試通過(guò)查詢(xún)?cè)O(shè)計(jì)器來(lái)查詢(xún)學(xué)號(hào)為98008的學(xué)生的成績(jī),顯示其學(xué)號(hào)、姓名、課程號(hào)、課程名和成績(jī),并按課程號(hào)降序排列。3、查詢(xún)菜單的幾個(gè)命令
(1)查看SQ
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江藝術(shù)職業(yè)學(xué)院《數(shù)學(xué)模型與實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024版簡(jiǎn)式房屋買(mǎi)賣(mài)定金合同范本
- 青海大學(xué)《應(yīng)用數(shù)學(xué)下》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州商學(xué)院《幾何畫(huà)板應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州理工職業(yè)學(xué)院《數(shù)學(xué)建模競(jìng)賽訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024心理素質(zhì)拓展訓(xùn)練合同
- 浙江建設(shè)職業(yè)技術(shù)學(xué)院《復(fù)變函數(shù)和積分變換》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西財(cái)經(jīng)職業(yè)學(xué)院《概率論與應(yīng)用統(tǒng)計(jì)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024版工業(yè)級(jí)管材及配件購(gòu)銷(xiāo)協(xié)議示例版B版
- 《知識(shí)產(chǎn)權(quán)基礎(chǔ)》課件
- 2024版智能硬件產(chǎn)品研發(fā)合作協(xié)議3篇
- 《乘用車(chē)越野性能主觀評(píng)價(jià)方法》
- 國(guó)家電網(wǎng)招聘之財(cái)務(wù)會(huì)計(jì)類(lèi)題庫(kù)含完整答案(必刷)
- 幼師個(gè)人成長(zhǎng)發(fā)展規(guī)劃
- 2024-2025學(xué)年北師大版高二上學(xué)期期末英語(yǔ)試題及解答參考
- 2024年手術(shù)室?guī)Ы坦ぷ饔?jì)劃樣本(5篇)
- 一年級(jí)數(shù)學(xué)(上)計(jì)算題專(zhuān)項(xiàng)練習(xí)匯編
- 保安服務(wù)招投標(biāo)書(shū)范本(兩篇)2024
- 遼寧省沈陽(yáng)市五校協(xié)作體2024-2025學(xué)年高二上學(xué)期11月期中考試語(yǔ)文試題(含答案)
- 算法分析與設(shè)計(jì)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 保密知識(shí)培訓(xùn)
評(píng)論
0/150
提交評(píng)論