《數(shù)據(jù)查詢及統(tǒng)計》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)查詢及統(tǒng)計(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、數(shù)據(jù)查詢及統(tǒng)計數(shù)據(jù)查詢及統(tǒng)計 本章主要內(nèi)容本章主要內(nèi)容 單表查詢 多表連接查詢 嵌套查詢 聚集函數(shù) 分組數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫中使用的表數(shù)據(jù)庫中使用的表數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用單表查詢單表查詢單表查詢單表查詢F單表無條件查詢單表無條件查詢 命令格式:命令格式: SELECT ALL|DISTINCT TOP NPERCENT SELECT ALL|DISTINCT TOP NPERCENT AS AS , , AS AS ,.,. FROM FROM 表名表名| |視圖名視圖名 數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用單表查詢單表查詢例題一例題一 查詢?nèi)簩W(xué)生的信息查詢?nèi)簩W(xué)生
2、的信息.SELECT SELECT * *FROM STUDENTFROM STUDENT數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用單表查詢單表查詢F單表有條件查詢單表有條件查詢命令格式:命令格式:SELECT ALL|DISTINCT SELECT ALL|DISTINCT AS AS , AS AS,.,.FROM FROM WHERE WHERE 數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用單表查詢單表查詢例題二例題二 查詢王坤的個人信息。查詢王坤的個人信息。SELECT SELECT * *FROM STUDENTFROM STUDENTWHERE SNAME=WHERE SNAME=王坤王坤數(shù)據(jù)庫原理及應(yīng)
3、用數(shù)據(jù)庫原理及應(yīng)用單表查詢單表查詢F模糊查詢模糊查詢LIKE(LIKE(模糊查詢模糊查詢) )用法:用法: NOT LIKE NOT LIKE ESCAPE ESCAPE 其含義是查找指定的屬性列值與其含義是查找指定的屬性列值與 相匹配的記錄。相匹配的記錄。 可以是一個完整的字符串,也可以含有通配符可以是一個完整的字符串,也可以含有通配符% %和和_ _。其中:。其中:%(%(百分號百分號) ):代表任意長度:代表任意長度( (長度可以為長度可以為0)0)的字符串;的字符串;_(_(下劃線下劃線) ):代表任意單個字符。:代表任意單個字符。ESCAPE ESCAPE 的作用是當(dāng)用戶要查詢的字符
4、串本身應(yīng)含有的作用是當(dāng)用戶要查詢的字符串本身應(yīng)含有% %或或_ _時,可以使用該選項對通配符進(jìn)行轉(zhuǎn)義。時,可以使用該選項對通配符進(jìn)行轉(zhuǎn)義。如果如果LIKELIKE后面的匹配串中不含通配符,則可以用后面的匹配串中不含通配符,則可以用“=”(=”(等于等于) )運(yùn)算符取代運(yùn)算符取代LIKELIKE謂詞,用謂詞,用“!=”!=”或或“”(”(不等于不等于) )運(yùn)算符取代運(yùn)算符取代NOT LIKENOT LIKE謂詞。謂詞。數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用單表查詢單表查詢例題三例題三 查詢姓王的學(xué)生的信息。查詢姓王的學(xué)生的信息。SELECT *FROM STUDENTWHERE SNAME LIKE
5、王王%數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用多表連接查詢多表連接查詢多表連接查詢多表連接查詢語句格式:語句格式:SELECT ALL|DISTINCT SELECT ALL|DISTINCT 別名別名.ASAS ,別名別名.ASAS,.,.FROM FROM 1 別名別名1,1, 2 別名別名2,2, WHERE WHERE AND AND 數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用多表連接查詢多表連接查詢實現(xiàn)根據(jù)系別查詢學(xué)生的信息:實現(xiàn)根據(jù)系別查詢學(xué)生的信息:例題一例題一 查詢軟件系學(xué)生的信息。查詢軟件系學(xué)生的信息。SELECT SELECT * *FROM STUDENT A,CLASS B,DEPART
6、MENT CFROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND WHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO AND DEPTNAME=B.DEPTNO=C.DEPTNO AND DEPTNAME=軟件工程系軟件工程系 數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用多表連接查詢多表連接查詢例題二例題二 查詢軟件系查詢軟件系20072007級學(xué)生的信息。級學(xué)生的信息。SELECT SELECT * *FROM STUDENT A,CLASS B,DEPARTMENT CFROM ST
7、UDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNOWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO AND DEPTNAME= AND DEPTNAME=軟件工程系軟件工程系 AND INYEAR=2007 AND INYEAR=2007數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用多表連接查詢多表連接查詢例題三例題三 查詢軟件系查詢軟件系20072007級級2 2班學(xué)生的信息。班學(xué)生的信息。SELECT SELECT * *FROM STUDENT A,CLAS
8、S B,DEPARTMENT CFROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNOWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO AND DEPTNAME= AND DEPTNAME=軟件工程系軟件工程系 AND INYEAR=2007 AND INYEAR=2007 AND CLASSNAME=07 AND CLASSNAME=07軟件軟件2 2班班 數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用嵌套查詢嵌套查詢嵌套查詢嵌套查詢在在SQLSQL語
9、言中,一個語言中,一個SELECT-FROM-WHERESELECT-FROM-WHERE語句稱為一語句稱為一個查詢塊。將一個查詢塊嵌套在另一個查詢塊的個查詢塊。將一個查詢塊嵌套在另一個查詢塊的WHEREWHERE子句或子句或HAVINGHAVING子句的條件中稱為嵌套查詢或子句的條件中稱為嵌套查詢或子查詢。子查詢。下面給出通過嵌套查詢實現(xiàn)上面三個例題的下面給出通過嵌套查詢實現(xiàn)上面三個例題的SQLSQL語句。語句。數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用嵌套查詢嵌套查詢例題一例題一* * SELECT SELECT * *FROM STUDENT FROM STUDENT WHERE CLASSNO=
10、(SELECT CLASSNO FROM CLASSWHERE CLASSNO=(SELECT CLASSNO FROM CLASS WHERE DEPTNO=(SELECT DEPTNO WHERE DEPTNO=(SELECT DEPTNO FROM DEPARTMENT FROM DEPARTMENT WHERE DEPTNAME= WHERE DEPTNAME=軟件工程系軟件工程系) ) ) )數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用嵌套查詢嵌套查詢例題二例題二* *SELECT SELECT * *FROM STUDENT FROM STUDENT WHERE CLASSNO=(SELECT
11、 CLASSNO FROM CLASSWHERE CLASSNO=(SELECT CLASSNO FROM CLASS WHERE INYEAR=2007 AND WHERE INYEAR=2007 AND DEPTNO=(SELECT DEPTNO DEPTNO=(SELECT DEPTNO FROM DEPARTMENT FROM DEPARTMENT WHERE DEPTNAME= WHERE DEPTNAME=軟件工程系軟件工程系) ) ) )數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用嵌套查詢嵌套查詢例題三例題三 * *SELECT SELECT * *FROM STUDENT FROM STU
12、DENT WHERE CLASSNO=(SELECT CLASSNO FROM CLASSWHERE CLASSNO=(SELECT CLASSNO FROM CLASS WHERE CLASSNAME=07 WHERE CLASSNAME=07軟件軟件2 2班班 AND AND DEPTNO=(SELECT DEPTNO DEPTNO=(SELECT DEPTNO FROM DEPARTMENT FROM DEPARTMENT WHERE DEPTNAME= WHERE DEPTNAME=軟件工程系軟件工程系) ) ) )數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用聚集函數(shù)聚集函數(shù)聚集函數(shù)聚集函數(shù)SQL
13、SQL的聚集函數(shù)是綜合信息的統(tǒng)計函數(shù),也稱為聚合的聚集函數(shù)是綜合信息的統(tǒng)計函數(shù),也稱為聚合函數(shù)或集函數(shù),包括計數(shù)、求最大值、求最小值、函數(shù)或集函數(shù),包括計數(shù)、求最大值、求最小值、求平均值和求和等。聚集函數(shù)可作為列標(biāo)識符出求平均值和求和等。聚集函數(shù)可作為列標(biāo)識符出現(xiàn)在現(xiàn)在SELECTSELECT子句的目標(biāo)列或子句的目標(biāo)列或HAVINGHAVING子句的條件中。子句的條件中。數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用聚集函數(shù)聚集函數(shù)聚集函數(shù)聚集函數(shù)具具 體體 用用 法法具具 體體 含含 義義COUNT COUNT COUNT(DISTINCT|ALLCOUNT(DISTINCT|ALL* *) ) 統(tǒng)計元組
14、個數(shù)統(tǒng)計元組個數(shù) COUNT COUNT COUNT(DISTINCT|ALL COUNT(DISTINCT|ALL ) ) 統(tǒng)計一列中值的個數(shù)統(tǒng)計一列中值的個數(shù) SUM SUM SUM(DISTINCT|ALL SUM(DISTINCT|ALL ) ) 計算一列值的總和計算一列值的總和( (此列必須為此列必須為數(shù)值型數(shù)值型) ) AVG AVG AVG(DISTINCT|ALL AVG(DISTINCT|ALL ) ) 計算一列值的平均值計算一列值的平均值( (此列必須此列必須為數(shù)值型為數(shù)值型) ) MAX MAX(DISTINCT|ALL ) 求一列值中的最大值求一列值中的最大值 MIN
15、MIN(DISTINCT|ALL ) 求一列值中的最小值求一列值中的最小值 數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用聚集函數(shù)聚集函數(shù)例題一例題一 統(tǒng)計全院學(xué)生人數(shù)統(tǒng)計全院學(xué)生人數(shù). .SELECT COUNT(SELECT COUNT(* *) AS ) AS 全院人數(shù)全院人數(shù)FROM STUDENTFROM STUDENT數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用分組與排序分組與排序?qū)Σ樵兘Y(jié)果集進(jìn)行分組對查詢結(jié)果集進(jìn)行分組(1) (1) 命令格式:命令格式:GROUP BYGROUP BYHAVINGHAVING。(2) (2) 功能說明:把查詢結(jié)果集中的各行按功能說明:把查詢結(jié)果集中的各行按 進(jìn)行分進(jìn)行分組
16、,在這些列上,對應(yīng)值都相同的記錄分在同一組。若無組,在這些列上,對應(yīng)值都相同的記錄分在同一組。若無HAVINGHAVING子句,則各組分別輸出;若有子句,則各組分別輸出;若有HAVINGHAVING子句,只有符子句,只有符合合HAVINGHAVING條件的組才輸出。此時,條件的組才輸出。此時,SELECTSELECT子句中,只能包子句中,只能包含兩種目標(biāo)列表達(dá)式:要么是聚集函數(shù),要么是出現(xiàn)在含兩種目標(biāo)列表達(dá)式:要么是聚集函數(shù),要么是出現(xiàn)在GROUP BYGROUP BY子句中的分組字段。子句中的分組字段。當(dāng)當(dāng)SELECTSELECT的目標(biāo)列表達(dá)式清單中有聚集函數(shù)時,才使用的目標(biāo)列表達(dá)式清單中有
17、聚集函數(shù)時,才使用GROUP BYGROUP BY子句。子句。數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用分組與排序分組與排序例題一例題一 查詢各系的總?cè)藬?shù)。查詢各系的總?cè)藬?shù)。SELECT DEPTNAME SELECT DEPTNAME 系名系名, COUNT(, COUNT(* *) AS ) AS 總?cè)藬?shù)總?cè)藬?shù)FROM STUDENT A,CLASS B,DEPARTMENT CFROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND WHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO
18、B.DEPTNO=C.DEPTNOGROUP BY DEPTNAMEGROUP BY DEPTNAME數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用分組與排序分組與排序例題二例題二 統(tǒng)計各系各級的人數(shù)統(tǒng)計各系各級的人數(shù). .SELECT DEPTNAME SELECT DEPTNAME 系名系名, INYEAR , INYEAR 年級年級,COUNT(,COUNT(* *) ) AS AS 總?cè)藬?shù)總?cè)藬?shù)FROM STUDENT A,CLASS B,DEPARTMENT CFROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND WHER
19、E A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO B.DEPTNO=C.DEPTNOGROUP BY DEPTNAME,INYEARGROUP BY DEPTNAME,INYEAR數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用分組與排序分組與排序例題三例題三 統(tǒng)計各班的人數(shù)。統(tǒng)計各班的人數(shù)。SELECT CLASSNAME SELECT CLASSNAME 班級班級,COUNT(,COUNT(* *) AS ) AS 總?cè)藬?shù)總?cè)藬?shù)FROM STUDENT A,CLASS B FROM STUDENT A,CLASS B WHERE A.CLASSNO=B.CLASSNO WHERE A.CLASSNO=B.CLASSNO GROUP BY CLASSNAMEGROUP BY CLASSNAME數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)庫原理及應(yīng)用數(shù)據(jù)查詢與統(tǒng)計數(shù)據(jù)查詢與統(tǒng)計l單表查詢l 多表連接查詢 l 嵌套查詢l 聚集函數(shù) l 分組