《MySQL數(shù)據(jù)庫(kù)應(yīng)用與管理(第3版)》 課件 魯大林 第5章 數(shù)據(jù)查詢(xún)_第1頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用與管理(第3版)》 課件 魯大林 第5章 數(shù)據(jù)查詢(xún)_第2頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用與管理(第3版)》 課件 魯大林 第5章 數(shù)據(jù)查詢(xún)_第3頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用與管理(第3版)》 課件 魯大林 第5章 數(shù)據(jù)查詢(xún)_第4頁(yè)
《MySQL數(shù)據(jù)庫(kù)應(yīng)用與管理(第3版)》 課件 魯大林 第5章 數(shù)據(jù)查詢(xún)_第5頁(yè)
已閱讀5頁(yè),還剩88頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)據(jù)查詢(xún)

SELECT語(yǔ)句

本節(jié)內(nèi)容1.SELECT語(yǔ)句基本語(yǔ)法2.查詢(xún)示例數(shù)據(jù)庫(kù)SELECT語(yǔ)句SELECT語(yǔ)句主要用于數(shù)據(jù)的查詢(xún)檢索,是SQL語(yǔ)言的核心,也是使用頻率最高的一條語(yǔ)句。SELECT語(yǔ)句可以讓數(shù)據(jù)庫(kù)服務(wù)器根據(jù)用戶(hù)的要求,從數(shù)據(jù)庫(kù)的表中檢索出所需要的數(shù)據(jù),并按照用戶(hù)指定的格式進(jìn)行整理并返回。1.SELECT語(yǔ)句基本語(yǔ)法SELECT語(yǔ)句SELECT語(yǔ)句的語(yǔ)法格式如下:SELECT[ALL|DISTINCT]*|字段列表FROM表名[WHERE查詢(xún)條件][GROUPBY分組字段[HAVING分組條件]][ORDERBY排序字段[ASC|DESC]][LIMIT[初始位置,]記錄數(shù)]1.SELECT語(yǔ)句基本語(yǔ)法SELECT語(yǔ)句說(shuō)明:SELECT子句:用來(lái)指定查詢(xún)返回的字段。星號(hào)(*)表示返回所有字段,并按照表中定義的字段順序顯示查詢(xún)結(jié)果集;也可指定字段列表,以逗號(hào)隔開(kāi),各字段在SELECT子句中的循序決定了它們?cè)诓樵?xún)結(jié)果集中的順序。使用DISTINCT關(guān)鍵字可以取消重復(fù)的數(shù)據(jù)記錄。FROM子句:用來(lái)指定數(shù)據(jù)來(lái)源的表。WHERE子句:用來(lái)限定返回行的查詢(xún)條件。GROUPBY子句:用來(lái)指定查詢(xún)結(jié)果的分組條件。ORDERBY子句:用來(lái)指定結(jié)果集的排序方式。ASC表示升序,可省略;DESC表示降序。LIMIT子句:用來(lái)限制SELECT語(yǔ)句返回的記錄數(shù)。1.SELECT語(yǔ)句基本語(yǔ)法SELECT語(yǔ)句以“學(xué)生管理系統(tǒng)”數(shù)據(jù)庫(kù)StuInfo作為學(xué)習(xí)本章內(nèi)容的示例數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)中的數(shù)據(jù)表如下:學(xué)生表(student) student(id,sNo,sName,sex,birthday,deptName,remark)課程表(course) course(id,cNo,cName,credit,remark)成績(jī)表(score) score(id,sid,cid,grade)2.查詢(xún)示例數(shù)據(jù)庫(kù)謝謝數(shù)據(jù)查詢(xún)

簡(jiǎn)單查詢(xún)

本節(jié)內(nèi)容1.選擇字段進(jìn)行查詢(xún)2.使用比較運(yùn)算符進(jìn)行查詢(xún)3.使用邏輯運(yùn)算符進(jìn)行查詢(xún)4.使用LIKE進(jìn)行模糊查詢(xún)5.使用BETWEEN…AND進(jìn)行范圍比較查詢(xún)本節(jié)內(nèi)容6.使用IN進(jìn)行范圍比對(duì)查詢(xún)7.使用空值(NULL)的判斷進(jìn)行查詢(xún)8.使用ORDERBY子句排序查詢(xún)的記錄9.使用LIMIT子句限制返回記錄的行數(shù)10.使用DISTINCT關(guān)鍵字過(guò)濾重復(fù)的記錄簡(jiǎn)單查詢(xún)(1)選擇所有字段在SELECT子句中可以使用星號(hào)(*),顯示表中所有的字段。其語(yǔ)法格式如下: SELECT*FROM表名1.選擇字段進(jìn)行查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-1運(yùn)行結(jié)果如下:顯示student表中的所有信息。簡(jiǎn)單查詢(xún)(2)選擇指定字段選擇指定字段的語(yǔ)法格式如下: SELECT字段名1[,字段名2,…,字段名n]FROM表名說(shuō)明:字段的順序可以與表中定義的字段順序不同,字段與字段之間使用逗號(hào)分隔。1.選擇字段進(jìn)行查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-2運(yùn)行結(jié)果如下:從student表中查詢(xún)出班級(jí)名稱(chēng)(deptName),學(xué)號(hào)(sNo)、姓名(sName)、和性別(sex)的學(xué)生信息。說(shuō)明:在數(shù)據(jù)查詢(xún)時(shí),字段的顯示順序由SELECT子句指定,該順序可以和表中定義的字段順序不同,這并不影響數(shù)據(jù)在表中的存儲(chǔ)順序。簡(jiǎn)單查詢(xún)(3)定義字段別名默認(rèn)情況下返回的查詢(xún)結(jié)果以字段名作為列標(biāo)題的,可以為返回的字段指定一個(gè)新的列標(biāo)題,也可給通過(guò)計(jì)算產(chǎn)生的新列指定一個(gè)列標(biāo)題。其語(yǔ)法格式如下: SELECT字段名1[AS]列標(biāo)題1[,字段名2[AS]列標(biāo)題2,…]FROM表名說(shuō)明:AS關(guān)鍵字可以省略。1.選擇字段進(jìn)行查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-3運(yùn)行結(jié)果如下:以“學(xué)號(hào)姓名性別出生日期”作為列標(biāo)題顯示學(xué)生信息。簡(jiǎn)單查詢(xún)?cè)趯?shí)際工作中,大部分查詢(xún)并不是針對(duì)表中所有數(shù)據(jù)記錄的查詢(xún),而是要找出滿(mǎn)足某些條件的數(shù)據(jù)記錄。此時(shí)我們可以在SELECT語(yǔ)句中使用WHERE子句,其語(yǔ)法格式如下: SELECT*|字段列表FROM表名

WHERE查詢(xún)條件說(shuō)明:查詢(xún)條件可以是:比較表達(dá)式、邏輯表達(dá)式、以及其他一些謂詞構(gòu)成的表達(dá)式(字符串模糊匹配LIKE、數(shù)據(jù)范圍BETWEEN、列表數(shù)據(jù)IN、空值判定ISNULL等)。2.使用比較運(yùn)算符進(jìn)行查詢(xún)簡(jiǎn)單查詢(xún)WHERE子句允許使用的比較運(yùn)算符如下表所示:2.使用比較運(yùn)算符進(jìn)行查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-4運(yùn)行結(jié)果如下:查詢(xún)student表中女學(xué)生的信息。操作案例知識(shí)點(diǎn)概述示例5-5運(yùn)行結(jié)果如下:查詢(xún)course表中超過(guò)4個(gè)學(xué)分(credit)的課程信息。簡(jiǎn)單查詢(xún)WHERE子句允許使用的邏輯運(yùn)算符如下表所示:3.使用邏輯運(yùn)算符進(jìn)行查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-6運(yùn)行結(jié)果如下:查詢(xún)student表中1995年出生的學(xué)生信息。操作案例知識(shí)點(diǎn)概述示例5-7運(yùn)行結(jié)果如下:查詢(xún)student表中“軟件131”班級(jí)的女生、以及其他班級(jí)的男生。簡(jiǎn)單查詢(xún)?cè)赪HERE子句中,通過(guò)LIKE關(guān)鍵字與“%”和“_”兩個(gè)通配符的使用,可以對(duì)數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行模糊查詢(xún)。這兩個(gè)通配符的含義如下所示:百分號(hào)(%):表示匹配0個(gè)或者任意多個(gè)字符。下劃線(xiàn)(_):表示匹配任意一個(gè)字符。說(shuō)明:如果需要查詢(xún)出包含下劃線(xiàn)“_”的數(shù)據(jù),在進(jìn)行模糊查詢(xún)時(shí),需要加一個(gè)“\”進(jìn)行轉(zhuǎn)義,表示為“\_”的形式。4.使用LIKE進(jìn)行模糊查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-8運(yùn)行結(jié)果如下:從student表中檢索出所有姓“楊”的學(xué)生信息。操作案例知識(shí)點(diǎn)概述示例5-9運(yùn)行結(jié)果如下:從course表中檢索出課程名稱(chēng)(cName)中包含“設(shè)計(jì)”的課程信息。操作案例知識(shí)點(diǎn)概述示例5-10運(yùn)行結(jié)果如下:從student表中檢索出姓名(sName)的第二個(gè)字是“偉”和“先”的學(xué)生信息。簡(jiǎn)單查詢(xún)?cè)赪HERE子句中,可以使用BETWEENAND關(guān)鍵字對(duì)指定字段的某一范圍內(nèi)的數(shù)據(jù)進(jìn)行比較查詢(xún),其與使用“>=”且“<=”的功能一樣。其語(yǔ)法格式如下:

字段名[NOT]BETWEEN值1AND值2說(shuō)明:指定字段的值(不)在值1和值2之間。5.使用BETWEEN…AND進(jìn)行范圍比較查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-11運(yùn)行結(jié)果如下:查詢(xún)student表中1995年出生的學(xué)生信息(使用BETWEENAND關(guān)鍵字)。操作案例知識(shí)點(diǎn)概述示例5-12運(yùn)行結(jié)果如下:從score表中查詢(xún)出成績(jī)(grade)不在60-89分之間的學(xué)生成績(jī)信息。簡(jiǎn)單查詢(xún)?nèi)绻侄蔚娜≈捣秶皇且粋€(gè)連續(xù)的區(qū)間,而是一些離散的值,可以使用IN關(guān)鍵字對(duì)指定字段進(jìn)行范圍比對(duì)查詢(xún)。其語(yǔ)法格式如下:

字段名[NOT]IN(值1[,值2,值3,…])說(shuō)明:指定字段的值(不)在括號(hào)中列出的值之中。6.使用IN進(jìn)行范圍比對(duì)查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-13運(yùn)行結(jié)果如下:查詢(xún)student表中學(xué)號(hào)(sNo)為1308013101、1309122503、1312054904的學(xué)生信息。簡(jiǎn)單查詢(xún)空值(NULL)是一個(gè)特殊的值,它僅僅是一個(gè)符號(hào),不等于空字符串,也不等于0。空值判斷的語(yǔ)法格式如下:

字段名IS[NOT]NULL7.使用空值(NULL)的判斷進(jìn)行查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-14運(yùn)行結(jié)果如下:檢索course表中備注(remark)為空的課程記錄。簡(jiǎn)單查詢(xún)?cè)谕ǔG闆r下,數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄行在顯示時(shí)是無(wú)序的,它按照數(shù)據(jù)記錄插入數(shù)據(jù)庫(kù)時(shí)的順序排列,因此用SELECT語(yǔ)句查詢(xún)的結(jié)果也是無(wú)序的。使用ORDERBY子句可以將查詢(xún)結(jié)果進(jìn)行排序顯示。其語(yǔ)法格式如下:

SELECT*|字段列表FROM表名 [WHERE查詢(xún)條件]

ORDERBY字段名1[ASC|DESC][,字段名2[ASC|DESC]][,…]8.使用ORDERBY子句排序查詢(xún)的記錄簡(jiǎn)單查詢(xún)說(shuō)明:在默認(rèn)情況下,ORDERBY子句按升序進(jìn)行排序,即默認(rèn)使用的是ASC關(guān)鍵字,如果特別要求按降序進(jìn)行排列,必須使用DESC關(guān)鍵字。當(dāng)ORDERBY子句指定了多個(gè)排序字段時(shí),系統(tǒng)先按照ORDERBY子句中第一個(gè)字段的順序排列,當(dāng)該字段出現(xiàn)相同的值時(shí),再按照第二個(gè)字段的順序排列,依次類(lèi)推。8.使用ORDERBY子句排序查詢(xún)的記錄操作案例知識(shí)點(diǎn)概述示例5-15運(yùn)行結(jié)果如下:查詢(xún)student表中的男生信息,按照出生日期(birthday)的降序排列。操作案例知識(shí)點(diǎn)概述示例5-16運(yùn)行結(jié)果如下:查詢(xún)student表中的學(xué)生信息,按照姓名(sName)的升序排列。說(shuō)明:從以上排序后的查詢(xún)結(jié)果中可以看出,并沒(méi)有按照姓名(sName)的中文拼音的順序進(jìn)行排序。這是因?yàn)椋?dāng)數(shù)據(jù)表采用的是utf8字符集時(shí),對(duì)于中文字符串字段的排序,不會(huì)按照中文拼音的順序進(jìn)行排序。其解決方法是把ORDERBY子句的語(yǔ)法格式更改如下:ORDERBYCONVERT(字段名usinggbk|gb2312)[ASC|DESC]。操作案例知識(shí)點(diǎn)概述示例5-17運(yùn)行結(jié)果如下:查詢(xún)student表中的學(xué)生信息,按照姓名(sName)的中文拼音的升序排列。操作案例知識(shí)點(diǎn)概述示例5-18運(yùn)行結(jié)果如下:查詢(xún)student表中的數(shù)據(jù),先按班級(jí)(deptName)的升序排列,相同的班級(jí)再按照出生日期(birthday)的降序排列。簡(jiǎn)單查詢(xún)?cè)趯?duì)數(shù)據(jù)進(jìn)行查詢(xún)時(shí),如果返回的記錄數(shù)很多,那么不僅檢索的速度慢,也不便于用戶(hù)閱讀。使用LIMIT子句,可以限制SELECT語(yǔ)句返回的記錄數(shù)。LIMIT子句通常位于SELECT語(yǔ)句的最后面,其語(yǔ)法格式如下:

SELECT*|字段列表FROM表名 [WHERE查詢(xún)條件] [ORDERBY排序字段[ASC|DESC]]

[LIMIT[初始位置,]記錄數(shù)]9.使用LIMIT子句限制返回記錄的行數(shù)簡(jiǎn)單查詢(xún)說(shuō)明:初始位置指定從查詢(xún)結(jié)果集中的哪一條記錄開(kāi)始返回,如果省略,則表示從第1條記錄開(kāi)始返回,第1條記錄的位置為0。記錄數(shù)指定返回的記錄條數(shù)。9.使用LIMIT子句限制返回記錄的行數(shù)操作案例知識(shí)點(diǎn)概述示例5-19運(yùn)行結(jié)果如下:返回年齡最小的5位同學(xué)的信息。操作案例知識(shí)點(diǎn)概述示例5-20運(yùn)行結(jié)果如下:返回課程ID(cId)為“1”課程的第2~4名學(xué)生的成績(jī)。簡(jiǎn)單查詢(xún)?cè)趯?duì)數(shù)據(jù)進(jìn)行查詢(xún)時(shí),如果返回的查詢(xún)結(jié)果中包含重復(fù)的記錄,可以使用DISTINCT關(guān)鍵字取消重復(fù)的數(shù)據(jù),只返回其中的一條。其語(yǔ)法格式如下:

SELECTDISTINCT字段列表FROM表名說(shuō)明:DISTINCT關(guān)鍵字作用的范圍是整個(gè)查詢(xún)的字段列表,而不是僅僅單獨(dú)一列。10.使用DISTINCT關(guān)鍵字過(guò)濾重復(fù)的記錄操作案例知識(shí)點(diǎn)概述示例5-21運(yùn)行結(jié)果如下:查詢(xún)student中的班級(jí),如果有多個(gè)相同的班級(jí),只需顯示一個(gè)即可。操作案例知識(shí)點(diǎn)概述示例5-22運(yùn)行結(jié)果如下:查詢(xún)score表,顯示選修了課程的學(xué)生ID,如果有多個(gè)相同的學(xué)生ID,只需顯示一個(gè)即可。謝謝數(shù)據(jù)查詢(xún)

高級(jí)查詢(xún)

本節(jié)內(nèi)容1.使用內(nèi)連接(INNERJOIN)進(jìn)行多表查詢(xún)2.使用外連接(OUTERJOIN)進(jìn)行多表查詢(xún)3.使用統(tǒng)計(jì)函數(shù)對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)匯總4.使用GROUPBY子句對(duì)數(shù)據(jù)進(jìn)行分組匯總本節(jié)內(nèi)容5.使用HAVING子句對(duì)分組匯總結(jié)果進(jìn)行篩選6.子查詢(xún)的返回值為單列單值的嵌套查詢(xún)7.子查詢(xún)的返回值為單列多值的嵌套查詢(xún)8.使用EXISTS關(guān)鍵字創(chuàng)建子查詢(xún)高級(jí)查詢(xún)關(guān)系數(shù)據(jù)庫(kù)在進(jìn)行數(shù)據(jù)表設(shè)計(jì)時(shí),為了減少冗余,確保數(shù)據(jù)一致性、完整性,要求數(shù)據(jù)表的設(shè)計(jì)符合規(guī)范(比如3NF),為了遵循這些規(guī)范,往往需要將數(shù)據(jù)分離到多張表中。然而在實(shí)際應(yīng)用中,又往往需要將多張表的相關(guān)數(shù)據(jù)提取、聚合后一起提供給用戶(hù),即需要多表查詢(xún)。多表查詢(xún)的本質(zhì)是多張表通過(guò)關(guān)聯(lián)的列的連接,所以多表查詢(xún)也稱(chēng)為連接查詢(xún)。1.使用內(nèi)連接(INNERJOIN)進(jìn)行多表查詢(xún)高級(jí)查詢(xún)多表(連接)查詢(xún)的語(yǔ)法格式有如下兩種:1.使用內(nèi)連接(INNERJOIN)進(jìn)行多表查詢(xún)第一種語(yǔ)法格式: SELECT*|字段列表

FROM表名1 [連接類(lèi)型]JOIN表名2ON連接條件 [[連接類(lèi)型]JOIN表名3ON連接條件][…] WHERE查詢(xún)條件;第二種語(yǔ)法格式: SELECT*|字段列表 FROM表名1,表名2[,表名3,…表名n] WHERE連接條件

AND查詢(xún)條件;高級(jí)查詢(xún)說(shuō)明:查詢(xún)時(shí)所有的字段都必須要明確,為了區(qū)分多張表中出現(xiàn)的重復(fù)字段名,可以在字段列表中使用“表名.字段名”的形式;星號(hào)(*)表示的是多張表中的所有字段,如果要指定某一張表中是所有字段,可以使用“表名.*”的形式。連接類(lèi)型主要包括:內(nèi)連接(INNER)、左外連接(LEFTOUTER)、右外連接(RIGHTOUTER)等。為了增加可讀性,可以對(duì)數(shù)據(jù)表使用別名進(jìn)行引用。表的別名的使用方法是在表名的后面直接加上一個(gè)別名,原名與別名之間用空格隔開(kāi);一旦使用了別名代替某個(gè)表,則在連接時(shí)必須用表的別名,不能再用表的原名。1.使用內(nèi)連接(INNERJOIN)進(jìn)行多表查詢(xún)高級(jí)查詢(xún)內(nèi)連接(INNERJOIN)查詢(xún)是最常用的多表查詢(xún)形式。內(nèi)連接(INNERJOIN)是指多個(gè)表通過(guò)連接條件中共享列的值進(jìn)行的比較連接,INNER關(guān)鍵字可以省略,當(dāng)未指明連接類(lèi)型時(shí),默認(rèn)為內(nèi)連接。內(nèi)連接值顯示兩個(gè)表中所有匹配數(shù)據(jù)的行。1.使用內(nèi)連接(INNERJOIN)進(jìn)行多表查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-23運(yùn)行結(jié)果如下:使用兩種語(yǔ)法格式查詢(xún)所有女生的學(xué)號(hào)、姓名、性別、課程ID和成績(jī)。操作案例知識(shí)點(diǎn)概述示例5-24運(yùn)行結(jié)果如下:使用兩種語(yǔ)法格式查詢(xún)學(xué)號(hào)(sNo)為“1308013101”學(xué)生的學(xué)號(hào)、姓名、性別、班級(jí)、課程名稱(chēng)和成績(jī)。高級(jí)查詢(xún)外連接顯示包含來(lái)自一個(gè)表中所有行和來(lái)自另一個(gè)表中匹配行的結(jié)果集。2.使用外連接(OUTERJOIN)進(jìn)行多表查詢(xún)高級(jí)查詢(xún)外連接主要又分為左外連接和右外連接,說(shuō)明如下:左外連接(LEFTOUTERJOIN)返回LEFTOUTERJOIN關(guān)鍵字左側(cè)指定的表(左表)的所有行和右側(cè)指定的表(右表)的匹配的行。對(duì)于來(lái)自左表中的行,在右表中沒(méi)有發(fā)現(xiàn)匹配的行,那么在來(lái)自右表中獲得數(shù)據(jù)的列中將顯示NULL值。OUTER關(guān)鍵字可以省略。右外連接(RIGHTOUTERJOIN)即在連接兩表時(shí),結(jié)果集包含RIGHTOUTERJOIN關(guān)鍵字右側(cè)指定的表(右表)的所有行以及左表匹配的行;對(duì)于來(lái)自右表的行,如果左表無(wú)匹配,則左表的數(shù)據(jù)列將顯示NULL。OUTER關(guān)鍵字可以省略。2.使用外連接(OUTERJOIN)進(jìn)行多表查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-25運(yùn)行結(jié)果如下:使用兩種方式查詢(xún)“網(wǎng)絡(luò)131”班學(xué)生的學(xué)號(hào)、姓名、性別、班級(jí)、課程ID和成績(jī)(包括沒(méi)有選修課程的學(xué)生信息)。高級(jí)查詢(xún)MySQL不僅可以查詢(xún)返回滿(mǎn)足條件的記錄,還可以對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)匯總。3.使用統(tǒng)計(jì)函數(shù)對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)匯總操作案例知識(shí)點(diǎn)概述示例5-26運(yùn)行結(jié)果如下:統(tǒng)計(jì)student表中的男生人數(shù)。操作案例知識(shí)點(diǎn)概述示例5-27運(yùn)行結(jié)果如下:統(tǒng)計(jì)course表中的課程總數(shù)、以及備注(remark)不為空的課程總數(shù)。操作案例知識(shí)點(diǎn)概述示例5-28運(yùn)行結(jié)果如下:通過(guò)score表統(tǒng)計(jì)已選修課程的學(xué)生人數(shù)。操作案例知識(shí)點(diǎn)概述示例5-29運(yùn)行結(jié)果如下:統(tǒng)計(jì)學(xué)號(hào)(sNo)為“1308013101”的學(xué)生選修課程的門(mén)數(shù)、最高分、最低分、平均分和總分。高級(jí)查詢(xún)使用GROUPBY子句,可以顯示分組的匯總數(shù)據(jù)。該子句的功能是按照指定的字段,先將數(shù)據(jù)分成多個(gè)組(相同字段的值為一組),然后對(duì)每個(gè)組匯總出一個(gè)數(shù)據(jù)。結(jié)果集中每個(gè)組都有一行匯總數(shù)據(jù)。其語(yǔ)法格式為: SELECT字段名1[,字段名2,…],統(tǒng)計(jì)函數(shù) FROM表名 [WHERE查詢(xún)條件]

GROUPBY字段名1[,字段名2,…]說(shuō)明:GROUPBY子句用來(lái)指定分組的字段,這些字段還必須要全部包含在SELECT子句中。4.使用GROUPBY子句對(duì)數(shù)據(jù)進(jìn)行分組匯總操作案例知識(shí)點(diǎn)概述示例5-30運(yùn)行結(jié)果如下:分組統(tǒng)計(jì)男、女學(xué)生的人數(shù)。高級(jí)查詢(xún)使用HAVING子句,可以用來(lái)指定結(jié)果集的組需要滿(mǎn)足的條件,即對(duì)結(jié)果集的組進(jìn)行篩選,僅顯示滿(mǎn)足條件的分組統(tǒng)計(jì)結(jié)果。其語(yǔ)法格式為: SELECT字段名1[,字段名2,…],統(tǒng)計(jì)函數(shù) FROM表名 [WHERE查詢(xún)條件] GROUPBY字段名1[,字段名2,…] [HAVING分組條件]5.使用HAVING子句對(duì)分組匯總結(jié)果進(jìn)行篩選高級(jí)查詢(xún)說(shuō)明:如果同時(shí)具有WHERE子句、GROUPBY子句、HAVING子句時(shí),其執(zhí)行順序是:首先執(zhí)行WHERE子句,然后執(zhí)行GROUPBY子句,最后再執(zhí)行HAVING子句。即先使用WHERE查詢(xún)出滿(mǎn)足條件的記錄;然后使用GROUPBY對(duì)這些滿(mǎn)足條件的數(shù)據(jù)按照指定的字段分組匯總;最后再使用HAVING子句篩選出符合條件的組。5.使用HAVING子句對(duì)分組匯總結(jié)果進(jìn)行篩選操作案例知識(shí)點(diǎn)概述示例5-31運(yùn)行結(jié)果如下:分組統(tǒng)計(jì)被選修過(guò)1次以上的課程編號(hào)、選修次數(shù)和平均分。說(shuō)明:語(yǔ)句中的“HAVING選修次數(shù)>1”也可以更改為“HAVINGCOUNT(*)>1”。操作案例知識(shí)點(diǎn)概述示例5-32運(yùn)行結(jié)果如下:分組統(tǒng)計(jì)“軟件131”班級(jí)中選修超過(guò)2門(mén)課程、且平均成績(jī)高于60分的學(xué)生學(xué)號(hào)、姓名、選修門(mén)數(shù)和平均分,并按照平均分降序排列。高級(jí)查詢(xún)?cè)陉P(guān)系型數(shù)據(jù)庫(kù)的應(yīng)用中,也經(jīng)常會(huì)涉及到嵌套查詢(xún)的使用。嵌套查詢(xún)是指一個(gè)SELECT語(yǔ)句的WHERW子句中還包含另外一個(gè)SELECT語(yǔ)句,外層的SELECT語(yǔ)句稱(chēng)為外部查詢(xún)或父查詢(xún),內(nèi)層的SELECT語(yǔ)句稱(chēng)為內(nèi)部查詢(xún)或子查詢(xún),子查詢(xún)需要使用圓括號(hào)“()”括起來(lái)。SQL語(yǔ)言允許多層嵌套查詢(xún),即一個(gè)子查詢(xún)中還可以有其他子查詢(xún)。嵌套查詢(xún)的求解方法是由里向外處理,即每個(gè)子查詢(xún)都是在上一級(jí)查詢(xún)之前求解,子查詢(xún)的結(jié)果用于建立其父查詢(xún)的查詢(xún)條件。如果子查詢(xún)的返回值為單列單值,可以通過(guò)使用“=”、“!=”、“>”、“<”等比較運(yùn)算符直接與父查詢(xún)的字段值進(jìn)行比較。6.子查詢(xún)的返回值為單列單值的嵌套查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-33運(yùn)行結(jié)果如下:查詢(xún)與學(xué)號(hào)(sNo)為“1308013101”的同學(xué)在同一個(gè)班級(jí)的學(xué)生名單。操作案例知識(shí)點(diǎn)概述示例5-34運(yùn)行結(jié)果如下:查詢(xún)選修課程編號(hào)(cNo)為“01001”的課程、且成績(jī)超過(guò)該課程平均分的學(xué)生的學(xué)號(hào)、姓名、班級(jí)、課程名稱(chēng)和成績(jī)。高級(jí)查詢(xún)?nèi)绻硬樵?xún)的返回值為單列多值,可以使用IN或NOTIN關(guān)鍵字,即表示在或者不在子查詢(xún)的結(jié)果集中。7.子查詢(xún)的返回值為單列多值的嵌套查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-35運(yùn)行結(jié)果如下:查詢(xún)選修課程編號(hào)(cNo)為“01001”的課程的學(xué)生名單。操作案例知識(shí)點(diǎn)概述示例5-36運(yùn)行結(jié)果如下:查詢(xún)學(xué)號(hào)為“1308013101”的學(xué)生選修的課程信息。操作案例知識(shí)點(diǎn)概述示例5-37運(yùn)行結(jié)果如下:查詢(xún)沒(méi)有選修課程的女生名單。高級(jí)查詢(xún)?nèi)绻硬樵?xún)的返回值為多列數(shù)據(jù),可以使用EXISTS或NOTEXISTS關(guān)鍵字。在WHERE子句中使用EXISTS關(guān)鍵字,表示判斷子查詢(xún)的結(jié)果集是否為空,如果子查詢(xún)至少返回一行時(shí),WHERE子句的條件為真,返回TRUE;否則條件為假,返回FALSE。加上關(guān)鍵字NOT,則剛好相反。8.使用EXISTS關(guān)鍵字創(chuàng)建子查詢(xún)操作案例知識(shí)點(diǎn)概述示例5-38運(yùn)行結(jié)果如下:查詢(xún)選修課程的女生名單,使用關(guān)鍵字EXISTS。說(shuō)明:EXISTS關(guān)鍵字的前面沒(méi)有字段名或其他表達(dá)式。由EXISTS引出的子查詢(xún),其選擇字段表達(dá)式通常都使用星號(hào)(*),這是因?yàn)?,帶EXISTS的子查詢(xún)只是測(cè)試是否存在符合子查詢(xún)中指定條件的行,所以不必列出字段名。謝謝數(shù)據(jù)查詢(xún)

帶子查詢(xún)的數(shù)據(jù)更新

本節(jié)內(nèi)容1.拷貝表結(jié)構(gòu)及數(shù)據(jù)到新表2.向表中插入子查詢(xún)結(jié)果集3.帶子查詢(xún)的修改語(yǔ)句4.帶子查詢(xún)的刪除語(yǔ)句帶子查詢(xún)的數(shù)據(jù)更新拷貝表結(jié)構(gòu)及數(shù)據(jù)到新表使用的是

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論