版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫系統(tǒng)概論AnIntroductiontoDatabaseSystem章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL第三章
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7小結(jié)3.1SQL概述SQL語言于1974年由Boyce等提出,并于1975~1979年在IBM公司研制的SystemR數(shù)據(jù)庫管理系統(tǒng)上實(shí)現(xiàn),現(xiàn)已成為國際標(biāo)準(zhǔn)。很多數(shù)據(jù)庫廠商都對SQL語句進(jìn)行了再開發(fā)和擴(kuò)展標(biāo)準(zhǔn)SQL命令包括查詢SELECT插入INSERT更新UPDATE刪除DELETE創(chuàng)建CREATE對象刪除DROP可被用來完成幾乎所有的數(shù)據(jù)庫操作3.1SQL概述3.1.1SQL發(fā)展3.1.2SQL特點(diǎn)3.1.3SQL查詢基本概念3.1.1SQL發(fā)展SQL-86:第一個SQL標(biāo)準(zhǔn),由美國國家標(biāo)準(zhǔn)局(AmericanNationalStandardInstitute,簡稱ANSI)公布,1987年國際標(biāo)準(zhǔn)化組織(InternationalOrganizationforStandardization,簡稱ISO)通過。該標(biāo)準(zhǔn)也稱為SQL-1SQL-92:在1992年,由ISO和ANSI對SQL-86進(jìn)行重新修訂,該標(biāo)準(zhǔn)也稱為SQL-2SQL-99:在1999年,該版本在SQL-2的基礎(chǔ)上,擴(kuò)展了諸多功能,包括遞歸、觸發(fā)、面向?qū)ο蠹夹g(shù)等。該標(biāo)準(zhǔn)也稱為SQL-3
SQL-2003:該標(biāo)準(zhǔn)是最新的標(biāo)準(zhǔn),也稱SQL-4,于2003年發(fā)布3.1.1SQL發(fā)展SQL語言由4部分組成數(shù)據(jù)定義語言DDL(DataDefinitionLanguage)定義數(shù)據(jù)庫的邏輯結(jié)構(gòu),包括數(shù)據(jù)庫、基本表、視圖和索引等,擴(kuò)展DDL還支持存儲過程、函數(shù)、對象、觸發(fā)器等的定義DDL包括3類語言,即定義、修改和刪除數(shù)據(jù)操縱語言DML(DataManipuplationLanguage)對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行檢索和更新,其中更新操作包括插入、刪除和修改數(shù)據(jù)數(shù)據(jù)控制語言DCL(DataControlLanguage)對數(shù)據(jù)庫的對象進(jìn)行授權(quán)、用戶維護(hù)(包括創(chuàng)建、修改和刪除)、完整性規(guī)則定義和事務(wù)定義等其它主要是嵌入式SQL語言和動態(tài)SQL語言的定義,規(guī)定了SQL語言在宿主語言中使用的規(guī)則擴(kuò)展SQL還包括數(shù)據(jù)庫數(shù)據(jù)的重新組織、備份與恢復(fù)等功能3.1.2SQL特點(diǎn)綜合統(tǒng)一集數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言DCL的功能于一體高度非過程化面向集合的操作方式采用集合操作方式,其操作對象、查找結(jié)果都是元組的集合
同一種語法結(jié)構(gòu)提供兩種使用方式SQL語言既是自含式語言,又是嵌入式語言。在兩種不同的使用方式下,其語法結(jié)構(gòu)基本上是一致的語言簡潔,易學(xué)易用SQL語言的動詞非常少,主要包括:數(shù)據(jù)查詢SELECT;數(shù)據(jù)定義CREATE、DROP、ALTER;數(shù)據(jù)操縱INSERT、UPDATE、DELETE;數(shù)據(jù)控制GRANT、REVOKE3.1.3SQL查詢基本概念SQL語言支持三級模式結(jié)構(gòu),外模式對應(yīng)視圖和部分基本表,模式對應(yīng)基本表,內(nèi)模式對應(yīng)存儲文件SQL視圖1視圖2基本表1基本表2基本表3基本表4存儲文件1存儲文件2外模式模式內(nèi)模式3.1.3SQL查詢基本概念基本表數(shù)據(jù)庫中獨(dú)立存在的表稱為基本表在SQL中一個關(guān)系對應(yīng)一個基本表一個(或多個)基本表對應(yīng)一個存儲文件一個表可以帶若干索引索引存放在存儲文件中視圖指從一個或幾個基本表(或視圖)導(dǎo)出的表,是虛表只存放視圖的定義而不存放對應(yīng)數(shù)據(jù)查詢表指查詢結(jié)果對應(yīng)的表第三章
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7小結(jié)3.2學(xué)生-課程數(shù)據(jù)庫學(xué)生-課程模式S-T:
學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept)
課程表:Course(Cno,Cname,Cpno,Ccredit)
學(xué)生選課表:SC(Sno,Cno,Grade)
Student表學(xué)號Sno姓名Sname性別
Ssex年齡
Sage所在系
Sdept200215121200215122200215123200515125李勇劉晨王敏張立男女女男20191819CSCSMAISCourse表課程號Cno課程名Cname先行課Cpno學(xué)分Ccredit1234567數(shù)據(jù)庫數(shù)學(xué)信息系統(tǒng)操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)處理PASCAL語言516764243424SC表學(xué)號Sno
課程號
Cno
成績
Grade200215121200215121200215121200215122200215122123239285889080第三章
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7小結(jié)寫出圖中每一個關(guān)系的外鍵。如關(guān)系:選課,兩個外鍵:學(xué)號和課程號學(xué)生,外鍵:系號;授課,外鍵:職工號,授課課號教師,外鍵:系號教師和工資表,形式上職工號即是主鍵又是外鍵,語義上應(yīng)該是職工號在教師表中做主鍵,在工資表中即是主鍵又是外鍵寫出和關(guān)系表達(dá)式:“學(xué)生?選課”以及“學(xué)生?選課?課程”,等價的使用笛卡爾積和選擇運(yùn)算的關(guān)系表達(dá)式寫出和關(guān)系表達(dá)式:“學(xué)生?選課”以及“學(xué)生?選課?課程”,等價的使用笛卡爾積和選擇運(yùn)算的關(guān)系表達(dá)式σ學(xué)生.學(xué)號=選課.學(xué)號(學(xué)生×選課)σ學(xué)生.學(xué)號=選課.學(xué)號∧選課.課程號=課程.課程號(學(xué)生×選課×課程)查詢男學(xué)生的姓名、選修的課程名、成績查詢男學(xué)生的姓名、選修的課程名、成績π姓名,課程名稱,成績(σ性別=’男’(學(xué)生?選課?課程))查詢教師的姓名、職稱、應(yīng)發(fā)工資查詢教師的姓名、職稱、應(yīng)發(fā)工資π姓名,職稱,應(yīng)發(fā)工資(教師?工資)查詢學(xué)分大于3的所有課程名稱、及其對應(yīng)的授課老師姓名和老師所在的系名查詢學(xué)分大于3的所有課程名稱、及其對應(yīng)的授課老師姓名和老師所在的系名π課程名稱,姓名,系名稱(σ學(xué)分>3(系部?教師?授課?課程))查詢所有老師的授課情況,顯示老師姓名、課程名稱、學(xué)分查詢所有老師的授課情況,顯示老師姓名、課程名稱、學(xué)分π姓名,課程名稱,學(xué)分((教師leftoutterjoin授課)leftoutterjoin課程)1.查詢學(xué)生的所有信息select*from學(xué)生2.查詢每個學(xué)生的姓名和籍貫select姓名,籍貫from學(xué)生3.查詢1985年以后出生的學(xué)生的學(xué)號、姓名和出生日期select學(xué)號,姓名,出生日期from學(xué)生whereyear(出生日期)>19854.查詢家庭住址“海淀區(qū)”的同學(xué)的姓名和家庭住址select姓名,家庭住址from學(xué)生where家庭住址like'%海淀區(qū)%‘5.查詢學(xué)號前兩位是“05”的學(xué)生的姓名和系號select姓名,系號from學(xué)生where學(xué)號like'05%'6.查詢職稱是“教授”或“副教授”的教師的姓名、性別和職稱select姓名,性別,職稱from教師where職稱='教授‘or職稱='副教授'7.查詢女學(xué)生的姓名、生日,將結(jié)果中各列的標(biāo)題分別指定為“Name”和“Birthday”select姓名Name,出生日期Birthdayfrom學(xué)生where性別='女'8.查詢民族代碼為“01”、“03”、“30”的學(xué)生的姓名、學(xué)號、民族代碼select姓名,學(xué)號,民族代碼from學(xué)生where民族代碼='01‘or民族代碼='03‘or民族代碼='30'9.查詢選了課的學(xué)生的學(xué)號,(不能有重復(fù)值)selectdistinct學(xué)號from選課數(shù)據(jù)查詢語句格式
SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]…FROM<表名或視圖名>[,<表名或視圖名>]…[WHERE<條件表達(dá)式>][GROUPBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC|DESC]];
SQL查詢SQL基本結(jié)構(gòu)包括3個子句:SELECT子句對應(yīng)投影運(yùn)算,指定查詢結(jié)果中所需要的屬性或表達(dá)式FROM子句
對應(yīng)笛卡爾積,給出查詢所涉及的表,表可以是基本表、視圖或查詢表WHERE子句對應(yīng)選擇運(yùn)算,指定查詢結(jié)果元組所需要滿足的選擇條件SELECT和FROM是必須的,其他是可選的SQL查詢基本語法為:SELECTA1,A2,...,AnFROMR1,R2,...,RmWHEREPA1,A2,...,An代表需要查找的屬性或表達(dá)式R1,R2,...,Rm代表查詢所涉及的表P代表謂詞(即選擇條件),如果省略WHERE子句,表示P為真SQL的查詢結(jié)果中允許包含重復(fù)元組SQL執(zhí)行過程:首先對R1,R2,...,Rm執(zhí)行笛卡爾積然后在笛卡爾積中選擇使得謂詞P為真的記錄再在A1,A2,...,An屬性列中進(jìn)行投影運(yùn)算,不消除重復(fù)元組如需消除重復(fù)元組,必須使用關(guān)鍵字DISTINCT剛才描述的SQL查詢執(zhí)行過程只是邏輯上的,在具體執(zhí)行時會進(jìn)行優(yōu)化處理,查詢優(yōu)化的內(nèi)容詳見第9章。3.4數(shù)據(jù)查詢3.4.1單表查詢3.4.2連接查詢3.4.3嵌套查詢3.4.4集合查詢3.4.5Select語句的一般形式
3.4.1單表查詢查詢僅涉及一個表:一、選擇表中的若干列二、選擇表中的若干元組三、ORDERBY子句四、聚集函數(shù)五、GROUPBY子句一、選擇表中的若干列查詢指定列
[例1]查詢?nèi)w學(xué)生的學(xué)號與姓名。
SELECTSno,Sname FROMStudent;
該查詢的執(zhí)行過程是:從Student表中依次取出每個元組對每個元組僅選取Sno、Sname兩個屬性的值,形成一個新元組最后將這些新元組組織為一個結(jié)果關(guān)系輸出
[例2]查詢?nèi)w學(xué)生的姓名、學(xué)號、所在系。
SELECTSname,Sno,Sdept FROMStudent;2.查詢?nèi)苛羞x出所有屬性列:在SELECT關(guān)鍵字后面列出所有列名將<目標(biāo)列表達(dá)式>指定為*[例3]查詢?nèi)w學(xué)生的詳細(xì)記錄。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或SELECT*FROMStudent;給屬性列取別名可為屬性列取一個便于理解的列名,如用中文來顯示列名為屬性列取別名特別適合經(jīng)過計(jì)算的列[例3.4]查詢所有學(xué)生的所屬系、學(xué)號和姓名,要求用中文顯示列名SELECTSdept所屬系,Sno學(xué)號,Sname姓名FROMStudent該查詢可使用AS關(guān)鍵字取別名:SELECTSdeptAS所屬系,SnoAS學(xué)號, SnameAS姓名
FROMStudent3.查詢經(jīng)過計(jì)算的值SELECT子句的<目標(biāo)列表達(dá)式>可以為:算術(shù)表達(dá)式字符串常量函數(shù)列別名[例4]查全體學(xué)生的姓名及其出生年份。SELECTSname,2004-Sage/*假定當(dāng)年的年份為2004年*/FROMStudent;
輸出結(jié)果:
Sname2004-Sage
李勇 1984
劉晨 1985
王敏 1986
張立 1985查詢經(jīng)過計(jì)算的值(續(xù))查詢經(jīng)過計(jì)算的值(續(xù))查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名:
SELECTSnameNAME,'YearofBirth:’
BIRTH,
year(GETDATE())-SageBIRTHDAY,LOWER(Sdept)DEPARTMENT FROM
Student;函數(shù)lower()將大寫字母改為小寫字母函數(shù)getdate()獲取當(dāng)前系統(tǒng)的日期函數(shù)year()提取日期中的年份輸出結(jié)果:
NAMEBIRTHBIRTHDAYDEPARTMENT------------------------------------------------------
李勇YearofBirth:1984cs
劉晨YearofBirth:1985is
王敏YearofBirth:1986ma
張立YearofBirth:1985is3.4.1單表查詢查詢僅涉及一個表:一、選擇表中的若干列二、選擇表中的若干元組三、ORDERBY子句四、聚集函數(shù)五、GROUPBY子句二、選擇表中的若干元組1.消除取值重復(fù)的行
如果沒有指定DISTINCT關(guān)鍵詞,則缺省為ALL
[例6]查詢選修了課程的學(xué)生學(xué)號。
SELECTSnoFROMSC; 等價于:
SELECTALLSnoFROMSC; 執(zhí)行上面的SELECT語句后,結(jié)果為:
Sno 200215121 200215121 200215121 200215122 200215122消除取值重復(fù)的行(續(xù))指定DISTINCT關(guān)鍵詞,去掉表中重復(fù)的行
SELECTDISTINCTSnoFROMSC;執(zhí)行結(jié)果:
Sno 200215121 200215122選擇運(yùn)算WHERE子句可實(shí)現(xiàn)關(guān)系代數(shù)中的選擇運(yùn)算WHERE常用的查詢條件有:比較運(yùn)算:>、>=、<、<=、=、<>(或!=)范圍查詢:BETWEEN...AND集合查詢:IN空值查詢:ISnull字符匹配查詢:LIKE邏輯查詢:AND、OR、NOT(1)比較運(yùn)算使用比較運(yùn)算符>、>=、<、<=、=、<>(或!=)[例7]查詢計(jì)算機(jī)科學(xué)系全體學(xué)生的名單。
SELECTSnameFROMStudentWHERESdept=‘CS’;
選擇運(yùn)算該查詢的執(zhí)行過程可能有多種方法:全表掃描法依次取出Student表中的每個元組判斷該元組的Sdept屬性值是否等于CS若是則將該元組的Sname屬性取出,形成一個新元組最后將所有新元組組織為一個結(jié)果關(guān)系輸出該方法適用于小表,或者該表未在Sdept屬性列上建索引索引搜索法如果該表在Sdept屬性列上建有索引,且滿足條件的記錄不多,則可使用索引搜索法來檢索數(shù)據(jù)具體使用何種方法由數(shù)據(jù)庫管理系統(tǒng)的查詢優(yōu)化器來選擇,[例8]查詢所有出生日期在2000年以前的學(xué)生姓名及其年齡。
[例8]查詢所有出生日期在2000年以前的學(xué)生姓名及其年齡。
SELECTSname,SageFROMStudentWHERE
year(GETDATE())-Sage<2000;[例9]查詢考試成績有不及格的學(xué)生的學(xué)號。
SELECTDISTINCTSnoFROMSCWHEREGrade<60;(2)確定范圍BETWEEN...AND用于查詢屬性值在某一個范圍內(nèi)的元組NOTBETWEEN...AND用于查詢屬性值不在某一個范圍內(nèi)的元組BETWEEN后是屬性的下限值,AND后是屬性的上限值[例10]查詢年齡在20~23歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡
SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;[例11]查詢年齡不在20~23歲之間的學(xué)生姓名、系別和年齡
(3)確定集合IN用于查詢屬性值在某個集合內(nèi)的元組NOTIN用于查詢屬性值不在某個集合內(nèi)的元組
IN后面是集合,可以是具體的集合,也可以是查詢出來的元組集合。[例12]查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。
SELECTSname,Ssex FROMStudent WHERESdeptIN('IS','MA','CS');[例13]查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。(4)字符匹配字符匹配查詢LIKE用于字符匹配查詢,語法格式為:[NOT]LIKE<匹配字符串>[ESCAPE<換碼字符>]查詢的含義是:如果在LIKE前沒有NOT,則查詢指定的屬性列值與<匹配字符串>相匹配的元組;如果在LIKE前有NOT,則查詢指定的屬性列值不與<匹配字符串>相匹配的元組。<匹配字符串>可以是一個具體的字符串,也可以包括通配符%和_%表示任意長度的字符串a(chǎn)b%,表示所有以ab開頭的任意長度的字符串;zhang%ab,表示以zhang開頭,以ab結(jié)束,中間可以是任意個字符的字符串。符號_(下劃線)表示任意一個字符ab_,表示所有以ab開頭的3個字符的字符串,其中第3個字符為任意字符;a__b表示所有以a開頭,以b結(jié)束的4個字符的字符串,且第2、3個字符為任意字符。(4)字符匹配謂詞:
[NOT]LIKE‘<匹配串>’[ESCAPE‘<換碼字符>’]匹配串為固定字符串[例14]查詢學(xué)號為200215121的學(xué)生的詳細(xì)情況。
SELECT*FROMStudentWHERESnoLIKE‘200215121';等價于:
SELECT*FROMStudentWHERESno='200215121';字符匹配(續(xù))2)匹配串為含通配符的字符串[例15]查詢所有姓劉學(xué)生的姓名、學(xué)號和性別。
SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE‘劉%’;[例16]查詢姓"歐陽"且全名為三個漢字的學(xué)生的姓名。
SELECTSnameFROMStudentWHERESnameLIKE'歐陽__';字符匹配(續(xù))[例17]查詢名字中第2個字為"陽"字的學(xué)生的姓名和學(xué)號。[例18]查詢所有不姓劉的學(xué)生姓名。字符匹配(續(xù))[例17]查詢名字中第2個字為"陽"字的學(xué)生的姓名和學(xué)號。
SELECTSname,SnoFROMStudentWHERESnameLIKE‘__陽%’;[例18]查詢所有不姓劉的學(xué)生姓名。
SELECTSname,Sno,SsexFROMStudentWHERESnameNOTLIKE'劉%';字符匹配(續(xù))3)使用換碼字符將通配符轉(zhuǎn)義為普通字符
[例19]查詢DB_Design課程的課程號和學(xué)分。
SELECTCno,CcreditFROMCourseWHERECnameLIKE'DB\_Design'ESCAPE'\‘;[例20]查詢以"DB_"開頭,且倒數(shù)第3個字符為i的課程的詳細(xì)情況。
ESCAPE'\'表示“\”為換碼字符
字符匹配(續(xù))3)使用換碼字符將通配符轉(zhuǎn)義為普通字符
[例20]查詢以"DB_"開頭,且倒數(shù)第3個字符為i的課程的詳細(xì)情況。
SELECT*FROMCourseWHERECnameLIKE'DB\_%i__'ESCAPE'\‘;
ESCAPE'\'表示“\”為換碼字符
(5)涉及空值的查詢謂詞:
ISNULL或ISNOTNULL“IS”不能用“=”代替
[例21]某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢?nèi)鄙俪煽兊膶W(xué)生的學(xué)號和相應(yīng)的課程號。
SELECTSno,CnoFROMSCWHEREGradeISNULL[例22]查所有有成績的學(xué)生學(xué)號和課程號。
SELECTSno,CnoFROMSCWHEREGradeISNOTNULL;(6)多重條件查詢邏輯運(yùn)算符:AND和OR來聯(lián)結(jié)多個查詢條件
AND的優(yōu)先級高于OR
可以用括號改變優(yōu)先級可用來實(shí)現(xiàn)多種其他謂詞
[NOT]IN[NOT]BETWEEN…AND…多重條件查詢(續(xù))[例23]查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。
SELECTSnameFROMStudentWHERESdept='CS'ANDSage<20;多重條件查詢(續(xù))改寫[例12][例12]查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。SELECTSname,SsexFROMStudentWHERESdeptIN('IS','MA','CS')可改寫為:SELECTSname,SsexFROMStudentWHERESdept='IS'ORSdept='MA'ORSdept='CS';3.4.1單表查詢查詢僅涉及一個表:一、選擇表中的若干列二、選擇表中的若干元組三、ORDERBY子句四、聚集函數(shù)五、GROUPBY子句三、ORDERBY子句ORDERBY子句可以按一個或多個屬性列排序升序:ASC;降序:DESC;缺省值為升序當(dāng)排序列含空值時ASC:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示ORDERBY子句(續(xù))[例24]查詢選修了3號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分?jǐn)?shù)降序排列。
SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;[例25]查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號升序排列,同一系中的學(xué)生按年齡降序排列。P79
[例25]查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號升序排列,同一系中的學(xué)生按年齡降序排列。P79
SELECT*FROMStudentORDERBYSdept,SageDESC;3.4.1單表查詢查詢僅涉及一個表:一、選擇表中的若干列二、選擇表中的若干元組三、ORDERBY子句四、聚集函數(shù)五、GROUPBY子句四、聚集函數(shù)聚集函數(shù):計(jì)數(shù)COUNT([DISTINCT|ALL]*)COUNT([DISTINCT|ALL]<列名>)計(jì)算總和SUM([DISTINCT|ALL]<列名>) 計(jì)算平均值A(chǔ)VG([DISTINCT|ALL]<列名>)最大最小值
MAX([DISTINCT|ALL]<列名>)
MIN([DISTINCT|ALL]<列名>)聚集函數(shù)(續(xù))[例26]查詢學(xué)生總?cè)藬?shù)。
[例27]查詢選修了課程的學(xué)生人數(shù)。
[例28]計(jì)算1號課程的學(xué)生平均成績。
[例29]查詢選修1號課程的學(xué)生最高分?jǐn)?shù)。
聚集函數(shù):計(jì)數(shù)COUNT([DISTINCT|ALL]*)COUNT([DISTINCT|ALL]<列名>)計(jì)算總和SUM([DISTINCT|ALL]<列名>) 計(jì)算平均值A(chǔ)VG([DISTINCT|ALL]<列名>)最大最小值
MAX([DISTINCT|ALL]<列名>)
MIN([DISTINCT|ALL]<列名>)聚集函數(shù)(續(xù))[例26]查詢學(xué)生總?cè)藬?shù)。
SELECTCOUNT(*)FROMStudent;
[例27]查詢選修了課程的學(xué)生人數(shù)。
SELECTCOUNT(DISTINCTSno)FROMSC;
[例28]計(jì)算1號課程的學(xué)生平均成績。
SELECTAVG(Grade)FROMSCWHERECno='1';聚集函數(shù)(續(xù))[例29]查詢選修1號課程的學(xué)生最高分?jǐn)?shù)。
SELECTMAX(Grade)FROMSCWHERCno=‘1’;[例30]查詢學(xué)生200215012選修課程的總學(xué)分?jǐn)?shù)。
SELECTSUM(Ccredit)FROMSC,CourseWHERSno='200215012'ANDSC.Cno=Course.Cno;3.4.1單表查詢查詢僅涉及一個表:一、選擇表中的若干列二、選擇表中的若干元組三、ORDERBY子句四、聚集函數(shù)五、GROUPBY子句五、GROUPBY子句GROUPBY子句分組:細(xì)化聚集函數(shù)的作用對象未對查詢結(jié)果分組,聚集函數(shù)將作用于整個查詢結(jié)果對查詢結(jié)果分組后,聚集函數(shù)將分別作用于每個組作用對象是查詢的中間結(jié)果表按指定的一列或多列值分組,值相等的為一組例如,求每位同學(xué)的平均成績。分組查詢—GROUPBYSELECT
Sno,avg(Grade)
平均成績
FROM
SC
group
by
SnoGROUPBY子句(續(xù))[例31]求各個課程號及相應(yīng)的選課人數(shù)。P79
SELECT
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 兩株紅樹林內(nèi)生真菌次級代謝產(chǎn)物及活性研究
- 共沉淀法制備稀土摻雜氧化釷粉體及陶瓷的制備與性能研究
- 2025年包頭鐵道職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 郵件內(nèi)容監(jiān)管技術(shù)-洞察分析
- 虛擬形象智能導(dǎo)購系統(tǒng)-洞察分析
- 2025年東營職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 項(xiàng)目溝通策略與領(lǐng)導(dǎo)效能-洞察分析
- 語言規(guī)劃與網(wǎng)絡(luò)安全-洞察分析
- 網(wǎng)絡(luò)空間主權(quán)安全-洞察分析
- 五年級數(shù)學(xué)(小數(shù)乘法)計(jì)算題專項(xiàng)練習(xí)及答案
- 2024年安全教育培訓(xùn)試題附完整答案(奪冠系列)
- 2025新譯林版英語七年級下單詞默寫表
- 《錫膏培訓(xùn)教材》課件
- 斷絕父子關(guān)系協(xié)議書
- 福建省公路水運(yùn)工程試驗(yàn)檢測費(fèi)用參考指標(biāo)
- 《工程勘察資質(zhì)分級標(biāo)準(zhǔn)和工程設(shè)計(jì)資質(zhì)分級標(biāo)準(zhǔn)》
- 小學(xué)語文閱讀教學(xué)落實(shí)學(xué)生核心素養(yǎng)方法的研究-中期報(bào)告
- 眼內(nèi)炎患者護(hù)理查房課件
- 2021-2022學(xué)年四川省成都市武侯區(qū)部編版四年級上冊期末考試語文試卷(解析版)
- 中國傳統(tǒng)文化服飾文化
- 大氣污染控制工程 第四版
評論
0/150
提交評論