版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
5.1SQL語言概述 5.2SQL的數(shù)據(jù)定義功能5.3SQL的數(shù)據(jù)操縱功能5.4數(shù)據(jù)查詢5.5小型案例實訓(xùn) 第5章結(jié)構(gòu)化查詢語言SQL學(xué)習(xí)目的與要求●掌握SQL的定義數(shù)據(jù)的基本命令及格式;●掌握SQL對數(shù)據(jù)的操縱;●掌握SQL的綜合數(shù)據(jù)查詢功能。5.1SQL語言概述1.綜合統(tǒng)一2.高度非過程化3.面向集合的操作方式4.以同一種語法結(jié)構(gòu)提供兩種使用方式5.語言簡潔、易學(xué)易用SQL語言的特點:5.2SQL的數(shù)據(jù)定義功能格式:CREATETABLE<表名>(<字段名1><數(shù)據(jù)類型>[(<寬度>[,<小數(shù)位數(shù)>])][,<字段名2>…])功能:定義(也稱創(chuàng)建)一個表。說明:(1)<表名>是要創(chuàng)建的表文件名。(2)TABLE也可以用DBF代替。5.2.2建立表結(jié)構(gòu)5【例】創(chuàng)建一個表STUD(學(xué)生信息表),它由以下字段組成:學(xué)號(C,10);姓名(C,8);性別(C,2);班級名(C,10);系別代號(C,2);地址(C,50);出生日期(D);是否團員(L);備注(M)。CREATETABLESTUD(學(xué)號C(10),姓名C(10),性別C(2),班級名C(10),系別代號C(2),地址C(50),出生日期D,是否團員L,備注M,照片G)LISTSTRUCTURE【例】創(chuàng)建一個表SC(課程成績表),它由以下字段組成:學(xué)號(C,10);課程號(C,2)。CREATETABLESC(學(xué)號C(10),課程號C(2))LISTSTRUCTURE5.2.2建立表結(jié)構(gòu)5.2SQL的數(shù)據(jù)定義功能格式:ALTERTABLE<表名>[ADD<新列定義><數(shù)據(jù)類型>][ALTER<列名><數(shù)據(jù)類型>][DROP<字段名>]功能:修改表的結(jié)構(gòu)?!纠吭趯W(xué)生成績表中增加一個總成績字段,總成績N(5,1)ALTERTABLE學(xué)生成績ADD總成績N(5,1)LISTSTRUCTURE【例】將學(xué)生情況表的”姓名“字段的寬度改為8ALTERTABLE學(xué)生情況ALTER姓名C(8)LISTSTRUCTURE5.2.3修改數(shù)據(jù)表7【例】刪除學(xué)生情況表中的”簡歷“字段。Altertable學(xué)生情況drop簡歷Modifystructure
注:關(guān)鍵字alter是修改字段;add關(guān)鍵字是增加字段;drop關(guān)鍵字是刪除字段。
5.2SQL的數(shù)據(jù)定義功能5.2.3修改數(shù)據(jù)表8
數(shù)據(jù)操縱語言是完成數(shù)據(jù)操作的命令,一般分為兩種類型的數(shù)據(jù)操縱,它們統(tǒng)稱為DML:●數(shù)據(jù)檢索(常稱為查詢):尋找所需的具體數(shù)據(jù)。●數(shù)據(jù)修改:添加、刪除和改變數(shù)據(jù)。數(shù)據(jù)操縱語言一般由INSERT(插入)、DELETE(刪除)、UPDATE(更新),SELETE(檢索,又稱查詢)等組成,由于SELETE比較特殊,所以一般又將它以查詢(檢索)語言單獨出現(xiàn)。5.3SQL的數(shù)據(jù)操縱功能9【格式】INSERTINTO<表名>[(<字段名表>)]VALUES(<表達式表>)【功能】在指定的表文件末尾追加一條記錄。用表達式表中的各表達式值賦值給<字段名表>中的相應(yīng)的各字段?!菊f明】1、插入的字段名一定要與VALUES后面對應(yīng)表達式的數(shù)據(jù)類型一致。2、如果插入的是表中依次完整的一條記錄,則<字段名表>可以省略掉,否則必須指定。5.3SQL的數(shù)據(jù)操縱功能
5.3.1插入記錄103、<表達式表>:指定要追加的記錄各個字段的值,可以是具體值也可以是表達式?!纠吭趯W(xué)生情況.DBF文件的末尾追加一條記錄。INSERTINTO學(xué)生情況(學(xué)號,姓名,性別,出生日期,畢業(yè)否,專業(yè),助學(xué)金)VALUES(“41110”,“李建國”,“男”,{^1984-10-14},.f.,’計算機’,40)因為追加的是一條完整的記錄,所以字段名的指定可以省略INSERTINTO學(xué)生情況VALUES(“41110”,“李建國”,“男”,{^1984-10-14},.f.,’計算機’,40)5.3SQL的數(shù)據(jù)操縱功能
5.3.1插入記錄11【例】在學(xué)生情況.dbf末尾追加一條新記錄
Insertinto學(xué)生情況(學(xué)號,姓名,性別,畢業(yè)否,專業(yè),助學(xué)金)values(‘50008’,’王勇’,’男’,.T.,’數(shù)學(xué)’,50)說明:因為追加的不是一條完整的記錄,因此字段名的指定不可省略。5.3SQL的數(shù)據(jù)操縱功能
5.3.1插入記錄5.3SQL的數(shù)據(jù)操縱功能格式:DELETEFROM<表名>[WHERE<條件表達式>]功能:從指定表中,根據(jù)指定的條件邏輯刪除記錄。說明:如果要物理刪除記錄,在該命令后還必須用PACK命令。使用RECALL命令可以恢復(fù)邏輯刪除的記錄。【實例】將學(xué)生情況.dbf中所有男生的記錄邏輯刪除。DELETEFROM學(xué)生情況WHERE性別="男"
提示: ●DELETE只對表中的記錄做邏輯刪除,即添加刪除標(biāo)記,物理上并沒有刪除。
●如果想徹底刪除(物理刪除)必須與PACK命令配合使用。5.3.2刪除記錄5.3SQL的數(shù)據(jù)操縱功能格式:UPDATE<數(shù)據(jù)表>SET<字段名l>=<表達式l>[,<字段名2>=<表達式2>…][WHERE<邏輯表達式>]【實例】將學(xué)生情況.dbf中,所有專業(yè)為工業(yè)會計的學(xué)生助學(xué)金增加50。
UPDATE學(xué)生情況SET助學(xué)金=助學(xué)金+50;WHERE專業(yè)=“工業(yè)會計"
提示: ●一次可以更新一個字段,也可以更新多個字段。
●作為更新條件的字段,不可以更新。5.3.3更新記錄145.4數(shù)據(jù)查詢
SQL數(shù)據(jù)查詢語句各子句的功能SELECT子句:指定查詢中要輸出的字段。如果要輸出全部字段用*。FROM子句:指定查詢的數(shù)據(jù)源,多個數(shù)據(jù)源之間用逗號隔開。WHERE子句:指定查詢要滿足的條件,條件中數(shù)據(jù)類型一定要一致。GROUPBY子句:指定查詢需要的分組字段。ORDERBY子句:指定查詢需要的排序字段,升序用ASC,系統(tǒng)默認是升序,所以可以省去ASC,但是如果是降序必須指定DESC。INTO子句:指定查詢的去向15【格式】SELECT[*|DISTINCT]<字段列表>|<函數(shù)>FROM<表>【功能】無條件查詢?!菊f明】*:表示顯示全部查詢記錄,包括重復(fù)記錄。DISTINCT:表示顯示時去除重復(fù)值,顯示無重復(fù)結(jié)果的記錄。
5.4.1簡單查詢16【例12-1】顯示學(xué)生情況表中學(xué)號,姓名和專業(yè)字段的內(nèi)容SELECT學(xué)號,姓名,專業(yè)FROM學(xué)生情況【例12-2】顯示學(xué)生情況.DBF中的所有記錄。SELECT*FROM學(xué)生情況命令中的*表示輸出顯示所有的字段,數(shù)據(jù)來源是學(xué)生情況表,表中的內(nèi)容以瀏覽方式顯示?!纠?2-3】查詢學(xué)生情況表中專業(yè)數(shù)目。SELECTCOUNT(DISTINCT專業(yè))AS專業(yè)個數(shù)FROM學(xué)生情況5.4.1簡單查詢17【例12-4】顯示學(xué)生成績表中的所有記錄,并將成績乘以0.7。SELECT學(xué)號,姓名,外語*0.7,計算機*0.7FROM學(xué)生成績SELECT學(xué)號,課程號,外語*0.7AS外語成績,計算機*0.7AS計算機成績FROM學(xué)生成績5.4.1簡單查詢18【格式】SELECT[*|DISTINCT]<字段列表>FROM<表>[WHERE<條件表達式>]【功能】從一個表中查詢滿足條件的數(shù)據(jù)?!菊f明】<條件表達式>的格式可以是教材表5-3中的運算符5.4.2條件(WHERE)查詢19【例12-5】顯示學(xué)生情況表中所有男生記錄的學(xué)號,姓名和性別字段值。SELECT學(xué)號,姓名,性別;FROM學(xué)生情況WHERE性別="男"【例12-6】顯示學(xué)生成績表中計算機成績在80—90分之間的學(xué)生的學(xué)號,姓名,計算機成績SELECT學(xué)號,姓名,計算機;FROM學(xué)生成績;WHERE計算機BETWEEN80AND905.4.2條件(WHERE)查詢20注意:BETWEENAND表示在……之間【例12-7】顯示學(xué)生情況表中姓王的學(xué)生的學(xué)號,姓名,出生日期。SELECT學(xué)號,姓名,出生日期;FROM學(xué)生情況;WHERE姓名LIKE“王%”注意:在SQL語句中通配符%代表任意個任意字符?;蛘撸簊elect學(xué)號,姓名,出生日期;From學(xué)生情況whereleft(姓名,2)=‘王’5.4.2條件(WHERE)查詢215.4.3SQL的復(fù)雜查詢1.連接查詢
【說明】在一個數(shù)據(jù)庫中的多個表之間一般都存在著某些聯(lián)系,在一個查詢語句中同時涉及到兩個或兩個以上的表時,這種查詢稱之為連接查詢(也稱為多表查詢)。在多表之間查詢必須處理表與表之間的連接關(guān)系。
SELECT[*|DISTINCT]<字段列表>;
FROM<表1>[,表2…..];
WHERE<條件表達式>22【例12-8】查詢并顯示各個學(xué)生的姓名,專業(yè),各科成績。
SELECT學(xué)生情況.姓名,專業(yè),外語,計算機;FROM學(xué)生情況,學(xué)生成績;WHERE學(xué)生情況.學(xué)號=學(xué)生成績.學(xué)號或者SELECT學(xué)生情況.姓名,專業(yè),外語,計算機;FROM學(xué)生情況JOIN學(xué)生成績ON學(xué)生情況.學(xué)號=學(xué)生成績.學(xué)號注:當(dāng)數(shù)據(jù)源中多個表具有同一字段時,要指定該字段必須加以限制!1.連接查詢23【例12-9】查詢并顯示計算機專業(yè)學(xué)生外語成績的情況。SELECT學(xué)生情況.學(xué)號,學(xué)生情況.姓名,外語;FROM學(xué)生情況,學(xué)生成績;WHERE學(xué)生情況.學(xué)號=學(xué)生成績.學(xué)號and專業(yè)=‘計算機’注意:在FROM子句中可以為表指定一個別名。格式:FROM<表名><別名>【例12-10】SELECTb.姓名,計算機,專業(yè);FROM學(xué)生情況aJOIN學(xué)生成績bONa.學(xué)號=b.學(xué)號
1.連接查詢24在SQL語句中,一個SELECT-FROM-WHERE語句稱為一個查詢塊。將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢或子查詢。一般情況是要查詢輸出的字段來自于一個表,而查詢滿足的條件則來自于另一個表,這時就要用嵌套查詢。有時也可以用連接查詢做。【例12-11】顯示計算機成績大于80分的學(xué)生的學(xué)號,姓名和專業(yè)。
SELECT學(xué)號,姓名,專業(yè);FROM學(xué)生情況;WHERE學(xué)號IN(SELECT學(xué)號FROM學(xué)生成績WHERE計算機>80)2.嵌套查詢255.4.4.對查詢結(jié)果排序
如果沒有指定查詢結(jié)果的顯示順序,將按其最方便的順序(通常是元組在表中的先后順序)輸出查詢結(jié)果。用戶也可以用ORDERBY子句指定按照一個或多個屬性列的升序(ASC)或降序(DESC)重新排列查詢結(jié)果,其中升序ASC為缺省值?!纠?2-12】查詢所有學(xué)生信息,并按出生日期排序。
SELECT*FROM學(xué)生情況ORDERBY出生日期
26【例12-13】按專業(yè)降序,姓名升序顯示學(xué)生情況表中的學(xué)號、姓名、專業(yè)。
SELECT學(xué)號,姓名,專業(yè);FROM學(xué)生情況;ORDERBY專業(yè)DESC,姓名5.4.4.對查詢結(jié)果排序275.4.5.使用集函數(shù)
主要集函數(shù)包括:
COUNT([DISTINCT|ALL]*|列名)
統(tǒng)計元組個數(shù)。
SUM([DISTINCT|ALL]<列名>)
計算一列值的總和(此列必須是數(shù)值型)
AVG([DISTINCT|ALL]<列名>)計算一列值的平均值(此列必須是數(shù)值型)
MAX([DISTINCT|ALL]<列名>)計算一列值的最大值
MIN([DISTINCT|ALL]<列名>)計算一列值的最小值28
【例12-14】查詢學(xué)生人數(shù)。
SELECTCOUNT(學(xué)號)AS人數(shù);FROM學(xué)生情況
【例12-15】查詢專業(yè)為計算機的學(xué)生計算機平均成績
SELECT專業(yè),AVG(計算機)AS平均成績;FROM學(xué)生情況,學(xué)生成績;WHERE學(xué)生情況.學(xué)號=學(xué)生成績.學(xué)號AND專業(yè)=‘計算機’
5.4.5.使用集函數(shù)
29【格式】SELECT分組表達式,集函數(shù);FROM表名;WHERE<條件>;GROUPBY<分組表達式>…[HAVING<過濾條件>]
GROUPBY<分組表達式>:表示分組查詢,若查詢到的數(shù)據(jù)里有多個記錄的指定字段的值相同,只取一條記錄作為查詢結(jié)果。HAVING<過濾條件>:指定分組進一步滿足的條件,只能跟在GROUPBY后面使用,不可獨立使用。5.4.6.分組與計算查詢30【例12-16】顯示各專業(yè)總?cè)藬?shù)。
SELECT專業(yè),COUNT(*)AS人數(shù);FROM學(xué)生情況;GROUPBY專業(yè)【例12-17】統(tǒng)計男女生人數(shù)
SELECT性別,COUNT(學(xué)號)AS人數(shù);FROM學(xué)生情況;GROUPBY性別5.4.6.分組與計算查詢31【例12-18】統(tǒng)計每個專業(yè)學(xué)生計算機成績的平均分SELECT學(xué)生情況.學(xué)號,學(xué)生情況.姓名,avg(計算機)as平均成績;FROM學(xué)生情況,學(xué)生成績;WHERE學(xué)生情況.學(xué)號=學(xué)生成績.學(xué)號;GROUPB
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蔬菜扶貧協(xié)議書
- 襪業(yè)銷售協(xié)議書
- 認養(yǎng)家禽協(xié)議書
- 認購點位協(xié)議書
- 設(shè)備劃轉(zhuǎn)協(xié)議書
- 設(shè)計托管協(xié)議書
- 設(shè)計終止協(xié)議書
- 請人護理協(xié)議書
- 工程分期合同范本
- 山嶺承包合同范本
- 酒駕恢復(fù)合同范本
- 湖南省長沙市望城區(qū)2024-2025學(xué)年四年級上學(xué)期期末考試數(shù)學(xué)試題
- 甘肅省蘭州新區(qū)2024-2025學(xué)年六年級上學(xué)期期末考試數(shù)學(xué)試題
- 公交車站設(shè)施維護管理方案
- 2024初級會計真題及答案(實務(wù)+經(jīng)濟法)
- 2025中國融通資產(chǎn)管理集團有限公司社會招聘考試筆試參考題庫附答案解析
- 2025心肺復(fù)蘇理論考試試題及答案
- 軌道交通PIS系統(tǒng)介紹
- 二次結(jié)構(gòu)鋼筋工程施工方案
- 地產(chǎn)設(shè)計總結(jié)(優(yōu)選14篇)
- 課程設(shè)計立體停車庫的控制plc設(shè)計
評論
0/150
提交評論