單元5查詢和更新數(shù)據(jù)_第1頁(yè)
單元5查詢和更新數(shù)據(jù)_第2頁(yè)
單元5查詢和更新數(shù)據(jù)_第3頁(yè)
單元5查詢和更新數(shù)據(jù)_第4頁(yè)
單元5查詢和更新數(shù)據(jù)_第5頁(yè)
已閱讀5頁(yè),還剩89頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單元5 查詢和更新數(shù)據(jù)引言引言數(shù)據(jù)庫(kù)、表創(chuàng)建好后,接下來的工作是對(duì)數(shù)據(jù)進(jìn)行操作,數(shù)據(jù)庫(kù)、表創(chuàng)建好后,接下來的工作是對(duì)數(shù)據(jù)進(jìn)行操作,包括查詢數(shù)據(jù)、插入數(shù)據(jù)、修改數(shù)據(jù)和刪除數(shù)據(jù)等。包括查詢數(shù)據(jù)、插入數(shù)據(jù)、修改數(shù)據(jù)和刪除數(shù)據(jù)等。數(shù)據(jù)操作是數(shù)據(jù)庫(kù)工程師和數(shù)據(jù)庫(kù)相關(guān)崗位人員日常工數(shù)據(jù)操作是數(shù)據(jù)庫(kù)工程師和數(shù)據(jù)庫(kù)相關(guān)崗位人員日常工作中必做的也是作中必做的也是最頻繁最頻繁的工作。的工作。【學(xué)習(xí)任務(wù)學(xué)習(xí)任務(wù)】任務(wù)任務(wù)1 單表查詢單表查詢?nèi)蝿?wù)任務(wù)2 數(shù)據(jù)匯總統(tǒng)計(jì)數(shù)據(jù)匯總統(tǒng)計(jì)任務(wù)任務(wù)3 多表連接查詢多表連接查詢?nèi)蝿?wù)任務(wù)4 數(shù)據(jù)更新數(shù)據(jù)更新任務(wù)任務(wù)5 使用圖形工具進(jìn)行數(shù)據(jù)操作使用圖形工具進(jìn)行數(shù)據(jù)操作【學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)

2、】理解理解SELECTSELECT語句的語法格式;語句的語法格式;能根據(jù)實(shí)際需求對(duì)單表或多表進(jìn)行數(shù)據(jù)查詢,熟能根據(jù)實(shí)際需求對(duì)單表或多表進(jìn)行數(shù)據(jù)查詢,熟練編寫練編寫SELECTSELECT語句;語句;能對(duì)數(shù)據(jù)進(jìn)行匯總計(jì)算、分組統(tǒng)計(jì);能對(duì)數(shù)據(jù)進(jìn)行匯總計(jì)算、分組統(tǒng)計(jì);能熟練使用能熟練使用SQLSQL語句對(duì)數(shù)據(jù)進(jìn)行更新;語句對(duì)數(shù)據(jù)進(jìn)行更新;能使用圖形工具進(jìn)行數(shù)據(jù)操作。能使用圖形工具進(jìn)行數(shù)據(jù)操作。任務(wù)任務(wù)1任務(wù)任務(wù)1 1 單表查詢單表查詢【任務(wù)提出任務(wù)提出】數(shù)據(jù)庫(kù)中最常見的操作是數(shù)據(jù)查詢,可以說數(shù)據(jù)查詢是數(shù)數(shù)據(jù)庫(kù)中最常見的操作是數(shù)據(jù)查詢,可以說數(shù)據(jù)查詢是數(shù)據(jù)庫(kù)的核心操作。據(jù)庫(kù)的核心操作。查詢可以對(duì)單表進(jìn)

3、行查詢,也可以完成復(fù)雜的連接查詢和查詢可以對(duì)單表進(jìn)行查詢,也可以完成復(fù)雜的連接查詢和嵌套查詢,其中對(duì)單表進(jìn)行查詢是數(shù)據(jù)查詢操作中最簡(jiǎn)單嵌套查詢,其中對(duì)單表進(jìn)行查詢是數(shù)據(jù)查詢操作中最簡(jiǎn)單的,所以我們先從的,所以我們先從單表查詢單表查詢?nèi)胧謱W(xué)習(xí)數(shù)據(jù)查詢操作。入手學(xué)習(xí)數(shù)據(jù)查詢操作?!救蝿?wù)分析任務(wù)分析】實(shí)現(xiàn)數(shù)據(jù)查詢操作必須使用實(shí)現(xiàn)數(shù)據(jù)查詢操作必須使用SQL語言中的語言中的SELECT語句語句。所以先學(xué)習(xí)和理解所以先學(xué)習(xí)和理解SELECT語句,然后針對(duì)實(shí)際需求對(duì)表語句,然后針對(duì)實(shí)際需求對(duì)表進(jìn)行查詢。進(jìn)行查詢?!鞠嚓P(guān)知識(shí)與技能相關(guān)知識(shí)與技能】1單表查詢的單表查詢的SELECT語句語句SELECT ALL|

4、DISTINCT 目標(biāo)列表達(dá)式目標(biāo)列表達(dá)式 FROM 表名表名 WHERE 行條件表達(dá)式行條件表達(dá)式 ORDER BY 排序列排序列 ASC|DESC【相關(guān)知識(shí)與技能相關(guān)知識(shí)與技能】2SELECT語句的含義語句的含義根據(jù)根據(jù)WHERE子句的行條件表達(dá)式,子句的行條件表達(dá)式,從從FROM子句指定的表中找出滿足條件的行(記錄),子句指定的表中找出滿足條件的行(記錄),再按再按SELECT子句中的列名或表達(dá)式選出記錄中的字子句中的列名或表達(dá)式選出記錄中的字段值形成查詢結(jié)果。段值形成查詢結(jié)果。如果有如果有ORDER BY子句,則查詢結(jié)果還要按照排序列子句,則查詢結(jié)果還要按照排序列的值進(jìn)行升序或降序排列

5、。的值進(jìn)行升序或降序排列。【任務(wù)實(shí)施任務(wù)實(shí)施】1選擇表中的若干列選擇表中的若干列(1)查詢部分列)查詢部分列格式:格式:SELECT 列名列名,n FROM 表名表名【例【例1】查詢所有學(xué)生的學(xué)號(hào)和姓名。】查詢所有學(xué)生的學(xué)號(hào)和姓名。【練習(xí)【練習(xí)1】查詢所有課程的課程編號(hào)、課程名稱和課程學(xué)】查詢所有課程的課程編號(hào)、課程名稱和課程學(xué)分。分。【任務(wù)實(shí)施任務(wù)實(shí)施】(2)查詢?nèi)苛校┎樵內(nèi)苛懈袷剑焊袷剑篠ELECT * FROM 表名表名【例【例2】查詢?nèi)w學(xué)生的詳細(xì)信息?!坎樵?nèi)w學(xué)生的詳細(xì)信息?!揪毩?xí)【練習(xí)2】查詢所有班級(jí)的詳細(xì)信息?!坎樵兯邪嗉?jí)的詳細(xì)信息?!救蝿?wù)實(shí)施任務(wù)實(shí)施】(3)為查詢結(jié)果集

6、內(nèi)的列指定別名)為查詢結(jié)果集內(nèi)的列指定別名格式格式1:SELECT 原列名原列名 AS 列別名列別名,n FROM 表名表名格式格式2:SELECT 原列名原列名 列別名列別名,n FROM 表名表名格式格式3:SELECT 列別名列別名=原列名原列名,n FROM 表名表名【例例3】查詢所有學(xué)生的學(xué)號(hào)和姓名,并指定別名為學(xué)生學(xué)號(hào)、查詢所有學(xué)生的學(xué)號(hào)和姓名,并指定別名為學(xué)生學(xué)號(hào)、學(xué)生姓名。學(xué)生姓名?!揪毩?xí)【練習(xí)3】查詢所有班級(jí)的詳細(xì)信息,并給查詢結(jié)果各列指定】查詢所有班級(jí)的詳細(xì)信息,并給查詢結(jié)果各列指定中文意義的別名。中文意義的別名?!救蝿?wù)實(shí)施任務(wù)實(shí)施】(4)查詢經(jīng)過計(jì)算的列)查詢經(jīng)過計(jì)算的列

7、格式:格式:SELECT 計(jì)算表達(dá)式或列名計(jì)算表達(dá)式或列名 FROM 表名表名【例【例4】查詢所有學(xué)生的學(xué)號(hào)、姓名和出生年份。】查詢所有學(xué)生的學(xué)號(hào)、姓名和出生年份?!揪毩?xí)【練習(xí)4】查詢所有學(xué)生的學(xué)號(hào)、姓名和年齡?!坎樵兯袑W(xué)生的學(xué)號(hào)、姓名和年齡?!救蝿?wù)實(shí)施任務(wù)實(shí)施】2選擇表中的若干行選擇表中的若干行(1)查詢滿足條件的記錄)查詢滿足條件的記錄格式:格式:SELECT 目標(biāo)列表達(dá)式目標(biāo)列表達(dá)式 FROM 表名表名 WHERE 行條件表達(dá)式行條件表達(dá)式【任務(wù)實(shí)施任務(wù)實(shí)施】1)比較大?。┍容^大小【例【例5】查詢所有女生的學(xué)號(hào)和姓名?!坎樵兯信膶W(xué)號(hào)和姓名。【練習(xí)練習(xí)5】查詢課程學(xué)時(shí)超過查詢課程學(xué)

8、時(shí)超過50學(xué)時(shí)的課程號(hào)和課程名稱。學(xué)時(shí)的課程號(hào)和課程名稱。【練習(xí)練習(xí)6】查詢所有在查詢所有在1992年年5月月10日后(包含日后(包含1992年年5月月10日)出生的學(xué)生的詳細(xì)信息。日)出生的學(xué)生的詳細(xì)信息。【練習(xí)練習(xí)7】查詢年齡小于查詢年齡小于20歲的學(xué)生的學(xué)號(hào)、姓名和出生歲的學(xué)生的學(xué)號(hào)、姓名和出生年月。查詢結(jié)果應(yīng)如圖年月。查詢結(jié)果應(yīng)如圖5-12所示。所示?!救蝿?wù)實(shí)施任務(wù)實(shí)施】2)確定范圍)確定范圍列名或計(jì)算表達(dá)式列名或計(jì)算表達(dá)式 NOT BETWEEN 下限值下限值 AND 上限值上限值【例【例6】查詢平時(shí)成績(jī)?cè)凇坎樵兤綍r(shí)成績(jī)?cè)?0100之間(包含之間(包含90和和100)的)的學(xué)號(hào)和課程

9、編號(hào)。學(xué)號(hào)和課程編號(hào)?!揪毩?xí)練習(xí)8】查詢出生年月在查詢出生年月在1991年年1月月1日至日至1991年年5月月30日之間的學(xué)生的學(xué)號(hào)和姓名。日之間的學(xué)生的學(xué)號(hào)和姓名。【任務(wù)實(shí)施任務(wù)實(shí)施】3)確定集合)確定集合列名或表達(dá)式列名或表達(dá)式 NOT IN (常量常量1,常量常量2,常量常量n)【例例7】查詢課程學(xué)時(shí)為查詢課程學(xué)時(shí)為30或或60的課程的課程編號(hào)和課程的課程的課程編號(hào)和課程名稱。名稱?!揪毩?xí)練習(xí)9】查詢所屬專業(yè)為查詢所屬專業(yè)為計(jì)算機(jī)應(yīng)用技術(shù)計(jì)算機(jī)應(yīng)用技術(shù)、軟件軟件技術(shù)技術(shù)的班級(jí)的班級(jí)編號(hào)、班級(jí)名稱及入學(xué)年份。的班級(jí)的班級(jí)編號(hào)、班級(jí)名稱及入學(xué)年份?!救蝿?wù)實(shí)施任務(wù)實(shí)施】4)字符匹配)字符匹配列

10、名列名 NOT LIKE 【例例8】查詢所有姓查詢所有姓陳陳的學(xué)生的學(xué)號(hào)和姓名。的學(xué)生的學(xué)號(hào)和姓名。 【練習(xí)【練習(xí)10】查詢所有姓陳且名為單個(gè)字的學(xué)生的學(xué)號(hào)和姓】查詢所有姓陳且名為單個(gè)字的學(xué)生的學(xué)號(hào)和姓名。名。【練習(xí)練習(xí)11】查詢所有課程名稱中含有查詢所有課程名稱中含有數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的課程的課的課程的課程編號(hào)、課程名稱。程編號(hào)、課程名稱。【練習(xí)練習(xí)12】查詢學(xué)生姓名中姓查詢學(xué)生姓名中姓張張、林林、江江的學(xué)生的學(xué)的學(xué)生的學(xué)號(hào)和姓名。號(hào)和姓名?!救蝿?wù)實(shí)施任務(wù)實(shí)施】5)涉及空值)涉及空值列名列名 IS NOT NULL【例例9】查詢期末成績(jī)現(xiàn)為空的學(xué)生的學(xué)號(hào)和課程編號(hào)。查詢期末成績(jī)現(xiàn)為空的學(xué)生的學(xué)號(hào)和

11、課程編號(hào)?!救蝿?wù)實(shí)施任務(wù)實(shí)施】(2)消除取值重復(fù)的行)消除取值重復(fù)的行SELECT DISTINCT 目標(biāo)列表達(dá)式目標(biāo)列表達(dá)式 FROM 表名表名【例例10】查詢期末成績(jī)有不及格的學(xué)生的學(xué)號(hào)。查詢期末成績(jī)有不及格的學(xué)生的學(xué)號(hào)?!揪毩?xí)練習(xí)13】查詢所有有選課記錄的學(xué)生的學(xué)號(hào)。查詢所有有選課記錄的學(xué)生的學(xué)號(hào)?!救蝿?wù)實(shí)施任務(wù)實(shí)施】(3)限制返回行數(shù))限制返回行數(shù)SELECT TOP 指定的行數(shù)指定的行數(shù) PERCENT 目標(biāo)列表達(dá)式目標(biāo)列表達(dá)式 FROM 表名表名【例例11】查詢返回學(xué)生表中的最前面查詢返回學(xué)生表中的最前面2條記錄作為樣本數(shù)據(jù)條記錄作為樣本數(shù)據(jù)顯示。顯示?!救蝿?wù)實(shí)施任務(wù)實(shí)施】3對(duì)查詢

12、結(jié)果排序?qū)Σ樵兘Y(jié)果排序ORDER BY 排序列名排序列名 ASC|DESC【例例12】查詢所有學(xué)生的詳細(xì)信息,查詢結(jié)果按照出生年查詢所有學(xué)生的詳細(xì)信息,查詢結(jié)果按照出生年月降序排列。月降序排列?!揪毩?xí)練習(xí)14】查詢選修了課程編號(hào)為查詢選修了課程編號(hào)為0901170的課程的學(xué)生的課程的學(xué)生的學(xué)號(hào)及其平時(shí)成績(jī),查詢結(jié)果按照平時(shí)成績(jī)升序排列。的學(xué)號(hào)及其平時(shí)成績(jī),查詢結(jié)果按照平時(shí)成績(jī)升序排列?!揪毩?xí)練習(xí)15】查詢所有學(xué)生的詳細(xì)信息,查詢結(jié)果按照班級(jí)查詢所有學(xué)生的詳細(xì)信息,查詢結(jié)果按照班級(jí)編號(hào)升序排列,對(duì)同一個(gè)班的學(xué)生按照學(xué)號(hào)升序排列。編號(hào)升序排列,對(duì)同一個(gè)班的學(xué)生按照學(xué)號(hào)升序排列。【練習(xí)練習(xí)16】查詢

13、所有學(xué)生中年齡最大的那位學(xué)生的學(xué)號(hào)和查詢所有學(xué)生中年齡最大的那位學(xué)生的學(xué)號(hào)和姓名。姓名。【任務(wù)實(shí)施任務(wù)實(shí)施】4多重條件查詢多重條件查詢【例例13】查詢班級(jí)編號(hào)為查詢班級(jí)編號(hào)為200901001的班中所有男生的的班中所有男生的【練習(xí)練習(xí)17】查詢課程的平時(shí)成績(jī)或期末成績(jī)超過查詢課程的平時(shí)成績(jī)或期末成績(jī)超過90分的學(xué)分的學(xué)生的學(xué)號(hào)和課程編號(hào),查詢結(jié)果按照學(xué)號(hào)升序排列,學(xué)號(hào)生的學(xué)號(hào)和課程編號(hào),查詢結(jié)果按照學(xué)號(hào)升序排列,學(xué)號(hào)相同的按照課程編號(hào)降序排列。相同的按照課程編號(hào)降序排列?!揪毩?xí)練習(xí)18】查詢出年齡超過查詢出年齡超過20歲女生的詳細(xì)信息。歲女生的詳細(xì)信息。【任務(wù)總結(jié)任務(wù)總結(jié)】行條件表達(dá)式中的歸納

14、注意點(diǎn)如下:行條件表達(dá)式中的歸納注意點(diǎn)如下:表達(dá)式中的字符型常量必須用單引號(hào)括起來,但字段名表達(dá)式中的字符型常量必須用單引號(hào)括起來,但字段名不能用單引號(hào)括起來;不能用單引號(hào)括起來;日期時(shí)間型常量須用單引號(hào)括起來。如日期時(shí)間型常量須用單引號(hào)括起來。如1992年年5月月10日日可使用以下任一格式表示:可使用以下任一格式表示:1992-05-10、1992/05/10、05/10/1992、19920510。范圍運(yùn)算符范圍運(yùn)算符BETWEENAND的語法格式為:的語法格式為: 列名 BETWEEN 下限值 AND 上限值;【任務(wù)總結(jié)任務(wù)總結(jié)】列表運(yùn)算符列表運(yùn)算符IN的語法格式為:的語法格式為:列名列

15、名 IN (常量常量1,常量常量2,常量常量n);模式匹配符模式匹配符LIKE的語法格式為:的語法格式為:列名列名 LIKE ;空值判斷符空值判斷符IS NULL的語法格式為:的語法格式為:列名列名 IS NULL,不要寫成:列名,不要寫成:列名=NULL;如果有多個(gè)條件,須使用如果有多個(gè)條件,須使用AND或或OR連接。切記出現(xiàn)如下連接。切記出現(xiàn)如下表達(dá)式表達(dá)式90=Uscore=100?!就卣咕毩?xí)拓展練習(xí)】1從從Dorm表中查詢所有宿舍的詳細(xì)信息。表中查詢所有宿舍的詳細(xì)信息。2從從Live表中查詢學(xué)號(hào)為表中查詢學(xué)號(hào)為200931010100101學(xué)生的住學(xué)生的住宿信息,包含宿舍編號(hào)宿信息,包

16、含宿舍編號(hào)DormNo、床位號(hào)、床位號(hào)BedNo和入住日和入住日期期InDate。3從從Dorm表中查詢所有男生宿舍(宿舍類別表中查詢所有男生宿舍(宿舍類別DormType為為男男)的詳細(xì)信息,結(jié)果按照樓棟)的詳細(xì)信息,結(jié)果按照樓棟Build升序排列,樓棟升序排列,樓棟相同的按照宿舍編號(hào)相同的按照宿舍編號(hào)DormNo升序排列。升序排列。4從從Live表中查詢?cè)诒碇胁樵冊(cè)?010年年9月份入住宿舍的學(xué)生的學(xué)月份入住宿舍的學(xué)生的學(xué)號(hào)號(hào)Sno、宿舍編號(hào)、宿舍編號(hào)DormNo和床位號(hào)和床位號(hào)BedNo?!就卣咕毩?xí)拓展練習(xí)】5從從CheckHealth表中查詢宿舍編號(hào)表中查詢宿舍編號(hào)DormNo為為L(zhǎng)C

17、B04N101宿舍在宿舍在2010年年10月份的衛(wèi)生檢查情況,結(jié)月份的衛(wèi)生檢查情況,結(jié)果包含檢查時(shí)間果包含檢查時(shí)間CheckDate、檢查人員、檢查人員CheckMan、成績(jī)、成績(jī)Score和存在問題和存在問題Problem。6從從CheckHealth表中查詢?cè)诒碇胁樵冊(cè)?010年年10月月1日至日至2010年年11月月30日之間宿舍衛(wèi)生檢查成績(jī)?nèi)罩g宿舍衛(wèi)生檢查成績(jī)Score在在7080分(包含分(包含70、80分)之間的宿舍編號(hào)分)之間的宿舍編號(hào)DormNo、檢查時(shí)間、檢查時(shí)間CheckDate和存在問題和存在問題Problem。7從從Dorm表中查詢?cè)诒碇胁樵冊(cè)邶埓显俘埓显返乃奚嵩?/p>

18、細(xì)信息。(在的宿舍詳細(xì)信息。(在龍川南苑龍川南苑指樓棟指樓棟Build包含包含龍川南苑龍川南苑)。)?!就卣咕毩?xí)拓展練習(xí)】8從從Dorm表中查詢宿舍電話表中查詢宿舍電話Tel目前為空的宿舍的宿舍目前為空的宿舍的宿舍編號(hào)編號(hào)DormNo、樓棟、樓棟Build、樓層、樓層Storey和房間號(hào)和房間號(hào)RoomNo。9從從Student表中查詢所有學(xué)生的學(xué)號(hào)表中查詢所有學(xué)生的學(xué)號(hào)Sno、姓名、姓名Sname和年齡,查詢結(jié)果按照年齡降序排列。和年齡,查詢結(jié)果按照年齡降序排列。10從從CheckHealth表中查詢表中查詢2010年年10月衛(wèi)生檢查成績(jī)?cè)滦l(wèi)生檢查成績(jī)Score最高的宿舍編號(hào)最高的宿舍編號(hào)D

19、ormNo和檢查時(shí)間和檢查時(shí)間CheckDate。任務(wù)任務(wù)2任務(wù)任務(wù)2 2 數(shù)據(jù)匯總統(tǒng)計(jì)數(shù)據(jù)匯總統(tǒng)計(jì)【任務(wù)提出任務(wù)提出】在對(duì)表數(shù)據(jù)進(jìn)行查詢中,經(jīng)常會(huì)對(duì)數(shù)據(jù)進(jìn)行在對(duì)表數(shù)據(jù)進(jìn)行查詢中,經(jīng)常會(huì)對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算統(tǒng)計(jì)計(jì)算,如,如統(tǒng)計(jì)個(gè)數(shù)、平均值、最大最小值、計(jì)算總和等操作。另外,統(tǒng)計(jì)個(gè)數(shù)、平均值、最大最小值、計(jì)算總和等操作。另外,還會(huì)根據(jù)需要對(duì)數(shù)據(jù)進(jìn)行分開統(tǒng)計(jì)匯總,如統(tǒng)計(jì)各個(gè)班級(jí)還會(huì)根據(jù)需要對(duì)數(shù)據(jù)進(jìn)行分開統(tǒng)計(jì)匯總,如統(tǒng)計(jì)各個(gè)班級(jí)的人數(shù)等操作。的人數(shù)等操作?!救蝿?wù)分析任務(wù)分析】SQL提供了許多提供了許多集函數(shù)集函數(shù)對(duì)數(shù)據(jù)進(jìn)行各種統(tǒng)計(jì)計(jì)算。若需要對(duì)數(shù)據(jù)進(jìn)行各種統(tǒng)計(jì)計(jì)算。若需要對(duì)數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì)計(jì)算,對(duì)數(shù)據(jù)

20、進(jìn)行分組統(tǒng)計(jì)計(jì)算,GROUP BY子句子句就能夠?qū)崿F(xiàn)就能夠?qū)崿F(xiàn)這種分組統(tǒng)計(jì)。這種分組統(tǒng)計(jì)。【相關(guān)知識(shí)與技能相關(guān)知識(shí)與技能】1集函數(shù)集函數(shù)【任務(wù)實(shí)施任務(wù)實(shí)施】1使用集函數(shù)匯總數(shù)據(jù)使用集函數(shù)匯總數(shù)據(jù)【例例1】統(tǒng)計(jì)統(tǒng)計(jì)Student表中學(xué)生的記錄數(shù)。表中學(xué)生的記錄數(shù)。【例【例2】統(tǒng)計(jì)出信息工程學(xué)院的專業(yè)個(gè)數(shù)?!拷y(tǒng)計(jì)出信息工程學(xué)院的專業(yè)個(gè)數(shù)?!救蝿?wù)實(shí)施任務(wù)實(shí)施】【練習(xí)練習(xí)1】查詢學(xué)號(hào)為查詢學(xué)號(hào)為200931010100101學(xué)生的所有選學(xué)生的所有選修課程的平時(shí)成績(jī)的總分和平均分。修課程的平時(shí)成績(jī)的總分和平均分?!揪毩?xí)練習(xí)2】查詢課程編號(hào)為查詢課程編號(hào)為2003003課程的學(xué)生期末成績(jī)課程的學(xué)生期末成績(jī)

21、的最高分和最低分。的最高分和最低分?!鞠嚓P(guān)知識(shí)與技能相關(guān)知識(shí)與技能】2分組統(tǒng)計(jì)分組統(tǒng)計(jì)GROUP BY 分組列名分組列名3對(duì)組篩選對(duì)組篩選HAVING 組篩選條件表達(dá)式組篩選條件表達(dá)式區(qū)分區(qū)分HAVING子句和子句和WHERE子句子句:HAVING子句是對(duì)子句是對(duì)GROUP BY分組后的組進(jìn)行篩選,選擇出滿足分組后的組進(jìn)行篩選,選擇出滿足條件的組;條件的組;而而WHERE子句是對(duì)表中記錄進(jìn)行選擇,選擇出滿足條件的行。子句是對(duì)表中記錄進(jìn)行選擇,選擇出滿足條件的行。HAVING子句中可以使用集函數(shù),一般子句中可以使用集函數(shù),一般HAVING子句中的組篩選條子句中的組篩選條件就是集函數(shù)。而件就是集函

22、數(shù)。而WHERE子句中絕對(duì)不能出現(xiàn)集函數(shù)。子句中絕對(duì)不能出現(xiàn)集函數(shù)?!救蝿?wù)實(shí)施任務(wù)實(shí)施】2進(jìn)行分組統(tǒng)計(jì)進(jìn)行分組統(tǒng)計(jì)【例【例3】統(tǒng)計(jì)各班級(jí)學(xué)生人數(shù)?!拷y(tǒng)計(jì)各班級(jí)學(xué)生人數(shù)?!揪毩?xí)練習(xí)3】統(tǒng)計(jì)各門課程的選課人數(shù)。統(tǒng)計(jì)各門課程的選課人數(shù)。【練習(xí)【練習(xí)4】統(tǒng)計(jì)各門課程學(xué)生的平時(shí)成績(jī)平均分、期末成】統(tǒng)計(jì)各門課程學(xué)生的平時(shí)成績(jī)平均分、期末成績(jī)平均分???jī)平均分。【任務(wù)實(shí)施任務(wù)實(shí)施】3對(duì)組進(jìn)行篩選對(duì)組進(jìn)行篩選【例例4】查詢出課程選課人數(shù)超過查詢出課程選課人數(shù)超過2人的課程編號(hào)。人的課程編號(hào)?!揪毩?xí)練習(xí)5】查詢出所有選修課程的平均期末成績(jī)小于查詢出所有選修課程的平均期末成績(jī)小于50分分的學(xué)生學(xué)號(hào)。的學(xué)生學(xué)號(hào)?!救?/p>

23、務(wù)總結(jié)任務(wù)總結(jié)】若要對(duì)數(shù)據(jù)庫(kù)表中數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算,可使用集函數(shù)。若若要對(duì)數(shù)據(jù)庫(kù)表中數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算,可使用集函數(shù)。若要對(duì)數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì)計(jì)算,使用要對(duì)數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì)計(jì)算,使用GROUP BY子句。若子句。若在表中數(shù)據(jù)分組后還要對(duì)這些組按條件進(jìn)行篩選,輸出滿在表中數(shù)據(jù)分組后還要對(duì)這些組按條件進(jìn)行篩選,輸出滿足條件的組,則使用足條件的組,則使用HAVING子句。子句。 SELECT ALL|DISTINCT 目標(biāo)列表達(dá)式目標(biāo)列表達(dá)式 FROM 表名表名 WHERE 行條件表達(dá)式行條件表達(dá)式 GROUP BY 分組列名分組列名 HAVING 組篩選條件表達(dá)式組篩選條件表達(dá)式 ORDER BY 排序

24、列排序列 ASC|DESC【拓展練習(xí)拓展練習(xí)】1從從Dorm表中查詢所有男宿舍的總床位數(shù)。男宿舍指宿表中查詢所有男宿舍的總床位數(shù)。男宿舍指宿舍類別舍類別DormType值為值為男男。2從從CheckHealth表中查詢宿舍編號(hào)為表中查詢宿舍編號(hào)為L(zhǎng)CB04N101宿舍的被檢查人員檢查的次數(shù)。宿舍的被檢查人員檢查的次數(shù)。3從從CheckHealth表中查詢表中查詢2010年年11月份各宿舍的檢查月份各宿舍的檢查成績(jī)的平均值。成績(jī)的平均值。4從從Student表中查詢目前男生的人數(shù)。表中查詢目前男生的人數(shù)。5從從Student表中查詢目前男女生的人數(shù)。表中查詢目前男女生的人數(shù)?!就卣咕毩?xí)拓展練習(xí)】

25、6從從Dorm表中查詢出各樓棟的房間數(shù)。表中查詢出各樓棟的房間數(shù)。7從從Live表中統(tǒng)計(jì)各個(gè)宿舍的現(xiàn)入住人數(shù)。表中統(tǒng)計(jì)各個(gè)宿舍的現(xiàn)入住人數(shù)。8從從CheckHealth表中統(tǒng)計(jì)各宿舍到目前為止的衛(wèi)生檢表中統(tǒng)計(jì)各宿舍到目前為止的衛(wèi)生檢查的平均成績(jī)。查的平均成績(jī)。9從從CheckHealth表中查詢出到目前為止的衛(wèi)生檢查平表中查詢出到目前為止的衛(wèi)生檢查平均成績(jī)超過均成績(jī)超過90分的宿舍編號(hào)。分的宿舍編號(hào)。10從從CheckHealth表中查詢宿舍被檢查次數(shù)超過表中查詢宿舍被檢查次數(shù)超過3次的次的宿舍編號(hào)。宿舍編號(hào)。任務(wù)任務(wù)3任務(wù)任務(wù)3 3 多表連接查詢多表連接查詢【任務(wù)提出任務(wù)提出】前面任務(wù)前面任

26、務(wù)1中完成的查詢只涉及到一張表。而在實(shí)際使用中完成的查詢只涉及到一張表。而在實(shí)際使用中,查詢往往是中,查詢往往是針對(duì)多個(gè)表針對(duì)多個(gè)表進(jìn)行的,可能涉及二張或更多進(jìn)行的,可能涉及二張或更多張表。張表?!救蝿?wù)分析任務(wù)分析】在關(guān)系型數(shù)據(jù)庫(kù)中,將這種涉及到兩個(gè)或兩個(gè)以上表的查在關(guān)系型數(shù)據(jù)庫(kù)中,將這種涉及到兩個(gè)或兩個(gè)以上表的查詢,稱為詢,稱為多表連接查詢多表連接查詢。連接查詢是關(guān)系數(shù)據(jù)庫(kù)中最重要的查詢。連接查詢是關(guān)系數(shù)據(jù)庫(kù)中最重要的查詢。連接查詢根據(jù)返回的連接記錄情況,分為連接查詢根據(jù)返回的連接記錄情況,分為“交叉連接交叉連接”、“內(nèi)連接內(nèi)連接”和和“外連接外連接”查詢。查詢。【相關(guān)知識(shí)與技能相關(guān)知識(shí)與技

27、能】1交叉連接交叉連接將第一張表的所有記錄分別與第二張表的每條記錄形將第一張表的所有記錄分別與第二張表的每條記錄形成一條新的記錄。成一條新的記錄。結(jié)果集中的記錄數(shù)為兩個(gè)表的記錄數(shù)的乘積。結(jié)果集中的記錄數(shù)為兩個(gè)表的記錄數(shù)的乘積。SELECT 目標(biāo)列表達(dá)式目標(biāo)列表達(dá)式 FROM 表名表名1 CROSS JOIN 表名表名2【例例1】交叉連接交叉連接Student和和Score表。表。 SELECT * FROM Student CROSS JOIN Score【相關(guān)知識(shí)與技能相關(guān)知識(shí)與技能】2內(nèi)連接內(nèi)連接返回多個(gè)表中滿足連接條件的記錄。返回多個(gè)表中滿足連接條件的記錄。連接條件:連接條件: FROM

28、 表名表名1 INNER JOIN 表名表名2 ON 【例例2】連接連接Student和和Score表,返回兩張表中滿足表,返回兩張表中滿足Sno相同的記錄。相同的記錄。 SELECT * FROM Student JOIN Score ON Student.Sno=Score.Sno【相關(guān)知識(shí)與技能相關(guān)知識(shí)與技能】自然連接自然連接 :按照兩個(gè)表中的相同字段進(jìn)行等值連接,且:按照兩個(gè)表中的相同字段進(jìn)行等值連接,且目標(biāo)列中去掉了重復(fù)的屬性列,但保留了所有不重復(fù)的屬目標(biāo)列中去掉了重復(fù)的屬性列,但保留了所有不重復(fù)的屬性列。性列。 【例例3】查詢所有學(xué)生的詳細(xì)信息及其選課信息,查詢結(jié)查詢所有學(xué)生的詳細(xì)

29、信息及其選課信息,查詢結(jié)果包含兩張表中的所有列,但去除重復(fù)列。果包含兩張表中的所有列,但去除重復(fù)列。 SELECT Student.*,Cno,UScore,EndScore FROM Student JOIN Score ON Student.Sno=Score.Sno【相關(guān)知識(shí)與技能相關(guān)知識(shí)與技能】3外連接外連接外連接查詢是除返回內(nèi)部連接的記錄以外,還在查詢結(jié)果外連接查詢是除返回內(nèi)部連接的記錄以外,還在查詢結(jié)果中返回左表或右表或左右表中不符合條件的記錄。中返回左表或右表或左右表中不符合條件的記錄。 分為分為 “左外連接左外連接”、“右外連接右外連接”和和“全外連接全外連接”?!鞠嚓P(guān)知識(shí)與技

30、能相關(guān)知識(shí)與技能】(1)左外連接)左外連接FROM 表名表名1 LEFT OUTER JOIN 表名表名2 ON (2)右外連接)右外連接FROM 表名表名1 RIGHT OUTER JOIN 表名表名2 ON (3)全外連接)全外連接FROM 表名表名1 FULL OUTER JOIN 表名表名2 ON 【任務(wù)實(shí)施任務(wù)實(shí)施】1兩張表的連接兩張表的連接【例例5】查詢所有學(xué)生相關(guān)信息,包含學(xué)號(hào)、姓名、班級(jí)查詢所有學(xué)生相關(guān)信息,包含學(xué)號(hào)、姓名、班級(jí)編號(hào)、班級(jí)姓名。編號(hào)、班級(jí)姓名。步驟步驟1:分析查詢涉及的表,包括查詢條件和查詢結(jié)果:分析查詢涉及的表,包括查詢條件和查詢結(jié)果涉及的表;涉及的表;步驟步

31、驟2:如果是涉及到多張表,分析確定表與表之間的:如果是涉及到多張表,分析確定表與表之間的連接條件;連接條件;步驟步驟3:分析確定查詢目標(biāo)列表達(dá)式。:分析確定查詢目標(biāo)列表達(dá)式?!救蝿?wù)實(shí)施任務(wù)實(shí)施】【練習(xí)練習(xí)1】查詢所有學(xué)生選修課程的詳細(xì)信息,結(jié)果包含查詢所有學(xué)生選修課程的詳細(xì)信息,結(jié)果包含學(xué)號(hào)、課程編號(hào)、課程名稱、課程學(xué)分、平時(shí)成績(jī)、期末學(xué)號(hào)、課程編號(hào)、課程名稱、課程學(xué)分、平時(shí)成績(jī)、期末成績(jī)。成績(jī)。【任務(wù)實(shí)施任務(wù)實(shí)施】【例例6】查詢計(jì)算機(jī)查詢計(jì)算機(jī)093班學(xué)生的學(xué)號(hào)和姓名。班學(xué)生的學(xué)號(hào)和姓名。步驟步驟1:分析查詢涉及的表,包括查詢條件和查詢結(jié)果:分析查詢涉及的表,包括查詢條件和查詢結(jié)果涉及的表;

32、涉及的表;步驟步驟2:如果是涉及到多張表,分析確定表與表之間的:如果是涉及到多張表,分析確定表與表之間的連接條件;連接條件;步驟步驟3:分析查詢是否針對(duì)所有記錄,還是選擇部分行。:分析查詢是否針對(duì)所有記錄,還是選擇部分行。如果選擇部分行,則確定行選擇條件;如果選擇部分行,則確定行選擇條件;步驟步驟4:分析確定查詢目標(biāo)列表達(dá)式。:分析確定查詢目標(biāo)列表達(dá)式?!救蝿?wù)實(shí)施任務(wù)實(shí)施】【練習(xí)練習(xí)2】查詢課程名稱中包含查詢課程名稱中包含數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的課程的學(xué)生成績(jī),的課程的學(xué)生成績(jī),結(jié)果包含學(xué)號(hào)、課程編號(hào)、課程名稱、平時(shí)成績(jī)、期末成結(jié)果包含學(xué)號(hào)、課程編號(hào)、課程名稱、平時(shí)成績(jī)、期末成績(jī)???jī)?!揪毩?xí)練習(xí)3】查詢

33、所有課程的課程號(hào)、課程名和學(xué)生平時(shí)成查詢所有課程的課程號(hào)、課程名和學(xué)生平時(shí)成績(jī),按照課程號(hào)升序排列,如果課程號(hào)相同,按照平時(shí)成績(jī),按照課程號(hào)升序排列,如果課程號(hào)相同,按照平時(shí)成績(jī)降序排列???jī)降序排列。 【練習(xí)練習(xí)4】查詢期末成績(jī)有不及格課程的學(xué)生信息,結(jié)果查詢期末成績(jī)有不及格課程的學(xué)生信息,結(jié)果包含學(xué)號(hào)、姓名、班級(jí)編號(hào)。包含學(xué)號(hào)、姓名、班級(jí)編號(hào)。 【練習(xí)練習(xí)5】查詢選修了查詢選修了數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用1課程的學(xué)生課程的學(xué)生的人數(shù)。的人數(shù)。 【練習(xí)練習(xí)6】統(tǒng)計(jì)各專業(yè)學(xué)生的人數(shù),結(jié)果包含專業(yè)名稱、統(tǒng)計(jì)各專業(yè)學(xué)生的人數(shù),結(jié)果包含專業(yè)名稱、該專業(yè)人數(shù)。該專業(yè)人數(shù)。 【任務(wù)實(shí)施任務(wù)實(shí)施】2兩

34、張表以上的連接兩張表以上的連接連接實(shí)現(xiàn)的步驟是:先兩張表進(jìn)行連接形成虛表連接實(shí)現(xiàn)的步驟是:先兩張表進(jìn)行連接形成虛表1,然后,然后虛表虛表1與第三張表進(jìn)行連接形成虛表與第三張表進(jìn)行連接形成虛表2,然后虛表,然后虛表2與第四與第四張表進(jìn)行連接,張表進(jìn)行連接,形成虛表,形成虛表n,最后對(duì)虛表,最后對(duì)虛表n進(jìn)行查進(jìn)行查詢得出查詢結(jié)果。詢得出查詢結(jié)果。 【任務(wù)實(shí)施任務(wù)實(shí)施】【例例7】查詢所有學(xué)生的學(xué)號(hào)、姓名、班級(jí)名稱、選修的查詢所有學(xué)生的學(xué)號(hào)、姓名、班級(jí)名稱、選修的課程編號(hào)及平時(shí)成績(jī)。課程編號(hào)及平時(shí)成績(jī)?!揪毩?xí)練習(xí)7】查詢班級(jí)編號(hào)為查詢班級(jí)編號(hào)為200901001班學(xué)生的基本信班學(xué)生的基本信息及其選課信

35、息,結(jié)果包含學(xué)號(hào)、姓名、性別、課程編號(hào)、息及其選課信息,結(jié)果包含學(xué)號(hào)、姓名、性別、課程編號(hào)、課程名稱。課程名稱。 【練習(xí)練習(xí)8】查詢查詢計(jì)算機(jī)計(jì)算機(jī)092班學(xué)生的基本信息及其選課信班學(xué)生的基本信息及其選課信息,結(jié)果包含學(xué)號(hào)、姓名、性別、課程編號(hào)、課程名稱。息,結(jié)果包含學(xué)號(hào)、姓名、性別、課程編號(hào)、課程名稱。【任務(wù)總結(jié)任務(wù)總結(jié)】SELECT語句的一般格式為:語句的一般格式為:SELECT ALL|DISTINCT 目標(biāo)列表達(dá)式目標(biāo)列表達(dá)式 FROM 表名表名1 JOIN 表名表名2 ON 表名表名1.列名列名1=表名表名2.列名列名2 WHERE 行條件表達(dá)式行條件表達(dá)式 GROUP BY 分組列

36、名分組列名 HAVING 組篩選條件表達(dá)式組篩選條件表達(dá)式 ORDER BY 排序列名排序列名 ASC|DESC【拓展知識(shí)拓展知識(shí)】1合并結(jié)果集合并結(jié)果集【例例1】合并女生的學(xué)號(hào)、姓名信息和男生的學(xué)號(hào)、姓名信息。合并女生的學(xué)號(hào)、姓名信息和男生的學(xué)號(hào)、姓名信息。 SELECT Sno,Sname FROM Student WHERE Sex=女女 UNION SELECT Sno,Sname FROM Student WHERE Sex=男男【注意注意】當(dāng)使用當(dāng)使用UNION時(shí),所有時(shí),所有SELECT查詢的目標(biāo)列的列數(shù)查詢的目標(biāo)列的列數(shù)和列的順序必須相同,同時(shí),所有和列的順序必須相同,同時(shí),所

37、有SELECT查詢的目標(biāo)列按查詢的目標(biāo)列按順序?qū)?yīng)列的數(shù)據(jù)類型必須兼容。順序?qū)?yīng)列的數(shù)據(jù)類型必須兼容?!就卣怪R(shí)拓展知識(shí)】2嵌套查詢嵌套查詢?cè)谝粋€(gè)在一個(gè)SELECT查詢中,在其查詢中,在其WHERE子句中的行條件表子句中的行條件表達(dá)式或達(dá)式或HAVING子句中的組篩選條件中,可含有另一個(gè)子句中的組篩選條件中,可含有另一個(gè)SEELCT語句,這種查詢稱為嵌套查詢。語句,這種查詢稱為嵌套查詢?!纠?】查詢查詢數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用1課程學(xué)生的選課信息。課程學(xué)生的選課信息。 SELECT * FROM Score WHERE Cno=(SELECT Cno FROM Course WHER

38、E Cname=數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用1)【拓展知識(shí)拓展知識(shí)】3返回單值的子查詢返回單值的子查詢【例例3】查詢出與查詢出與陳國(guó)成陳國(guó)成同班的學(xué)生詳細(xì)信息。同班的學(xué)生詳細(xì)信息。 SELECT * FROM Student WHERE ClassNo=(SELECT ClassNo FROM Student WHERE Sname=陳國(guó)成陳國(guó)成)【例例4】查詢出選修查詢出選修2003003課程且平時(shí)成績(jī)低于本課程課程且平時(shí)成績(jī)低于本課程平時(shí)成績(jī)的學(xué)生學(xué)號(hào)。平時(shí)成績(jī)的學(xué)生學(xué)號(hào)?!就卣怪R(shí)拓展知識(shí)】4返回多個(gè)值的子查詢返回多個(gè)值的子查詢【例例5】查詢出選修了課程編號(hào)為查詢出選修了課程編號(hào)為0

39、901169課程的學(xué)生姓課程的學(xué)生姓名和班級(jí)編號(hào)。名和班級(jí)編號(hào)。 SELECT Sname,ClassNo FROM Student WHERE Sno IN(SELECT Sno FROM Score WHERE Cno=0901169) 【例例6】查詢出選修了查詢出選修了數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用1課程的學(xué)生姓課程的學(xué)生姓名和班級(jí)編號(hào)。名和班級(jí)編號(hào)?!就卣咕毩?xí)拓展練習(xí)】1從從Dorm和和Live表中查詢所有學(xué)生的詳細(xì)住宿信息,結(jié)果包含學(xué)號(hào)表中查詢所有學(xué)生的詳細(xì)住宿信息,結(jié)果包含學(xué)號(hào)Sno、宿舍編號(hào)、宿舍編號(hào)DormNo、樓棟、樓棟Build、房間號(hào)、房間號(hào)RoomNo、入住日期、入住

40、日期InDate。2從從Dorm和和Live表中查詢住在表中查詢住在龍川北苑龍川北苑04南南樓棟(即字段樓棟(即字段Build的值為的值為龍川北苑龍川北苑04南南)的學(xué)生的學(xué)號(hào))的學(xué)生的學(xué)號(hào)Sno和宿舍編號(hào)和宿舍編號(hào)DormNo。3從從Dorm、CheckHealth表中查詢所有宿舍在表中查詢所有宿舍在2010年年10月份的衛(wèi)月份的衛(wèi)生檢查情況,結(jié)果包含樓棟生檢查情況,結(jié)果包含樓棟Build、宿舍編號(hào)、宿舍編號(hào)DormNo、房間號(hào)、房間號(hào)RoomNo、檢查時(shí)間、檢查時(shí)間CheckDate、檢查人員、檢查人員CheckMan、檢查成績(jī)、檢查成績(jī)Score、存在問題、存在問題Problem。4從從

41、Dorm、CheckHealth表中查詢表中查詢龍川北苑龍川北苑04南南樓棟各宿舍的衛(wèi)樓棟各宿舍的衛(wèi)生檢查平均成績(jī),結(jié)果包含宿舍編號(hào)、平均成績(jī)。生檢查平均成績(jī),結(jié)果包含宿舍編號(hào)、平均成績(jī)?!就卣咕毩?xí)拓展練習(xí)】5從從Dorm、CheckHealth表中查詢表中查詢龍川北苑龍川北苑04南南樓棟的宿舍在樓棟的宿舍在2010年年10月份的衛(wèi)生檢查情況,結(jié)果包含宿舍編號(hào)月份的衛(wèi)生檢查情況,結(jié)果包含宿舍編號(hào)DormNo、房間、房間號(hào)號(hào)RoomNo、檢查時(shí)間、檢查時(shí)間CheckDate、檢查人員、檢查人員CheckMan、檢查成、檢查成績(jī)績(jī)Score、存在問題、存在問題Problem。6從從Dorm、Che

42、ckHealth表中查詢表中查詢龍川北苑龍川北苑04南南樓棟的宿舍在樓棟的宿舍在2010年年10月份的衛(wèi)生檢查成績(jī)不及格的宿舍個(gè)數(shù)。月份的衛(wèi)生檢查成績(jī)不及格的宿舍個(gè)數(shù)。7從從Dorm、Live、Student表中查詢所有學(xué)生的基本信息及其住宿表中查詢所有學(xué)生的基本信息及其住宿信息,結(jié)果包含學(xué)號(hào)信息,結(jié)果包含學(xué)號(hào)Sno、姓名、姓名Sname、性別、性別Sex、宿舍編號(hào)、宿舍編號(hào)DormNo、樓棟、樓棟Build、房間號(hào)、房間號(hào)RoomNo、入住日期、入住日期InDate?!就卣咕毩?xí)拓展練習(xí)】8從從Dorm、Live、Student表中查詢姓名為表中查詢姓名為王康俊王康俊學(xué)生的住宿信息,學(xué)生的住宿

43、信息,結(jié)果包含宿舍編號(hào)結(jié)果包含宿舍編號(hào)DormNo、房間號(hào)、房間號(hào)RoomNo、入住日期、入住日期InDate。9從從Dorm、Live、Student、Class表中查詢所有學(xué)生的詳細(xì)信息及表中查詢所有學(xué)生的詳細(xì)信息及其住宿信息,結(jié)果包含學(xué)號(hào)其住宿信息,結(jié)果包含學(xué)號(hào)Sno、姓名、姓名Sname、性別、性別Sex、班級(jí)編號(hào)、班級(jí)編號(hào)ClassNo、班級(jí)名稱、班級(jí)名稱ClassName、宿舍編號(hào)、宿舍編號(hào)DormNo、樓棟、樓棟Build、房間號(hào)房間號(hào)RoomNo、入住日期、入住日期InDate。10從從Dorm、Live、Student、Class表中查詢表中查詢計(jì)算機(jī)應(yīng)用技術(shù)計(jì)算機(jī)應(yīng)用技術(shù)專

44、業(yè)專業(yè)所有學(xué)生的入住信息,結(jié)果包含學(xué)號(hào)所有學(xué)生的入住信息,結(jié)果包含學(xué)號(hào)Sno、姓名、姓名Sname、性別、性別Sex、班級(jí)編號(hào)班級(jí)編號(hào)ClassNo、班級(jí)名稱、班級(jí)名稱ClassName、宿舍編號(hào)、宿舍編號(hào)DormNo、樓棟、樓棟Build、房間號(hào)、房間號(hào)RoomNo、入住日期、入住日期InDate。查詢結(jié)果按照班級(jí)編號(hào)升。查詢結(jié)果按照班級(jí)編號(hào)升序排列,同班的按照學(xué)號(hào)升序排列。序排列,同班的按照學(xué)號(hào)升序排列。任務(wù)任務(wù)4任務(wù)任務(wù)4 4 數(shù)據(jù)更新數(shù)據(jù)更新【任務(wù)提出任務(wù)提出】對(duì)數(shù)據(jù)的操作除了常用的查詢操作外,還包括日常必做的對(duì)數(shù)據(jù)的操作除了常用的查詢操作外,還包括日常必做的插入數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)

45、據(jù)等操作。插入數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)等操作。插入數(shù)據(jù)、修改插入數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)數(shù)據(jù)、刪除數(shù)據(jù)操作統(tǒng)稱為數(shù)據(jù)更新。操作統(tǒng)稱為數(shù)據(jù)更新。【任務(wù)分析任務(wù)分析】在數(shù)據(jù)操作中,操作的對(duì)象都是記錄,而不是記錄中的某在數(shù)據(jù)操作中,操作的對(duì)象都是記錄,而不是記錄中的某個(gè)數(shù)據(jù)。個(gè)數(shù)據(jù)。所以插入數(shù)據(jù)指往表中插入一條記錄或多條記錄,修改數(shù)所以插入數(shù)據(jù)指往表中插入一條記錄或多條記錄,修改數(shù)據(jù)指對(duì)表中現(xiàn)有記錄進(jìn)行修改,刪除數(shù)據(jù)指刪除指定的記據(jù)指對(duì)表中現(xiàn)有記錄進(jìn)行修改,刪除數(shù)據(jù)指刪除指定的記錄。錄。插入記錄對(duì)應(yīng)的插入記錄對(duì)應(yīng)的SQL語句是語句是INSERT語句,修改記錄對(duì)應(yīng)語句,修改記錄對(duì)應(yīng)的的SQL語句是語句

46、是UPDATE語句,刪除記錄對(duì)應(yīng)的語句,刪除記錄對(duì)應(yīng)的SQL語句是語句是DELETE語句。語句。【相關(guān)知識(shí)與技能相關(guān)知識(shí)與技能】1插入一條記錄插入一條記錄 INSERT INTO 表名表名(列名列名1,列名列名2,列名列名n) VALUES (常量常量1,常量常量n)2插入插入查詢結(jié)果查詢結(jié)果INSERT INTO 表名表名(列名列名1,列名列名2,列名列名n) SELECT 查詢語句查詢語句3使用使用INTO子句生成表子句生成表 SELECT ALL|DISTINCT 目標(biāo)列表達(dá)式目標(biāo)列表達(dá)式 INTO 新表名新表名 FROM 表名表名 WHERE 行條件表達(dá)式行條件表達(dá)式【相關(guān)知識(shí)與技能相

47、關(guān)知識(shí)與技能】4UPDATE語句語句 UPDATE 表名表名 SET 列名列名1=,列名列名2=, WHERE 行條件表達(dá)式行條件表達(dá)式5DELETE語句語句 DELETE FROM 表名表名 WHERE 行條件表達(dá)式行條件表達(dá)式【任務(wù)實(shí)施任務(wù)實(shí)施】1插入一條記錄插入一條記錄【例例1】往往Student表中插入一條新記錄,其中學(xué)號(hào)為表中插入一條新記錄,其中學(xué)號(hào)為200931010190125、姓名為、姓名為陳紅陳紅,性別為,性別為女女,班級(jí)編,班級(jí)編號(hào)為號(hào)為200901901。 INSERT INTO Student (Sno,Sname,Sex,ClassNo) VALUES (200931

48、010190125,陳紅陳紅,女女,200901901)【例例2】往往Student表中插入一條新記錄,其中學(xué)號(hào)為表中插入一條新記錄,其中學(xué)號(hào)為200931010190120、姓名為、姓名為何園何園,性別為,性別為男男,出生年,出生年月為月為1991/11/18,班級(jí)編號(hào)為,班級(jí)編號(hào)為200901901。【任務(wù)實(shí)施任務(wù)實(shí)施】【練習(xí)練習(xí)1】往往Class表中插入所在班級(jí)的信息,往學(xué)生表表中插入所在班級(jí)的信息,往學(xué)生表中插入本人的基本信息。中插入本人的基本信息?!救蝿?wù)實(shí)施任務(wù)實(shí)施】2插入查詢結(jié)果插入查詢結(jié)果【例例3】假如已為班級(jí)編號(hào)為假如已為班級(jí)編號(hào)為200901001的班級(jí)學(xué)生單獨(dú)的班級(jí)學(xué)生單獨(dú)

49、建了一個(gè)空表建了一個(gè)空表JSJ,其中包含學(xué)號(hào)、姓名、性別和出生年,其中包含學(xué)號(hào)、姓名、性別和出生年月四個(gè)字段,字段的數(shù)據(jù)類型和長(zhǎng)度都與月四個(gè)字段,字段的數(shù)據(jù)類型和長(zhǎng)度都與Student表相同,表相同,現(xiàn)要從現(xiàn)要從Student表中查詢出該班學(xué)生信息插入到表中查詢出該班學(xué)生信息插入到C1表中。表中。 INSERT INTO JSJ (Sno,Sname,Sex,Birth) SELECT Sno,Sname,Sex,Birth FROM Student WHERE ClassNo=200901001【任務(wù)實(shí)施任務(wù)實(shí)施】3使用使用INTO子句創(chuàng)建新表并插入查詢結(jié)果子句創(chuàng)建新表并插入查詢結(jié)果【例例4

50、】創(chuàng)建班級(jí)編號(hào)為創(chuàng)建班級(jí)編號(hào)為200901002的班級(jí)學(xué)生信息表,的班級(jí)學(xué)生信息表,表名為表名為JSJ2。 SELECT Sno,Sname,Sex,Birth INTO JSJ2 FROM Student WHERE ClassNo=200901002【任務(wù)實(shí)施任務(wù)實(shí)施】【練習(xí)練習(xí)2】創(chuàng)建創(chuàng)建數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用1課程的選課情況表,課程的選課情況表,表中信息包含學(xué)生學(xué)號(hào)、平時(shí)成績(jī)、期末成績(jī),表名為表中信息包含學(xué)生學(xué)號(hào)、平時(shí)成績(jī)、期末成績(jī),表名為SjkXk?!救蝿?wù)實(shí)施任務(wù)實(shí)施】【例例5】創(chuàng)建各門課程的平均期末成績(jī)臨時(shí)表,要求表中創(chuàng)建各門課程的平均期末成績(jī)臨時(shí)表,要求表中列出各門課程

51、的課程名稱和平均期末成績(jī)。列出各門課程的課程名稱和平均期末成績(jī)。SELECT Cname,AVG(EndScore) 平均期末成績(jī)平均期末成績(jī)INTO #平均成績(jī)表平均成績(jī)表FROM Course join Score on Course.Cno=Score.CnoGROUP BY Cname【任務(wù)實(shí)施任務(wù)實(shí)施】【練習(xí)練習(xí)3】創(chuàng)建各門課程的選課情況臨時(shí)表,要求表中列創(chuàng)建各門課程的選課情況臨時(shí)表,要求表中列出各門課程的課程編號(hào)、課程名稱、學(xué)生的學(xué)號(hào)、平時(shí)成出各門課程的課程編號(hào)、課程名稱、學(xué)生的學(xué)號(hào)、平時(shí)成績(jī)和期末成績(jī)???jī)和期末成績(jī)?!救蝿?wù)實(shí)施任務(wù)實(shí)施】4修改一條記錄的值修改一條記錄的值【例例6】

52、將將Sno為為200931010100102、Cno為為0901170的期的期末成績(jī)修改為末成績(jī)修改為60分。分。 UPDATE Score SET EndScore=60 WHERE Sno=200931010100102 AND Cno=0901170【任務(wù)實(shí)施任務(wù)實(shí)施】【練習(xí)練習(xí)4】增加增加Sno為為200931010100207、Cno為為0901170的期末成績(jī)?yōu)榈钠谀┏煽?jī)?yōu)?0分。分?!揪毩?xí)練習(xí)5】增加增加Sno為為200931010100322、Cno為為0901025的平時(shí)成績(jī)?yōu)榈钠綍r(shí)成績(jī)?yōu)?0分,期末成績(jī)?yōu)榉?,期末成?jī)?yōu)?4分。分?!救蝿?wù)實(shí)施任務(wù)實(shí)施】5修改多條記錄的值修改多

53、條記錄的值【例例7】將修改了課程編號(hào)為將修改了課程編號(hào)為2003003且期末成績(jī)小于且期末成績(jī)小于90分的學(xué)生的期末成績(jī)統(tǒng)一加分的學(xué)生的期末成績(jī)統(tǒng)一加10分。分。 UPDATE Score SET EndScore=EndScore+10 WHERE Cno=2003003 AND EndScore90【任務(wù)實(shí)施任務(wù)實(shí)施】6級(jí)聯(lián)修改級(jí)聯(lián)修改【練習(xí)練習(xí)6】使用使用UPDATE語句將學(xué)號(hào)語句將學(xué)號(hào)200931010100101修改為修改為201031010100150。設(shè)置好級(jí)聯(lián)修改后,編寫執(zhí)行以下設(shè)置好級(jí)聯(lián)修改后,編寫執(zhí)行以下UPDATE語句。語句。 UPDATE Student SET Sno

54、=201031010100150 WHERE Sno=200931010100101【任務(wù)實(shí)施任務(wù)實(shí)施】【練習(xí)練習(xí)7】將課程編號(hào)將課程編號(hào)2003003修改為修改為2003180?!舅伎碱}思考題】將課程將課程數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用1的所有課程期末成的所有課程期末成績(jī)置為績(jī)置為0分。分?!救蝿?wù)實(shí)施任務(wù)實(shí)施】7刪除一條或多條記錄刪除一條或多條記錄【例例8】刪除刪除Sno為為200931010100322的學(xué)生選修課程的學(xué)生選修課程編號(hào)為編號(hào)為0901025的課程的選課記錄。的課程的選課記錄。 DELETE FROM Score WHERE Sno=200931010100322 AND

55、Cno=0901025 【練習(xí)練習(xí)8】從課程表中刪除課程名稱為從課程表中刪除課程名稱為思政概論思政概論的記錄。的記錄?!救蝿?wù)實(shí)施任務(wù)實(shí)施】8級(jí)聯(lián)刪除級(jí)聯(lián)刪除【練習(xí)練習(xí)9】因?qū)W號(hào)為因?qū)W號(hào)為200931010100102的學(xué)生退學(xué),在的學(xué)生退學(xué),在數(shù)據(jù)庫(kù)中刪除該學(xué)生的所有相關(guān)記錄。數(shù)據(jù)庫(kù)中刪除該學(xué)生的所有相關(guān)記錄。設(shè)置好級(jí)聯(lián)刪除后,編寫執(zhí)行以下設(shè)置好級(jí)聯(lián)刪除后,編寫執(zhí)行以下DELETE語句。語句。 DELETE FROM Student WHERE Sno=200931010100102【任務(wù)實(shí)施任務(wù)實(shí)施】【練習(xí)練習(xí)10】從課程表中刪除課程名稱為從課程表中刪除課程名稱為數(shù)據(jù)庫(kù)技術(shù)與應(yīng)數(shù)據(jù)庫(kù)技術(shù)與應(yīng)

56、用用2的記錄。的記錄?!舅伎碱}思考題】刪除課程刪除課程數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用1的所有選課記錄。的所有選課記錄。【任務(wù)總結(jié)任務(wù)總結(jié)】數(shù)據(jù)更新包括插入記錄、修改記錄和刪除記錄。插入記錄數(shù)據(jù)更新包括插入記錄、修改記錄和刪除記錄。插入記錄的的SQL語句為語句為INSERT語句,修改記錄的語句為語句,修改記錄的語句為UPDATE語句,刪除記錄的語句為語句,刪除記錄的語句為DELETE語句。語句。在進(jìn)行數(shù)據(jù)更新時(shí)要保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致性,可使用在進(jìn)行數(shù)據(jù)更新時(shí)要保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致性,可使用級(jí)聯(lián)修改和級(jí)聯(lián)刪除。級(jí)聯(lián)修改和級(jí)聯(lián)刪除。【拓展知識(shí)拓展知識(shí)】1帶子查詢的更新帶子查詢的更新【例例1】將

57、課程將課程數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用1的所有課程期末成績(jī)的所有課程期末成績(jī)置為置為0分。分。 UPDATE Score SET EndScore=0 WHERE Cno=(SELECT Cno FROM Course WHERE Cname=數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用)【例例2】將課程將課程數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用1的所有課程期末成績(jī)的所有課程期末成績(jī)置為空(置為空(NULL)。)?!就卣怪R(shí)拓展知識(shí)】2帶子查詢的刪除帶子查詢的刪除【例例3】刪除課程刪除課程數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用1的所有選課記錄。的所有選課記錄。 DELETE FROM Score WHERE C

58、no=(SELECT Cno FROM Course WHERE Cname=數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用)【拓展練習(xí)拓展練習(xí)】1往宿舍表往宿舍表Dorm中添加你所在宿舍的信息。中添加你所在宿舍的信息。2往入住表往入住表Live中添加你入住宿舍的信息。中添加你入住宿舍的信息。3統(tǒng)計(jì)各個(gè)宿舍的現(xiàn)入住人數(shù),將統(tǒng)計(jì)結(jié)果存放到臨時(shí)統(tǒng)計(jì)各個(gè)宿舍的現(xiàn)入住人數(shù),將統(tǒng)計(jì)結(jié)果存放到臨時(shí)表中,表名為表中,表名為#LiveNum。4從從Dorm、Live、Student、Class表中查詢表中查詢計(jì)算機(jī)應(yīng)計(jì)算機(jī)應(yīng)用技術(shù)用技術(shù)專業(yè)所有學(xué)生的入住信息,結(jié)果包含學(xué)號(hào)專業(yè)所有學(xué)生的入住信息,結(jié)果包含學(xué)號(hào)Sno、姓、姓名名Sname、班級(jí)名稱、班級(jí)名稱ClassName、宿舍編號(hào)、宿舍編號(hào)DormNo、樓棟樓棟Build、房間號(hào)、房間號(hào)RoomNo、入住日期、入住日期InDate,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論