SQL Server數(shù)據(jù)庫實踐教程 課件 05-06 單表查詢_第1頁
SQL Server數(shù)據(jù)庫實踐教程 課件 05-06 單表查詢_第2頁
SQL Server數(shù)據(jù)庫實踐教程 課件 05-06 單表查詢_第3頁
SQL Server數(shù)據(jù)庫實踐教程 課件 05-06 單表查詢_第4頁
SQL Server數(shù)據(jù)庫實踐教程 課件 05-06 單表查詢_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

SQLServer數(shù)據(jù)庫實踐SQL語言一般分四類數(shù)據(jù)定義語言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語言(DQL,DataQuery

Language)數(shù)據(jù)控制語言(DCL,DataControlLanguage)(+事務(wù))√√√√數(shù)據(jù)查詢語法SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]stuDB數(shù)據(jù)庫三張表數(shù)據(jù)查詢目錄1、單表查詢2、連接查詢3、嵌套查詢4、集合查詢5、基于派生表的查詢1、單表查詢單表查詢僅涉及一個表,又分為:選擇表中的若干列選擇表中的若干元組

ORDERBY排序子句聚集函數(shù)

GROUPBY分組子句①

選擇表中的若干列【例題5-1】查詢?nèi)w學(xué)生的姓名和民族。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]SELECTName,NationFROM

Student①

選擇表中的若干列【例題5-2】查詢?nèi)w學(xué)生的姓名、民族和性別。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]SELECTName,Nation,SexFROM

Student注意:列的順序①

選擇表中的若干列【例題5-3】查詢?nèi)w學(xué)生的詳細信息。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]SELECT

Sno,Name,Sex,Nation,Birthday

FROM

Student或者SELECT

*

FROM

Student習題1.查詢所有課程的課程名和學(xué)分2.查詢課程的所有信息查詢語法SELECT

<輸出列表>]…FROM數(shù)據(jù)源列表習題1.查詢所有課程的課程名和學(xué)分

selectcname,creditfromcourse2.查詢課程的所有信息查詢語法SELECT

<輸出列表>]…FROM數(shù)據(jù)源列表習題1.查詢所有課程的課程名和學(xué)分

selectcname,creditfromcourse2.查詢課程的所有信息

select*fromcourseselectCno,cname,hours,credit,Semesterfromcourse查詢語法SELECT

<輸出列表>]…FROM數(shù)據(jù)源列表①選擇表中的若干列查詢經(jīng)過計算的值SELECT子句的<輸出列表>可以為:算術(shù)表達式字符串常量函數(shù)列別名SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]①

選擇表中的若干列【例題5-4】查詢學(xué)生的姓名及年齡。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]SELECT

Name,YEAR(GETDATE())-YEAR(Birthday)

FROM

Student①

選擇表中的若干列【例題5-4】查詢學(xué)生的姓名及年齡。GETDATE()函數(shù)取系統(tǒng)當前日期YEAR()函數(shù)取日期中的年定義列別名有三種方法①別名=列名②列名as別名③列名別名SELECT

Name,YEAR(GETDATE())-YEAR(Birthday)

FROM

StudentSELECTName,nl=YEAR(GETDATE())-YEAR(Birthday)FROMStudentSELECTName,YEAR(GETDATE())-YEAR(Birthday)asnl

FROMStudentSELECTName,YEAR(GETDATE())-YEAR(Birthday)nl

FROMStudent例:SELECTname,birthday,YEAR(birthday)年,month(birthday)月,day(birthday)日FROMStudent常用日期函數(shù)

Getdate():返回服務(wù)器當前系統(tǒng)日期和時間

year(DATA):返回日期中的年

month(DATA):返回日期中的月

day(DATA):返回日期中的日②

選擇表中的若干元組【例題5-5】查詢學(xué)生分布在哪些民族

SELECTNationFROMStudent等價于:SELECTALLNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]②

選擇表中的若干元組【例題5-5】查詢學(xué)生分布在哪些民族

SELECTDISTINCTNationFROMStudent SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]說明:DISTINCT關(guān)鍵詞,去掉查詢結(jié)果中重復(fù)的行②

選擇表中的若干元組【例題5-7】查詢哪些學(xué)生是少數(shù)民族,顯示學(xué)生姓名和民族。SELECTName,NationFROMStudentWHERENation<>'漢族'SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]WHERE

子句中常用的查詢運算符查詢條件謂詞比較=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較運算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件(邏輯運算)AND,OR,NOT②

選擇表中的若干元組【例題5-8】查詢年齡在19~23歲(包括19和23歲)之間的學(xué)生的學(xué)號、姓名、出生日期。1:SELECTSno,Name,BirthdayFROMStudent

WHEREYEAR(GETDATE())-YEAR(Birthday)BETWEEN19AND232:SELECTSno,Name,BirthdayFROMStudent

WHEREYEAR(GETDATE())-YEAR(Birthday)>=19

ANDYEAR(GETDATE())-YEAR(Birthday)<=23操作練習實驗4單表查詢(一)1~5題

選擇表中的若干元組【例題5-9】查詢民族為“漢族”或者“滿族”的學(xué)生詳細信息。SELECT*FROMStudentWHERENationin('漢族','滿族')或者SELECT*FROMStudentWHERENation='漢族'orNation='滿族'②

選擇表中的若干元組【例題5-10】查詢哪些學(xué)生選課了還沒有考試成績,顯示學(xué)號,課程號。SELECTSno,CnoFROMSCWHEREGradeisNULL判斷空值不能用等號=②

選擇表中的若干元組-模糊查詢【例題5-11】查詢哪些學(xué)生姓名中含有“南”字。SELECT*FROMStudentWHERENameLIKE'%南%'模糊查詢通配符:%:任意長度_:單個字符②

選擇表中的若干元組-模糊查詢【例題5-13】找出所有姓“張”和姓“江”的員工信息。SELECT*FROMStudentWHERENameLIKE'[張,江]%'SELECT*FROMStudentWHEREsubstring(Name,1,1)IN('張','江')SELECT*FROMStudentWHEREleft(Name,1)IN('張','江')模糊查詢通配符:%:任意長度_:單個字符常用字符串函數(shù)Left(字符表達式,整數(shù)):截取從左側(cè)開始指定位數(shù)的子字符串Right(字符表達式,整數(shù)):截取從右側(cè)開始指定位數(shù)的子字符串Substring(字符表達式,起始位置,n):從任意位置取子串,截取從起始位置開始的n個字符Ltrim(字符表達式):去掉字符表達式左側(cè)(前面)的空格Rtrim(字符表達式):去掉字符表達式右側(cè)(尾部)的空格操作練習實驗4單表查詢(一)

SQLServer數(shù)據(jù)庫實踐SQL語言一般分四類數(shù)據(jù)定義語言(DDL,DataDefinitionLanguage)數(shù)據(jù)操縱語言(DML,DataManipulationLanguage)數(shù)據(jù)查詢語言(DQL,DataQuery

Language)數(shù)據(jù)控制語言(DCL,DataControlLanguage)(+事務(wù))√√√√數(shù)據(jù)查詢語法SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]stuDB數(shù)據(jù)庫三張表數(shù)據(jù)查詢目錄1、單表查詢2、連接查詢3、嵌套查詢4、集合查詢5、基于派生表的查詢1、單表查詢單表查詢僅涉及一個表,又分為:選擇表中的若干列選擇表中的若干元組

ORDERBY排序子句聚集函數(shù)

GROUPBY分組子句√√③ORDERBY排序子句【例題5-16】查詢選修了1號課程的學(xué)生學(xué)號及其成績,查詢結(jié)果按照成績降序排列。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]③ORDERBY排序子句【例題5-16】查詢選修了1號課程的學(xué)生學(xué)號及其成績,查詢結(jié)果按照成績降序排列。SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]SELECTSno,GradeFROMSCWHERECno=1ORDERBYGradeDESC分數(shù)降序表中數(shù)據(jù)順序③ORDERBY排序子句【例題5-17】查詢學(xué)生的學(xué)號、姓名、民族、出生日期,查詢結(jié)果按照民族升序排列,同一民族的按照年齡降序排列。SELECTSno,Name,Nation,BirthdayFROMStudentORDERBYNationASC,BirthdayASC

SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]判斷題:orderby子句中如果沒有寫排序字段,默認升序④聚集函數(shù)函數(shù)功能COUNT(*)統(tǒng)計元組(行、記錄)數(shù)COUNT(<列名>)統(tǒng)計該列(字段、屬性)值不為空的元組數(shù)COUNT(DISTINCT<列名>)統(tǒng)計該列值不為空,并且值不重復(fù)的元組數(shù)SUM(<列名>)計算一列值的總和(此列必須為數(shù)值型)AVG(<列名>)計算一列值的平均值(此列必須為數(shù)值型)MAX(<列名>)求一列值的最大值MIN(<列名>)求一列值的最小值五個聚集函數(shù),只有count()函數(shù)多種用法④聚集函數(shù)【例題5-18】統(tǒng)計有多少名學(xué)生。代碼1:SELECTcount(*)FROMStudent代碼2:SELECTcount(*)學(xué)生數(shù)FROMStudentSELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]④聚集函數(shù)【例題5-20】查詢有多少學(xué)生選修了課程。SELECTcount(*)FROMSC結(jié)果:5SELECTcount(DISTINCTSno)選課人數(shù)FROMSC結(jié)果:3SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…

FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]④聚集函數(shù)【例題5-21】查詢課程表中有多少門必修課(選修課的開課學(xué)期是空值)。代碼1:SELECTcount(Semester)必修課程數(shù)FROMCourse代碼2:SELECTcount(*)必修課程數(shù)FROMCourse

WHERESemesterISNOTNULL

結(jié)果:3SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]強調(diào):COUNT(*)

統(tǒng)計行數(shù),不考慮空值COUNT(列名)

統(tǒng)計該列不為空的行數(shù)COUNT(DISTINCT列名)統(tǒng)計該列不為空

并且不重復(fù)的行數(shù)?SELECT

count(distinctSemester)

FROM

Course④聚集函數(shù)【例題5-19】查詢學(xué)生學(xué)習所有課程獲得的最高分、最低分和平均分。SELECTmax(Grade)最高分,min(Grade)最低分,avg(Grade)平均分FROMSCSELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]習題1用SQL語句統(tǒng)計學(xué)校一共開設(shè)了多少門課程用SQL語句統(tǒng)計少數(shù)民族學(xué)生的人數(shù)用SQL語句統(tǒng)計學(xué)生有多少個民族用SQL語句統(tǒng)計學(xué)校課程的總學(xué)時,以及最高學(xué)分、最低學(xué)分用SQL語句統(tǒng)計2號課程參加考試的人數(shù)用SQL語句統(tǒng)計1號課程的平均分COUNT()計數(shù)SUM()求和AVG()求平均分MAX()求最大值MIN()求最低分SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表

[WHERE<條件表達式>]習題1用SQL語句統(tǒng)計學(xué)校一共開設(shè)了多少門課程用SQL語句統(tǒng)計少數(shù)民族學(xué)生的人數(shù)用SQL語句統(tǒng)計學(xué)生有多少個民族用SQL語句統(tǒng)計學(xué)校課程的總學(xué)時,以及最高學(xué)分、最低學(xué)分用SQL語句統(tǒng)計2號課程參加考試的人數(shù)用SQL語句統(tǒng)計1號課程的平均分selectcount(*)fromcourseselectcount(cno)fromcourseselectcount(*)fromstudentwherenation<>’漢族’selectcount(distinctnation)fromstudentselectsum(hours),max(credit),min(credit)fromcourseselectcount(grade)fromSCwherecno=2selectcount(*)fromSCwherecno=2andgradeisnotnullselectavg(grade)fromSCwherecno=1COUNT()計數(shù)、SUM()求和AVG()求平均分、MAX()求最大值

、MIN()求最低分數(shù)據(jù)查詢語法SELECT[ALL|DISTINCT][TOPn|PERCENT]<輸出列表>]…FROM數(shù)據(jù)源列表[WHERE<條件表達式>][GROUPBY<分組表達式>[HAVING<條件表達式>]][ORDERBY<排序表達式>[ASC|DESC]]⑤GROUPBY子句GROUPBY子句分組:細化聚集函數(shù)的作用對象未分組,聚集函數(shù)將作用于整個查詢結(jié)果分組后,聚集函數(shù)將分別作用于每個組,按一列或多列分組,值相等的為一組⑤GROUPBY子句【例題5-18】統(tǒng)計有多少名學(xué)生。SELECTcount(*)學(xué)生數(shù)FROMStudent【進階】統(tǒng)計各個民族分別有多少名學(xué)生。SELECTnation,count(*)學(xué)生數(shù)FROMStudentgroupbynationGROUPBY分組后,聚集函數(shù)將分別作用于每個組值相等的為一組,分組統(tǒng)計⑤GROUPBY子句【例題5-19】查詢學(xué)生學(xué)習所有課程獲得的最高分、最低分和平均分。SELECTmax(Grade)最高分,min(Grade)最低分,avg(Grade)平均分FROMSC【進階1例題5-22】查詢每門課程的最高分、最低分和平均分,顯示課程號和相應(yīng)的分數(shù)。SELECTCno,max(Grade)最高分,min(Grade)最低分,avg(Grade)平均分FROM

溫馨提示

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

評論

0/150

提交評論