數(shù)據(jù)庫原理與應(yīng)用快速入門 課件 4.2 實(shí)現(xiàn)單表查詢_第1頁
數(shù)據(jù)庫原理與應(yīng)用快速入門 課件 4.2 實(shí)現(xiàn)單表查詢_第2頁
數(shù)據(jù)庫原理與應(yīng)用快速入門 課件 4.2 實(shí)現(xiàn)單表查詢_第3頁
數(shù)據(jù)庫原理與應(yīng)用快速入門 課件 4.2 實(shí)現(xiàn)單表查詢_第4頁
數(shù)據(jù)庫原理與應(yīng)用快速入門 課件 4.2 實(shí)現(xiàn)單表查詢_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫原理與應(yīng)用快速入門4.1了解SQL4.2實(shí)現(xiàn)單表查詢4.3實(shí)現(xiàn)連接查詢第4章

查詢數(shù)據(jù)4.4實(shí)現(xiàn)嵌套查詢4.5實(shí)現(xiàn)集合查詢4.6查詢綜合應(yīng)用4.2.1查詢表中的列4.2.2消除結(jié)果中的重復(fù)行4.2實(shí)現(xiàn)單表查詢4.2.3查詢滿足條件的記錄4.2.4對查詢結(jié)果排序4.2.5使用LIMIT限制查詢結(jié)果的條數(shù)4.2.6使用聚合函數(shù)4.2.1查詢表中的列4.2.2消除結(jié)果中的重復(fù)行4.2實(shí)現(xiàn)單表查詢4.2.3查詢滿足條件的記錄4.2.4對查詢結(jié)果排序4.2.5使用LIMIT限制查詢結(jié)果的條數(shù)4.2.6使用聚合函數(shù)4.2.7對查詢結(jié)果分組4.2.1查詢表中的列SELECT子句中的目標(biāo)列表達(dá)式,可以是列名的列表,也可以是算術(shù)表達(dá)式或者函數(shù)。4.2.1查詢表中的列【例4-1】查詢?nèi)w學(xué)生的姓名、學(xué)號、班級。4.2.1查詢表中的列【例4-2】查詢?nèi)w學(xué)生的詳細(xì)信息。4.2.1查詢表中的列【例4-3】查詢sc表中學(xué)生的學(xué)號以及每名學(xué)生加5分后的成績。4.2.1查詢表中的列【例4-4】查詢每個學(xué)生的學(xué)號、姓名、班級、和出生的年份。4.2.2消除結(jié)果中的重復(fù)行【例4-5】查詢選修了課程的學(xué)生的學(xué)號,要求相同的學(xué)號在查詢結(jié)果中只顯示一次?!咀⒁狻咳绻麤]有在SELECT子句中指定DISTINCT短語,則缺省為ALL,即保留結(jié)果表中取值重復(fù)的行。4.2.3查詢滿足條件的記錄以上兩節(jié)中,查詢結(jié)果將表中的全部數(shù)據(jù)行按查詢需求顯示出來,然而在實(shí)際應(yīng)用中,很多查詢只需要將表中的部分?jǐn)?shù)據(jù)行顯示,這就是帶有條件的查詢。查詢滿足條件的記錄通過WHERE子句來實(shí)現(xiàn)。4.2.3查詢滿足條件的記錄表4.2常用的查詢條件查詢條件謂詞比較=,>,<,>=,<=,!=,<>,!>,!<確定范圍BETWEEN…AND…,NOTBETWEEN…AND…確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件AND,OR4.2.3查詢滿足條件的記錄(1)比較大小讀者需注意,部分比較運(yùn)算符和我們在數(shù)學(xué)中常用的運(yùn)算符表示方式不同,如>=(大于或等于),<=(小于或等于),!=(不等于),<>(不等于),!>(不大于),!<(不小于)等。4.2.3查詢滿足條件的記錄(1)比較大小【例4-6】在sc表中查詢選修成績及格的學(xué)生記錄。4.2.3查詢滿足條件的記錄(1)比較大小【例4-7】查詢students表中班級不是“軟件技術(shù)”班的學(xué)生的學(xué)號和姓名。4.2.3查詢滿足條件的記錄(1)比較大小【注意】在帶有條件的查詢中,表示查詢條件的值時,有兩類數(shù)據(jù)需要用單引號括起來。一類是字符串型數(shù)據(jù),如char、varchar、enum等。上例中,因班級列的數(shù)據(jù)類型是字符串,所以列的值“軟件技術(shù)”用單引號括起來了。另一類是日期和時間型數(shù)據(jù),如datetime、date等。如表示出生年月日在1992年1月2日,表達(dá)式應(yīng)該寫作:出生年月日='1992-1-2'。4.2.3查詢滿足條件的記錄(2)確定范圍謂詞BETWEEN…AND…和NOTBETWEEN…AND…用于查詢表中某列的值在(或不在)指定范圍內(nèi)的記錄,其中BETWEEN后是范圍下限(即低值),AND后是范圍的上限(即高值)。4.2.3查詢滿足條件的記錄(2)確定范圍【例4-8】在sc表中查詢課程成績?yōu)閮?yōu)秀的學(xué)生的學(xué)號、課程號和成績(成績在90—100分之間的為優(yōu)秀)。4.2.3查詢滿足條件的記錄(3)確定集合如果查詢條件不是一個連續(xù)的范圍,而是幾個固定的值的集合,則需要使用謂詞IN和NOTIN來表示。4.2.3查詢滿足條件的記錄(3)確定集合【例4-9】在courses表中查詢“操作系統(tǒng)”、“軟件工程”和“數(shù)據(jù)結(jié)構(gòu)”這三門課的詳細(xì)信息。4.2.3查詢滿足條件的記錄(4)字符匹配有些情況下,我們可能不清楚查詢的具體條件是什么,例如,要查詢姓“王”的學(xué)生的信息,但不清楚學(xué)生的名字叫什么。要查詢“數(shù)據(jù)庫”的課程信息,但不知道課程的全稱是什么。此類查詢需要用字符匹配來實(shí)現(xiàn)。字符匹配類似于Windows操作系統(tǒng)中的模糊查找。4.2.3查詢滿足條件的記錄(4)字符匹配【例4-10】在學(xué)生表中查詢姓“王”的學(xué)生的學(xué)號和姓名。4.2.3查詢滿足條件的記錄(4)字符匹配為實(shí)現(xiàn)查詢需求,WHERE子句中使用了謂詞like加匹配串的格式。字符匹配的一般格式為:

[NOT]LIKE'匹配串'其含義是查找指定列的值與匹配串相匹配的記錄。4.2.3查詢滿足條件的記錄(4)字符匹配各部分的參數(shù)解釋如下:匹配串:固定字符串或含通配符的字符串。當(dāng)為固定字符串時,可以用=運(yùn)算符取代LIKE,用!=或<>運(yùn)算符取代NOTLIKE。通配符“%”(百分號)代表任意長度(長度可以為0)的字符串。例:a%b表示以a開頭,以b結(jié)尾的任意長度的字符串。如acb,addpb,ab等都滿足該匹配串。通配符“_”(下橫線)代表任意單個字符,例:a_b表示以a開頭,以b結(jié)尾的長度為3的任意字符串。如acb,afb等都滿足該匹配串。4.2.3查詢滿足條件的記錄(4)字符匹配【例4-11】查詢姓“歐陽”且全名為四個漢字的學(xué)生的名字。4.2.3查詢滿足條件的記錄(4)字符匹配【例4-12】查詢名字中第二個字為“陽”字的學(xué)生姓名和學(xué)號。4.2.3查詢滿足條件的記錄(4)字符匹配【例4-13】在students表中查詢不姓“王”的所有學(xué)生的學(xué)號和姓名。4.2.3查詢滿足條件的記錄(5)涉及空值的查詢在實(shí)際應(yīng)用中,如果我們需要查詢某些列為空值的記錄,應(yīng)該如何表示呢?4.2.3查詢滿足條件的記錄(5)涉及空值的查詢【例4-14】因考試曠考,sc表中有學(xué)生某些課程的成績?yōu)榭罩?。查詢成績?yōu)榭罩档膶W(xué)生的學(xué)號和課程號。4.2.3查詢滿足條件的記錄(5)涉及空值的查詢【例4-14】因考試曠考,sc表中有學(xué)生某些課程的成績?yōu)榭罩?。查詢成績?yōu)榭罩档膶W(xué)生的學(xué)號和課程號。若將查詢修改為“查詢成績不為空值的學(xué)生的學(xué)號和課程號”,則查詢語句更改為:4.2.3查詢滿足條件的記錄(6)多重條件查詢?nèi)绻樵兊臈l件多于一個,我們稱之為多重條件查詢。多重條件查詢中使用邏輯運(yùn)算符AND和OR來聯(lián)接多個查詢條件。需要注意的是,AND的優(yōu)先級高于OR,但用戶可以用括號改變優(yōu)先級。4.2.3查詢滿足條件的記錄(6)多重條件查詢【例4-15】查詢學(xué)生表中計算機(jī)應(yīng)用班的男生信息。4.2.3查詢滿足條件的記錄(6)多重條件查詢【例4-16】查詢courses表中學(xué)時大于40或者學(xué)分大于3分的課程信息。4.2.3查詢滿足條件的記錄(6)多重條件查詢【例4-17】在students表中查詢女生的學(xué)號和姓名,要求班級為計算機(jī)應(yīng)用或者計算機(jī)網(wǎng)絡(luò)班。4.2.4對查詢結(jié)果排序所謂對查詢結(jié)果排序,指的是根據(jù)排序規(guī)則,將查詢結(jié)果按照指定的順序(升序或者降序)排列顯示。排序使用ORDERBY子句來實(shí)現(xiàn)。4.2.4對查詢結(jié)果排序【例4-18】查詢選修了001號課程的學(xué)生的學(xué)號和成績,查詢結(jié)果按成績升序排列。4.2.4對查詢結(jié)果排序【例4-19】查詢students表中的學(xué)生信息,查詢結(jié)果先按姓名升序排列,對于同名同姓的學(xué)生,再按出生年月日降序排列。4.2.5使用LIMIT限制查詢結(jié)果的條數(shù)如果只需要返回查詢結(jié)果的一部分,如前幾行記錄或指定的幾行記錄,可以使用LIMIT關(guān)鍵字來實(shí)現(xiàn)。LIMIT關(guān)鍵字的語法格式如下:

LIMIT[位置偏移量,]行數(shù)其中,第一個參數(shù)“位置偏移量”為可選參數(shù),指明查詢結(jié)果從哪一行開始顯示。如果不指定位置偏移量,則會從查詢結(jié)果的第一行開始顯示。請注意,查詢結(jié)果的第一條記錄位置偏移量為0,第二條記錄位置偏移量為1,以此類推。第二個參數(shù)行數(shù)表示要顯示的記錄行數(shù)。4.2.5使用LIMIT限制查詢結(jié)果的條數(shù)【例4-20】查詢students表的前五條記錄。4.2.5使用LIMIT限制查詢結(jié)果的條數(shù)【例4-21】查詢students表中從第三條記錄開始的三名學(xué)生的信息。4.2.6使用聚合函數(shù)為了方便用戶對數(shù)據(jù)進(jìn)行匯總和統(tǒng)計,SQL中提供了一系列聚合函數(shù)。本節(jié)介紹常用聚合函數(shù)(見表4.3所示)的使用方法。表4.3常用的聚合函數(shù)函數(shù)名作用COUNT()統(tǒng)計表中記錄的總條數(shù)或表中某列包含數(shù)值的個數(shù)SUM()計算一列值的總和(此列數(shù)據(jù)類型必須是數(shù)值型)AVG()計算一列值的平均值(此列數(shù)據(jù)類型必須是數(shù)值型)MAX()求一列中的最大值MIN()求一列中的最小值4.2.6使用聚合函數(shù)(1)COUNT()函數(shù)COUNT()函數(shù)用于統(tǒng)計表中記錄的總條數(shù)或表中某列包含數(shù)值的個數(shù),其使用格式有三種:COUNT(*):統(tǒng)計表中記錄的總條數(shù)。COUNT(列名):統(tǒng)計表中某列包含數(shù)值的個數(shù),忽略空值。COUNT(DISTINCT列名):統(tǒng)計表中某列包含數(shù)值的個數(shù),忽略空值和重復(fù)值。4.2.6使用聚合函數(shù)(1)COUNT()函數(shù)【例4-22】查詢學(xué)生的總?cè)藬?shù)。4.2.6使用聚合函數(shù)(1)COUNT()函數(shù)【例4-23】查詢選修了課程的學(xué)生人數(shù)。4.2.6使用聚合函數(shù)(2)SUM()函數(shù)SUM()函數(shù)用于計算表中一列數(shù)據(jù),其數(shù)值的總和。因?yàn)樾枰M(jìn)行求和運(yùn)算,此列的數(shù)據(jù)類型必須是數(shù)值型。4.2.6使用聚合函數(shù)(2)SUM()函數(shù)【例4-24】查詢學(xué)號為“210101001”的學(xué)生所選修課程的總成績(即選修成績的總和)。4.2.6使用聚合函數(shù)(3)AVG()、MAX()和MIN()函數(shù)AVG()函數(shù)用于計算表中一列數(shù)據(jù),其數(shù)值的平均數(shù)。因?yàn)樾枰M(jìn)行求平均數(shù)運(yùn)算,此列的數(shù)據(jù)類型必須是數(shù)值型。MAX()函數(shù)用于計算表中一列數(shù)據(jù)中的最大值。MIN()函數(shù)用于計算表中一列數(shù)據(jù)中的最小值。MAX()函數(shù)和MIN()函數(shù)的參數(shù)不一定是數(shù)值型數(shù)據(jù),因?yàn)槠渌愋偷臄?shù)據(jù)也可以比較大小。4.2.6使用聚合函數(shù)(3)AVG()、MAX()和MIN()函數(shù)【例4-25】查詢選修“001”號課程的學(xué)生的平均成績,最高分和最低分。4.2.7對查詢結(jié)果分組GROUPBY子句用于將查詢結(jié)果按表中某一列或者多列的值分組,值相等的分為一組。對查詢結(jié)果分組的目的是為了細(xì)化聚

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論