SQL的數(shù)據(jù)查詢課件_第1頁
SQL的數(shù)據(jù)查詢課件_第2頁
SQL的數(shù)據(jù)查詢課件_第3頁
SQL的數(shù)據(jù)查詢課件_第4頁
SQL的數(shù)據(jù)查詢課件_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3節(jié)SQL的數(shù)據(jù)查詢第5章關系數(shù)據(jù)庫語言SQL主要內(nèi)容簡單查詢常用函數(shù)及其使用方式SQL高級查詢技術謂詞演算查詢2數(shù)據(jù)查詢SELECT命令的格式與基本使用

SELECT[ALL|DISTINCT][TOPN[PERCENT][WITHTIES]] 〈列名〉[AS別名1][{,〈列名〉[AS別名2]}] [INTO新表名]

FROM〈表名1或視圖名1〉[[AS]表1別名][{,〈表名2或視圖名2〉[[AS]表2別名]}] [WHERE〈檢索條件〉] [GROUPBY<列名1>[HAVING<條件表達式>]] [ORDERBY<列名2>[ASC|DESC]]投影選取3一、簡單查詢1、SELECT和FROM子句

SELECT<列名表>FROM<表名表>[WHERE<條件>]

作用

SELECT:π,用來列出查詢結果中的屬性

FROM:×,用來列出需掃描的關系WHERE:σ,指定選擇記錄的條件42、無條件查詢例3.16查詢教學管理數(shù)據(jù)庫中全部學生的基本信息。

SELECT*FROMS;52、無條件查詢(續(xù))例3.17查詢教學管理數(shù)據(jù)庫中全部教師的教職工編號、姓名、職稱和所屬教研室。

SELECTT#,TNAME,TITLEOF,TRSECTIONFROMT;62、無條件查詢聚合函數(shù)

聚合函數(shù)能夠根據(jù)查詢結果的記錄集或根據(jù)查詢結果的記錄集中某列值的特點返回一個匯總信息的函數(shù)。

輸入——值的一個集合

返回——單個值78聚合函數(shù)

COUNT(*)

計算元組的個數(shù)

COUNT(列名)

計算某一列中數(shù)據(jù)的個數(shù)

COUNTDISTINCT(列名)計算某一列中不同值的個數(shù)

SUM(列名)計算某一數(shù)據(jù)列中值的總和

AVG(列名)計算某一數(shù)據(jù)列中值的平均值

MIN(列名)求(字符、日期、數(shù)值列)的最小值

MAX(列名)求(字符、日期、數(shù)值列)的最大值2、無條件查詢聚合函數(shù)(續(xù))9例3.18查詢開課總門數(shù)

SELECTCOUNT(*)FROMC;例3.19計算所有學生所學課程的最高分數(shù)、最低分數(shù)和平均分數(shù)。SELECTMAX(GRADE),MIN(GRADE),AVG(GRADE)FROMSC;2、無條件查詢聚合函數(shù)(例)103、單條件查詢例3.20查詢所有學習了計算機網(wǎng)絡課(課程號為C403001)的學生的學號和成績SELECTS#,GRADEFROMSCWHEREC#=‘C403001’;114、多條條件查查詢例3.21查詢選選修了了計算算機網(wǎng)網(wǎng)絡課課(課課程號號為C403001)或信信息安安全技技術課課(課課程號號為C403002)的學學生的的學號號SELECTS#FROMSCWHEREC#=‘C403001’ORC#=‘C403002’;125、分組組查詢詢SELECT<列名表表>FROM<表名表表>[WHERE<條件>][GROUPBY<列名表表>]作用:對滿足足WHERE條件的的元組組集按按照指指定的的列的的值進進行分分組,,該屬屬性列列值相相等的的元組組為一一組13例例3.23計算各各個同同學的的平均均分數(shù)數(shù)。SELECTS#,AVG(GRADE)FROMSCGROUPBYS#;SELECT<列名表表>FROM<表名表表>[WHERE<條件>][GROUPBY<列名表表>[HAVING<分組條條件>]]作用:指定GROUPBY子句形形成的的分組組所應應滿足足的條條件5、分組組查詢詢(續(xù)續(xù))1415例例3.25查詢學學生總總數(shù)超超過300人的專專業(yè)及及其具具體的的總人人數(shù)SELECTSCODE,COUNT(*)FROMSGROUPBYSCODEHAVINGCOUNT(*)>300;166、結果果的排排序ORDERBY<列名>[ASC/DESC][,<列名>[ASC/DESC]]…;作用:依據(jù)給給定列列的值值,控控制查查詢結結果中中元組組的排排列順順序。。176、結果果的排排序((例))例3.27按學號號遞增增、課課程成成績遞遞減的的顯示示順序序顯示示學生生的課課程成成績SELECTS#,C#,GRADEFROMSCORDERBYS#ASC,GRADEDESC;187、字符符串的的匹配配下劃線線通配配符_:代表表任意意一個個字符符百分號號通配配符%:代表表任意意長度度的字字符串串例3.28查詢S中姓李李的學學生的的學號號和姓姓名SELECTS#,SNAMEFROMSWHERESNAMELIKE‘李%’;19簡單查查詢語語句SELECT<列名或或列表表達式式序列列>FROM<表名表表>[WHERE<條件>][GROUPBY<列名表表>[HAVING<分組條條件>]][ORDERBY<列名>[ASC/DESC][,<列名>[ASC/DESC]]…];讀取FROM子句指指定的的基本本表或或視圖的數(shù)據(jù)據(jù),執(zhí)執(zhí)行笛笛卡爾爾積操操作選取滿滿足WHERE子句中中給出出的條條件表表達式式的元元組按GROUPBY子句中中指定定列的的值進進行分分組,,同時時提取取滿足足HAVING子句中中組條條件表表達式式的那那些組組按SELECT子句中中給出出的列列名或或列表表達式式求值值輸出出ORDERBY子句對對輸出出的結結果((目標標表))進行行排序序,按按指定定列的的值升升序或或降序序排列列20二、SQL高級查查詢技技術1、多表表聯(lián)接接查詢詢例3.32查詢所所有學學習了了數(shù)據(jù)據(jù)結構構課((課程程號為為C401001)的學學生的的學號號和姓姓名SELECTS.S#,SNAMEFROMS,SCWHERES.S#=SC.S#ANDC#=‘C401001’;212、嵌套套查詢詢在SQL語言中中,如如果在在一個個SELECT語句的的WHERE子句中中嵌入入了另另一個個SELECT語句,,則稱稱這種種查詢詢?yōu)榍肚短撞椴樵儭?。WHERE子句中中的SELECT語句稱稱為子查詢詢,外部部的查查詢稱稱為父查詢詢。22SELECT*FROMSWHERECLASS=()ANDSSEX=‘女’;2、嵌套套查詢詢例例示例查詢張張華同同學((學號號為200401001)的的那個個班的的女同同學的的基本本信息息。SELECTCLASSFROMSWHERES#=‘200401001’233、查詢詢中的的表更更名3、查詢詢中的的表更更名舊名AS新名例3.35檢索成成績比比該課課程平平均成成績低低的學學生成成績表表。SELECTS#,C#,GRADEFROMSCWHEREGRADE<(SELECTAVG(GRADE)FROMSCASXWHEREX.C#=SC.C#);24三、謂謂詞演演算查查詢所謂基基于謂謂詞演演算的的查詢詢是指指把謂謂詞看看作是是特殊殊比較較操作作符、、應用用于WHERE子句句的條條件表表達式式中的的查詢詢。操作符說明betweenAandBnotbetweenAandBlikeinnotinanysomeallexistsnotexists

某列的數(shù)值區(qū)間是[A,B]某列的數(shù)值區(qū)間在[A,B]外兩個字符串的部分字符相等,其余可以任意某列的某個值屬于集合成員中的一個成員某列的值不屬于集合成員中的任何一個成員某列的值滿足一個條件即可滿足集合中的某些值某列的值滿足子查詢中所有值的記錄總存在一個值滿足條件不存在任何值滿足條件25格式::<集集合1>IN<集合合2><集合合1>NOTIN<集合合2>含義::1、IN和NOTIN如果集集合1中的數(shù)數(shù)據(jù)是是集合合2中的成成員,,那么么其邏邏輯值值為true,否則則為false.26例3.36查詢所所有學學習了了數(shù)據(jù)據(jù)結構構課((課程程號為為C401001)的學學生的的學號號和姓姓名。。SELECTS.S#,SNAMEFROMSWHERES#IN(SELECTS#FROMSCWHEREC#=‘C401001’);1、IN和NOTIN例27格式:<列數(shù)數(shù)據(jù)>θANY<集合合><列數(shù)數(shù)據(jù)>θSOME<集合合>含義::2、ANY和和SOME如果比較較運算符符θ左邊的數(shù)數(shù)據(jù)與右右邊集合合中至少一個個元素滿足足θ運算,那那么其邏邏輯值為為true,否則為為false.28例3.38查詢所有有學習了了數(shù)據(jù)結結構課((課程號號為C401001)的學生生的學號號和姓名名。解法3SELECTS.S#,SNAMEFROMSWHERES#=ANY(SELECTS#FROMSCWHEREC#=‘C401001’);2、ANY和和SOME例29格式:<列數(shù)據(jù)據(jù)>θALL<集合>含義:3、ALL如果比較較運算符符θ左邊的數(shù)數(shù)據(jù)與右右邊集合合中所有有元素滿滿足θ運算,那那么其邏邏輯值為為true,否則為為false.303、ALL例例3.39查查詢考試試成績大大于計算機科科學專業(yè)業(yè)(專業(yè)代代碼S0401)所有有學生課課程成績績的學生生的基本本信息SELECTS.*FROMS,SCWHERES.S#=SC.S#ANDGRADE>ALL(SELECTGRADEFROMS,SCWHERES.S#=SC.S#ANDSCODE=’S0401’);31格式:EXISTS(<集合>)NOTEXISTS(<集合>)含義:4、EXISTS和NOTEXISTSEXISTS是存在量量詞,當當集合中中至少存在在一個元素(非非空)時時,其邏邏輯值為為true,否則為為false。NOTEXISTS是空集判判斷,當當集合中中不存在任任何元素素(為空))時,其其邏輯值值為true,否則為為false。32例3.40查詢所有有學習了了數(shù)據(jù)結結構課((課程號號為C401001)的學生生的學號號和姓名名。SELECTS.S#,SNAMEFROMSWHEREEXISTS(SELECT*FROMSCWHERESC.S#=S.S#ANDC#=‘C401001’);4、EXISTS和NOTEXISTS例33SELECTC#,AVG(GRADE)FROMSC,TEACH,TWHERESC.C#=TEACH.C#ANDTEACH.T#=T.T#ANDTNAMELike’張%’GROUPBYC#ORDERBY2DESC;例:求張老師師所授課課程的每每門課程程的學生生平均成成績,并并按平均均成績降降序輸出出。第4節(jié)SQL的視圖操操作第5章關關系數(shù)據(jù)據(jù)庫語言言SQL主要內(nèi)容容視圖的概概念視圖的定定義在視圖上上進行查查詢操作作用戶視圖圖對數(shù)據(jù)據(jù)庫系統(tǒng)統(tǒng)設計和和性能帶帶來的影影響35一、視圖圖的概念念視圖是從從一個或或幾個基基本表((或視圖圖)通過過視圖定定義語句句所描述述的映射射關系導導出的表表。數(shù)據(jù)庫中中,只有有視圖的的定義,,沒有視視圖的數(shù)數(shù)據(jù)。這這些數(shù)據(jù)據(jù)還在基基本表中中。因此此,視圖圖是一種種“虛表”。36S#SNAMEC#GRADES#SNAMEAGESEXS256…Wang21FS#C#GRADES256…C580CGSSCS256WangC580查詢語句學生成績績視圖CG(S#,SNAME,C#,GRADE)37CREATEVIEW<視圖名>[(<視圖列名名表>)]AS<SELECT語句>[WITHREADONLY|WITHCHECKOPTION];新定義的的視圖的的各個列列的名稱稱一一對應視圖被定定義成一一個只讀讀視圖,,不能進進行插入入、刪除除和修改改操作表示用戶戶必須保保證每當當向該視視圖插入入或更新新數(shù)據(jù)時時,所插插入或更更新的數(shù)數(shù)據(jù)能從從該視圖圖查詢出出來。二、視圖圖的定義義38例3.45定義平均均成績視視圖(S#,AVG_GRADE)CREATEVIEWA_GRADE(S#,AVG_GRADE)ASSELECTS#,AVG(GRADE)FROMSCWHEREGRADEISNOTNULLGROUPBYS#;查詢結果果中有表表達式或或聚合函函數(shù),必必須重新新命名二、視圖圖的定義義例39三、在視圖上上進行查查詢操作作數(shù)據(jù)查詢詢視圖的查查詢方法法和基本本表一樣樣,但有有了視圖圖后,查查詢語句句變得非非常簡單單。SELECT*FROMA_GRADE;40四、用戶戶視圖對對數(shù)據(jù)庫庫系統(tǒng)設設計和性性能帶來來的影響響1、視圖能能夠簡化化用戶的的操作2、視圖使使用戶能能以多種種角度看看待同一一數(shù)據(jù)3、視圖對對重構數(shù)數(shù)據(jù)庫提提供了一一定程度度的邏輯輯獨立性性4、視圖能能夠?qū)C機密數(shù)據(jù)據(jù)提供安安全保護護41第5節(jié)SQL中帶有子子查詢的的數(shù)據(jù)更更新操作作第5章關關系數(shù)據(jù)據(jù)庫語言言SQL主要內(nèi)容容帶有子查查詢的數(shù)數(shù)據(jù)插入入操作帶有子查查詢條件件的數(shù)據(jù)據(jù)更新操操作43復習數(shù)數(shù)據(jù)插入入1、數(shù)據(jù)插插入向表中插插入一行行(單元元組)數(shù)數(shù)據(jù)。INSERTINTO<表名>[(<列名表>)]VALUES(<值表>);44一、帶有有子查詢詢的數(shù)據(jù)據(jù)插入操操作向表中插插入一個個子查詢詢得到的的數(shù)據(jù)。。INSERTINTO<表名>[(<列名表>)]<子查詢>;子查詢是是一個合合法的SELECT查詢語句句。45例1設在教學學管理數(shù)數(shù)據(jù)庫系系統(tǒng)中,,要建立立某些臨臨時表來來輔助有有關管理理過程。。若其中中有一個個臨時表表用于暫暫存選修修了“信息安全全技術”課程的學學生的學學號、姓姓名、專專業(yè)名稱稱和班級級,表的的格式為為:S_C(S#,SNAME,SSNAME,CLASS)則將從有有關表中中查詢出出的數(shù)據(jù)據(jù)組成的的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論