




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