![復(fù)件數(shù)據(jù)庫應(yīng)用技術(shù)三章習(xí)題_第1頁](http://file4.renrendoc.com/view11/M01/01/17/wKhkGWXzEWiAYeAOAACXmjruGBc186.jpg)
![復(fù)件數(shù)據(jù)庫應(yīng)用技術(shù)三章習(xí)題_第2頁](http://file4.renrendoc.com/view11/M01/01/17/wKhkGWXzEWiAYeAOAACXmjruGBc1862.jpg)
![復(fù)件數(shù)據(jù)庫應(yīng)用技術(shù)三章習(xí)題_第3頁](http://file4.renrendoc.com/view11/M01/01/17/wKhkGWXzEWiAYeAOAACXmjruGBc1863.jpg)
![復(fù)件數(shù)據(jù)庫應(yīng)用技術(shù)三章習(xí)題_第4頁](http://file4.renrendoc.com/view11/M01/01/17/wKhkGWXzEWiAYeAOAACXmjruGBc1864.jpg)
![復(fù)件數(shù)據(jù)庫應(yīng)用技術(shù)三章習(xí)題_第5頁](http://file4.renrendoc.com/view11/M01/01/17/wKhkGWXzEWiAYeAOAACXmjruGBc1865.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
14三月2024多重條件查詢例21.查詢計算機系年齡在20歲以下的學(xué)生姓名。
SELECTSnameFROMStudentWHERESdept='CS'ANDSage<20
14三月2024示例例22.將學(xué)生按年齡的升序排序。
SELECT*FROMStudentORDERBYSage例23.查詢選修了‘c02’號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按成績降序排列。SELECTSno,GradeFROMSC WHERECno='c02'ORDERBYGradeDESC
例24.查詢?nèi)w學(xué)生的信息,查詢結(jié)果按所在系的系名升序排列,同一系的學(xué)生按年齡降序排列。SELECT*FROMStudent
ORDERBYSdept,SageDESC
14三月2024示例例25.統(tǒng)計學(xué)生總?cè)藬?shù)。
SELECTCOUNT(*)FROMStudent
例26.統(tǒng)計選修了課程的學(xué)生的人數(shù)。
SELECTCOUNT(DISTINCTSno)FROMSC例27.計算9512101號學(xué)生的考試總成績之和。SELECTSUM(Grade)FROMSCWHERESno='9512101'
14三月2024示例(續(xù))例28.計算’C01’號課程學(xué)生的考試平均成績。
SELECTAVG(Grade)FROMSCWHERECno='C01'例29.查詢選修了’C01’號課程的學(xué)生的最高分和最低分。
SELECTMAX(Grade),MIN(Grade)FROMSCWHERECno='C01'注意:計算函數(shù)不能出現(xiàn)在WHERE子句中
14三月2024
使用GROUPBY例30.統(tǒng)計每門課程的選課人數(shù),列出課程號和人數(shù)。
SELECTCnoas課程號,COUNT(Sno)as選課人數(shù)
FROMSCGROUPBYCno
對查詢結(jié)果按Cno的值分組,所有具有相同Cno值的元組為一組,然后再對每一組使用COUNT計算,求得每組的學(xué)生人數(shù)。14三月2024SnoCnoGrade951201C0180951201C0278951202C0190952103C0288952103C0185952103C0391952103C0474CnoCount(Sno)C013C022C031C041SnoCnoGrade951201C0180951202C0190952103C0185951201C0278952103C0288952103C0391952103C047414三月2024
例31.查詢每名學(xué)生的選課門數(shù)和平均成績。
SELECTSnoas學(xué)號,COUNT(*)as選課門數(shù),AVG(Grade)as平均成績
FROMSCGROUPBYSno14三月20242.使用HAVING例32.查詢修了3門以上課程的學(xué)生的學(xué)號
SELECTSnoFROMSCGROUPBYSno
HAVINGCOUNT(*)>3
14三月2024示例例33.查詢修課門數(shù)等于或大于4門的學(xué)生的平均成績和選課門數(shù)。
SELECTSno,AVG(Grade)平均成績,COUNT(*)修課門數(shù)
FROMSCGROUPBYSno
HAVINGCOUNT(*)>=4
14三月2024
例34.查詢計算機系學(xué)生的修課情況,要求列出學(xué)生的名字、所修課的課程號和成績。
SELECTSname,Cno,GradeFROMStudentJOINSCONStudent.Sno=SC.SnoWHERESdept='計算機系'14三月2024
例35.查詢信息系修了VB課程的學(xué)生的修課成績,要求列出學(xué)生姓名、課程名和成績。SELECTSname,Cname,GradeFROMStudentsJOINSCONs.Sno=SC.SnoJOINCoursecONc.Cno=SC.CnoWHERESdept='信息系'ANDCname='VB'14三月2024
例36.查詢所有修了VB課程的學(xué)生的修課情況,要求列出學(xué)生姓名和所在的系。SELECTSname,SdeptFROMStudentSJOINSCONS.Sno=SC.SnoJOINCourseCONC.Cno=oWHERECname='VB'14三月2024例37.查詢與劉晨在同一個系學(xué)習(xí)的學(xué)生的姓名和所在的系。SELECTS2.Sname,S2.SdeptFROMStudentS1JOINStudentS2ONS1.Sdept=S2.SdeptWHERES1.Sname=‘劉晨’
ANDS2.Sname!=‘劉晨’14三月2024
例38.查詢學(xué)生的修課情況,包括修了課程的學(xué)生和沒有修課的學(xué)生。
SELECTStudent.Sno,Sname,Cno,Grade FROMStudentLEFTOUTERJOINSC ONStudent.Sno=SC.Sno14三月2024示例例39.查詢與劉晨在同一個系的學(xué)生。
SELECTSno,Sname,SdeptFROMStudent WHERESdeptIN (SELECTSdeptFROMStudent WHERESname=‘劉晨’)ANDSname!=‘劉晨’②①14三月2024示例例40.查詢成績?yōu)榇笥?0分的學(xué)生的學(xué)號、姓名。
SELECTSno,SnameFROMStudent WHERESnoIN (SELECTSnoFROMSC WHEREGrade>90)①②14三月2024
例41.查詢選修了“數(shù)據(jù)庫基礎(chǔ)”課程的學(xué)生的學(xué)號、姓名。
SELECTSno,SnameFROMStudent WHERESnoIN (SELECTSnoFROMSC WHERECnoIN (SELECTCnoFROMCourse WHERECname='數(shù)據(jù)庫基礎(chǔ)'))14三月2024
例42.查詢修了‘c02’課程且成績高于此課程的平均成績的學(xué)生的學(xué)號和成績。SELECTSno,GradeFROMSC WHERECno='c02‘a(chǎn)ndGrade>(SELECTAVG(Grade)fromSCWHERECno='c02')
14三月2024
例43.查詢選修了‘c01’號課程的學(xué)生姓名。SELECTSnameFROMStudent WHEREEXISTS (SELECT*FROMSC WHERESno=Student.Sno
ANDCno='c01')
14三月2024
例44.查詢沒有選修‘c01’號課程的學(xué)生姓名和所在系。SELECTSname,SdeptFROMStudentWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno='c01')14三月2024
查詢選修全部課程的學(xué)生姓名Selectsnamefromstudentswherenotexists(Select*fromcoursecwherenotexists(select*fromscwheres.sno=sc.snoando))14三月2024帶有EXISTS謂詞的子查詢(續(xù))[例47]查詢至少選修了學(xué)生001025選修的全部課程的學(xué)生號碼。解題思路:用邏輯蘊函表達:查詢學(xué)號為x的學(xué)生,對所有的課程y,只要001025學(xué)生選修了課程y,則x也選修了y。形式化表示: 用P表示謂詞“學(xué)生001025選修了課程y”
用q表示謂詞“學(xué)生x選修了課程y”
則上述查詢?yōu)?(
y)p
q
14三月2024帶有EXISTS謂詞的子查詢(續(xù))等價變換:
(
y)p
q≡
(
y(
(p
q))≡
(
y(
(
p∨q)))≡
y(p∧
q)變換后語義:不存在這樣的課程y,學(xué)生001025選修了y,而學(xué)生x沒有選。14三月2024帶有EXISTS謂詞的子查詢(續(xù))
用NOTEXISTS謂詞表示:
SELECTDISTINCTxhFROMtestt1WHERENOTEXISTS(SELECT*FROMtestt2WHEREt2.xh='001025'ANDNOTEXISTS(SELECT*FROMtestt3WHEREt3.xh=t1.xhANDt3.kch=t2.kch));14三月2024集合查詢集合操作的種類并操作UNION交操作INTERSECT差操作EXCEPT參加集合操作的各查詢結(jié)果的列數(shù)必須相同;對應(yīng)項的數(shù)據(jù)類型也必須相同14三月2024
查詢選修了c1并且選修了c2的學(xué)生學(xué)號查詢選修了c1并且沒選修c2的學(xué)生學(xué)號14三月2024小結(jié)數(shù)據(jù)檢索語句Select[all|distinct]|[top<數(shù)值>[percent]]<查詢列>[into<新表名>][from<數(shù)據(jù)源>][where<條件表達式>][groupby<分組條件>][having<組選擇表達式>][orderby<排序條件>,<排序條件>][compute<統(tǒng)計列組>][by<表達式>]14三月2024數(shù)據(jù)檢索語句
Select子句說明Select[all|distinct]|[top<數(shù)值>[percent]]<查詢列組>查詢列組:*|<表或視圖>.*|<列名或表達式>[as]<列別名>|<列別名>=<表達式>14三月2024數(shù)據(jù)檢索語句
Into子句用于創(chuàng)建一個新表或臨時表不能與compute子句一起使用14三月2024數(shù)據(jù)檢索語句
數(shù)據(jù)源<表名>[[as]<表別名>]|<視圖名>[[as]<視圖別名>]|<行集合函數(shù)>[[as]<別名>]|<嵌套的select語句>[[as]<別名>]
|<連接表>14三月2024數(shù)據(jù)檢索語句連接表:<數(shù)據(jù)源1><連接類型><數(shù)據(jù)源2>on<連接條件>|<數(shù)據(jù)源1>join<數(shù)據(jù)源2>連接類型:Innerjoin|leftouterjoin|rightouterjoin|fullouterjoin14三月2024數(shù)據(jù)檢索語句Groupby子句Groupby[all]<分組表達式>All:在結(jié)果集中包含所有的組,即還包含一個不滿足條件的組14三月2024數(shù)據(jù)檢索語句Computeby子句與orderby配合使用建立匯總摘要或分組匯總摘要換行控制和分段小計與groupby不同,可以看到分組詳細信息14三月2024
Select書號,書名,定價from圖書Where類別=‘計算機類’Orderby書號ascComputecount(*),sum(定價)by出版社Computecount(*),sum(定價)14三月20243.5數(shù)據(jù)更改功能3.5.1插入數(shù)據(jù)3.5.2更新數(shù)據(jù)3.5.3刪除數(shù)據(jù)14三月20243.5.1插入數(shù)據(jù)插入單行記錄的INSERT語句的格式為:
INSERTINTO<表名>[(<列名表>)]VALUES(值表)功能:新增一個符合表結(jié)構(gòu)的數(shù)據(jù)行,將值表數(shù)據(jù)按表中列定義順序[或列名表順序]賦給對應(yīng)列名。14三月2024注意值列表中的值與列名表中的列按位置順序?qū)?yīng),它們的數(shù)據(jù)類型必須一致。如果<表名>后邊沒有指明列名,則新插入記錄的值的順序必須與表中列的定義順序一致,且每一個列均有值(可以為空)。14三月2024
INSERTINTO表名[(字段名[,字段名]…)]子查詢;多記錄插入:對每一個系求學(xué)生的平均年齡,并把結(jié)果存入數(shù)據(jù)庫
CREATETABLEDEPTAGE(SDEPTCHAR(15),AVGAGEINT);
INSERTINTODEPTAGE(SDEPT,AVGAGE)SELECTSD,AVG(SA)FROMSGROUPBYSD;14三月2024示例例1.將新生記錄(95020,陳冬,男,信息系,18歲)插入到Student表中。
INSERTINTOStudentVALUES('9521105','陳冬','男',18,'信息系')例2.在SC表中插入一新記錄,成績暫缺。
INSERTINTOSC(Sno,Cno,XKLB)VALUES(‘9521105’,‘c01’,‘必修')
實際插入的值為:
(‘9521105’,‘c01’,NULL,‘必修')14三月20243.5.2更新數(shù)據(jù)用UPDATE語句實現(xiàn)。格式:
UPDATE<表名>SET<列名=表達式>[,…n][WHERE<更新條件>]UPDATE<表名>SET<列名=表達式>[,…n]from<數(shù)據(jù)源>[WHERE<更新條件>]14三月2024無條件更新例1.將所有學(xué)生的年齡加1。
UPDATEStudentSETSage=Sage+114三月2024有條件更新1.基于本表條件的更新例2.將‘9512101’學(xué)生的年齡改為21歲
UPDATEStudentSETSage=21 WHERESno='9512101'14三月20242.基于其他表條件的更新例3:將計算機系全體學(xué)生的成績加5分。(1)用子查詢實現(xiàn)
UPDATESCSETGrade=Grade+5 WHERESnoIN (SELECTSnoFROMStudent WHERESdept='計算機系')(2)用多表連接實現(xiàn)UPDATESCSETGrade=Grade+5FROMSCJOINStudentONSC.Sno=Student.SnoWHERESdept='計算機系'14三月20243.5.3刪除數(shù)據(jù)用DELETE語句實現(xiàn)格式:DELETE[from]<表名>[WHERE<刪除條件>]DELETE[from]<表名>from<數(shù)據(jù)源>[WHERE<刪除條件>]14三月2024無條件刪除例1.刪除所有學(xué)生的選課記錄。
DELETEFROMSC
14三月2024有條件刪除(1)基于本表條件的刪除。例2.刪除所有不及格學(xué)生的修課記錄。
DELETEFROMSCWHEREGrade<60
14三月2024基于其他表條件的刪除例3.刪除計算機系不及格學(xué)生的修課記錄。(1)用子查詢實現(xiàn)
DELETEFROMSCWHEREGrade<60ANDSnoIN(SELECTSnoFROMStudentWHERESdept=‘計算機系’)(2)用多表連接實現(xiàn)
DELETEFROMSC FROMSCJOINStudentONSC.Sno=Student.Sno WHERESdept=‘計算機系’ANDGrade<60
14三月20243.6索引1.索引的特點2.索引的用途3.創(chuàng)建索引的原則4.索引的類型及選擇5.索引的創(chuàng)建6.索引的撤消
14三月20241.索引的特點
索引:是一個指向表中數(shù)據(jù)的指針。DB中,索引具有與書籍中目錄同樣作用。查詢被定向于DB中數(shù)據(jù)在數(shù)據(jù)文件中的地址。索引是SQL在基本表中列上建立的一種DB對象,也可稱其為索引文件。它和建立于其上的基本表是分開存儲的。建立索引的主要目的是提高數(shù)據(jù)檢索的性能。索引可被創(chuàng)建或撤消,這對數(shù)據(jù)毫無影響。當(dāng)索引被撤消,數(shù)據(jù)查詢的速度可能會變慢。
14三月20242.索引的用途
⑴提高數(shù)據(jù)查詢的速度進行數(shù)據(jù)查詢時,如不使用索引,則需將數(shù)據(jù)文件分塊,逐個讀到內(nèi)存,再進行查找的比較操作(基本表的列和元組較多,數(shù)據(jù)文件很大)。使用索引,系統(tǒng)先將索引文件讀入內(nèi)存,根據(jù)索引項找到元組的地址,然后再根據(jù)地址將元組數(shù)據(jù)直接讀入內(nèi)存。索引文件只含有索引項和元組地址,文件小,一般可一次讀入內(nèi)存。索引文件索引項是有序的,可很快找到索引項值和元組地址。使用索引大大減少了磁盤的I/O次數(shù),可加快查詢速度。
14三月2024⑵保證數(shù)據(jù)的惟一性索引的定義中包括定義數(shù)據(jù)惟一性的內(nèi)容。當(dāng)定義了數(shù)據(jù)惟一性的功能后,在對相關(guān)的索引項進行數(shù)據(jù)輸入或數(shù)據(jù)更新時,系統(tǒng)要進行檢查,以確保其數(shù)據(jù)惟一性成立。⑶加快表連接的速度在進行基本表連接操作時,系統(tǒng)需要對被連接的基本表的連接字段進行查詢,其工作量是非??捎^的。若在被連接的基本表的連接字段上創(chuàng)建索引,則可大大提高連接操作的速度。許多系統(tǒng)要求連接文件必須有相應(yīng)索引,才能執(zhí)行連接操作。
14三月20243.創(chuàng)建索引的原則⑴索引的創(chuàng)建和維護由DBA和DBMS完成索引由DBA或表的擁有者負(fù)責(zé)創(chuàng)建和撤消,其他用戶不能隨意創(chuàng)建和撤消索引。索引由系統(tǒng)自動選擇和維護。(不需要用戶指定使用索引,也不需要用戶打開索引或?qū)λ饕龍?zhí)行重索引操作,這些工作都由DBMS自動完成)。
14三月2024⑵是否創(chuàng)建索引取決于表的數(shù)據(jù)量大小和對查詢的要求基本表中記錄的數(shù)量越多,記錄越長,越有必要創(chuàng)建索引,創(chuàng)建索引后加快查詢速度的效果越明顯。記錄較少的基本表,創(chuàng)建索引意義不大。索引要根據(jù)數(shù)據(jù)查詢或處理的要求而創(chuàng)建(對那些查詢頻度高、實時性要求高的數(shù)據(jù)一定要建立索引,否則不必考慮創(chuàng)建索引的問題)。
14三月2024⑶一個基本表,不要建過多索引索引文件占用文件目錄和存儲空間,索引過多會使系統(tǒng)負(fù)擔(dān)加重。索引需要自身維護,當(dāng)基本表的數(shù)據(jù)增加、刪除或修改時,索引文件要隨之變化,以保持與基本表一致。索引過多會影響數(shù)據(jù)增、刪、改的速度。
14三月2024避免使用索引的情形⑴包含太多重復(fù)值的列;⑵查詢中很少被引用的列;⑶值特別長的列;⑷查詢返回率很高的列;⑸具有很多NULL值的列;⑹需要經(jīng)常插、刪、改的列;⑺記錄較少的基本表;⑻需進行頻繁、大批量數(shù)據(jù)更新的基本表。
14三月20244.索引的類型及選擇⑴單列索引。是對基本表的某一單獨的列進行索引,是最簡單和最常用的索引類型,它是在表的某一列的基礎(chǔ)上建立的。⑵惟一索引。惟一索引不允許在表中插入任何相同的取值。使用惟一索引不但能提高性能,還可以維護數(shù)據(jù)的完整性。⑶復(fù)合索引。針對基本表中兩個或兩個以上的列建立的索引。由于被索引列的順序?qū)?shù)據(jù)查詢速度具有顯著的影響,所以創(chuàng)建復(fù)合索引時,應(yīng)當(dāng)考慮索引的性能。為優(yōu)化性能,通常將最強限定值放在第一位。不過,那些始終被指定的列更應(yīng)當(dāng)放在第一位。
14三月20245.索引的創(chuàng)建
語句格式:CREATE[UNIQUE][CLUSTERED]INDEX<索引名>
ON<表名>(<列名1>[<次序>][,<列名2>[<次序>]]…);功能:為基本表創(chuàng)建索引。
說明:⑴<表名>是要創(chuàng)建索引的基本表名字。索引可建在該表的一列或多列上,各列名間用逗號分隔;⑵每個<列名>后面還可用<次序>指定索引值的排列次序,次序可選ASC(升序)或DESC(降序),默認(rèn)值為ASC;⑶
UNIQUE表示該索引的每一個索引值只對應(yīng)惟一的數(shù)據(jù)記錄;
14三月2024⑷CLUSTERED表示建立聚簇索引聚簇索引是SQLServer提供的一種索引形式,它使基本表中數(shù)據(jù)的物理順序與索引項的排列順序一致。創(chuàng)建聚簇索引可提高查詢效率,但創(chuàng)建聚簇索引后,在更新索引列數(shù)據(jù)時,往往會導(dǎo)致表中記錄的物理順序的變更,因而代價是較大的。一個基本表上最多只能建一個聚族索引,對于經(jīng)常更新的列不宜建立聚簇索引。⑸SQL中的索引是非顯示索引。即在索引創(chuàng)建以后,用戶在索引撤消前不會再用到該索引名,但是索引在用戶查詢時會自動起作用。
14三月20246.索引的撤消語句格式:DROPINDEX<索引名>[,…n]功能:在DB中撤消指定的索引。說明:⑴<索引名>是要撤消的索引的名字;⑵
撤消索引時,系統(tǒng)會同時從DD中刪除有關(guān)對該索引的描述;⑶
一次可撤消一個或多個指定的索引,索引名間逗號間隔。
14三月20243.7視圖1視圖概念2視圖的優(yōu)點3視圖的創(chuàng)建4視圖的查詢5視圖的更新6視圖的撤消14三月20241視圖概念視圖可以被看成是虛擬表。視圖中的數(shù)據(jù)不物理地存儲在數(shù)據(jù)庫內(nèi)。SELECT語句的結(jié)果集構(gòu)成了視圖的內(nèi)容?;颈?基本表2視圖14三月20242.視圖的優(yōu)點⑴簡化用戶操作。使用戶將注意力集中在視圖所關(guān)聯(lián)的數(shù)據(jù)上;⑵使用戶能以多種角度看待同一數(shù)據(jù)(可使不同的用戶以不同的方式看待同一數(shù)據(jù));⑶對機密數(shù)據(jù)提供安全保護。在設(shè)計DB應(yīng)用系統(tǒng)時,對不同的用戶定義不同的視圖,使機密數(shù)據(jù)不出現(xiàn)在不應(yīng)看到這些數(shù)據(jù)的用戶視圖上,自動提供了對機密數(shù)據(jù)的安全保護功能;⑷為DB重構(gòu)提供一定的邏輯獨立性。如果只是通過視圖來存取DB中的數(shù)據(jù),DBA可以有選擇地改變構(gòu)成視圖的基本表,而不用考慮那些通過視圖引用數(shù)據(jù)的應(yīng)用程序的改動。
14三月20243.視圖的創(chuàng)建創(chuàng)建視圖實際上就是DB執(zhí)行定義該視圖的查詢語句。語句格式:
CREATEVIEW<視圖名>[(<列名>[,<列名>]…)]
AS<子查詢>[WITHCHECKOPTION];功能:定義視圖名和視圖結(jié)構(gòu),并將<子查詢>得到的元組作為視圖的內(nèi)容。
14三月2024說明:
⑴<子查詢>可以是任意復(fù)雜的SELECT語句,但通常不允許含有ORDERBY(對查詢結(jié)果進行排序)和DISTINCT(從查詢返回結(jié)果中刪除重復(fù)行)短語;⑵
WITHCHECKOPTION表示對視圖進行UPDATE、INSERT和DELETE操作時要保證更新、插入和刪除的行滿足視圖定義中的謂詞條件,即<子查詢>中WHERE子句的條件表達式。選擇該子句,則系統(tǒng)對UPDATE、INSERT和DELETE操作進行檢查;
14三月2024⑷
該語句執(zhí)行的結(jié)果,僅是將視圖的定義信息存入DB的DD中,而定義中的<子查詢>語句并不執(zhí)行。當(dāng)系統(tǒng)運行到包含該視圖定義語句的程序時,根據(jù)DD中的視圖的定義信息臨時生成該視圖。程序一旦執(zhí)行結(jié)束,該視圖立即被撤銷。
14三月2024⑶視圖的列名或全部指定或全部省略若省略視圖各個列名,則表明該視圖各列由<子查詢>中SELECT子句各目標(biāo)列組成。
下列情況,必須指定組成視圖的所有列名:①目標(biāo)列不是單純的列名,而是集函數(shù)或列表達式;②<子查詢>中使用多個表或視圖,且目標(biāo)列中含有相同的列名;③需要在視圖中改用新的、更合適的列名。
14三月2024定義單源表視圖建立信息系學(xué)生的視圖。
CREATEVIEWIS_Student AS SELECTSno,Sname,Sage FROMStudentWHERESdept='信息系'14三月2024定義多源表視圖建立信息系選修了‘c01’號課程的學(xué)生的視圖。CREATEVIEWV_IS_S1(Sno,Sname,Grade)AS SELECTStudent.Sno,Sname,SageFROMStudentJOINSCONStudent.Sno=SC.SnoWHERESdept='信息系'ANDSC.Cno='c01'14三月2024在已有視圖上定義新視圖建立信息系選修了‘c01’號課程且成績在90分以上的學(xué)生的視圖。CREATEVIEW
V_IS_S2AS SELECTSno,Sname,GradeFROMV_IS_S1
WHEREGrade>=90
14三月2024定義帶表達式的視圖定義一個反映學(xué)生出生年份的視圖。
CREATEVIEW
BT_S(Sno,Sname,Sbirth) ASSELECTSno,Sname,2005-SageFROMStudent
14三月2024含分組統(tǒng)計信息的視圖定義一個存放每個學(xué)生的學(xué)號及平均成績的視圖。
CREATEVIEWS_G(Sno,AverageGrade) ASSELECTSno,AVG(Grade)FROMSC GROUPBYSno14三月20244.視圖的查詢是對基本表的查詢,其查詢結(jié)果是從基本表得到,所以,同樣一個視圖查詢,在不同的執(zhí)行時間可能得到不同的結(jié)果,因為在這段時間里,基本表可能發(fā)生了變化。DBMS執(zhí)行對視圖的查詢時,首先進行有效性檢查,檢查查詢的基本表、視圖等是否存在,如果存在,則從DD中取出視圖的定義,把定義中的子查詢和用戶的查詢結(jié)合起來,轉(zhuǎn)換成等價的對基本表的查詢,然后再執(zhí)行修正了的查詢。
14三月2024通過視圖查詢數(shù)據(jù)同通過基本表查詢數(shù)據(jù)一樣。首先把對視圖的查詢轉(zhuǎn)換成等價的對基本表的查詢。然后再執(zhí)行轉(zhuǎn)換后的查詢。14三月2024示例1例利用IS_Student視圖,查詢信息系年齡小于20歲的學(xué)生。SELECTSno,Sname,SageFROMIS_StudentWHERESage<20轉(zhuǎn)換成的實際查詢?yōu)椋篠ELECTSno,Sname,SageFROMStudentWHERESdept='信息系'ANDSage<20
14三月2024示例2例利用IS_Student視圖,查詢信息系選修了‘C01’課程的學(xué)生的學(xué)號和姓名。SELECTSno,Sname,SageFROMIS_StudentJOINSCONIS.Student.Sno=SC.SnoWHERECno='C01'14三月2024示例3例利用S_G視圖,查詢平均成績90分以上的學(xué)生的學(xué)號和平均成績。
SELECT*FROMS_GWHEREAverageGrade>90轉(zhuǎn)換語句是:SELECTSno,AVG(Grade)FROMSC GROUPBYSnoHAVINGAVG(Grade)>90
14三月20245.視圖的更新是指通過視圖來插入、刪除和修改數(shù)據(jù)。因視圖是虛表,故對視圖的更新,最終要轉(zhuǎn)化為對基本表的更新。為防止用戶通過視圖進行更新數(shù)據(jù),有意或無意對不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進行操作,可在定義視圖時加上[WITHCHECKOPTION]子句。在視圖上更新數(shù)據(jù)時,DBMS檢查視圖定義中的條件,若不滿足條件,則拒絕執(zhí)行更新操作。
14三月20246.視圖的撤消語句格式:DROPVIEW<視圖名>功能:從DB中刪除指定的視圖。說明:⑴DROPVIEW是刪除視圖在DD中的定義信息,而由該視圖導(dǎo)出的其他視圖的定義卻仍存在DD中,但這些視圖已失效;⑵視圖創(chuàng)建后,若導(dǎo)出此視圖的基本表被刪除了,則該視圖將失效(一般不會被自動刪除),用DROPVIEW語句將其刪除。
14三月20243.8數(shù)據(jù)控制語言3.8.1
數(shù)據(jù)控制方法3.8.2
數(shù)據(jù)控制語句3.8.3
事務(wù)控制語句
14三月20243.8.1數(shù)據(jù)控制方法1.DB操作權(quán)限2.數(shù)據(jù)控制方法
14三月20241.DB操作權(quán)限⑴隱含特權(quán):系統(tǒng)內(nèi)置權(quán)限,是用戶不需要進行授權(quán)就可擁有的數(shù)據(jù)操作權(quán)。⑵系統(tǒng)特權(quán)(語句特權(quán)):相當(dāng)于數(shù)據(jù)定義語言的語句權(quán)限。是允許用戶在DB內(nèi)部實施管理行為的特權(quán),它主要包括創(chuàng)建或刪除DB、創(chuàng)建或刪除用戶、刪除或修改DB對象等。⑶對象特權(quán):類似于DB操作語言的語句權(quán)限,它指用戶對DB中的表、視圖、存儲過程等對象的操作權(quán)限。
14三月20242.數(shù)據(jù)控制方法DBMS實現(xiàn)數(shù)據(jù)控制的步驟:⑴授權(quán)定義。首先由具有授權(quán)資格的DBA和DB對象的所有者進行授權(quán)定義,即通過數(shù)據(jù)控制語言DCL,將授權(quán)決定告知DBMS。⑵存權(quán)處理。DBMS把授權(quán)的結(jié)果編譯后存入DD中。DD是由系統(tǒng)自動生成、維護的DB,由一組表組成,其中記錄著用戶標(biāo)識、基本表、視圖和各表的屬性描述及系統(tǒng)授權(quán)情況。⑶查權(quán)操作。當(dāng)用戶提出操作請求時,系統(tǒng)在DD中查找該用戶的數(shù)據(jù)操作權(quán)限,當(dāng)用戶擁有該操作權(quán)時才能執(zhí)行其操作,否則系統(tǒng)拒絕。
14三月20243.8.2數(shù)據(jù)控制語句1.授予權(quán)限2.撤消權(quán)限3.拒絕訪問
14三月20241.授予權(quán)限語句格式:
GRANT<權(quán)限>[,<權(quán)限>,…]
[ON<對象類型><對象名>]
TO<用戶>[,<用戶>,…]|PCBLIC
[WITHGRANTOPTION];功能:將對指定操作對象的指定操作權(quán)限授予指定的用戶。
14三月2024說明:⑴不同類
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑工程陶瓷材料采購合同
- 社保證明申請書
- 2025年度大型活動安保服務(wù)合同樣本
- 2025年度新能源儲能項目采購合同
- 2025年度建筑起重機械安裝與安全管理體系建設(shè)合同
- 中國工業(yè)衡器行業(yè)市場供需格局及投資規(guī)劃建議報告
- 2019-2025年中國國學(xué)培訓(xùn)行業(yè)發(fā)展趨勢預(yù)測及投資戰(zhàn)略咨詢報告
- 2025年度金蝶企業(yè)內(nèi)部培訓(xùn)與認(rèn)證合同
- 2025年度家居裝修設(shè)計與施工一體化服務(wù)合同
- 升職申請書英文
- 2025中國移動安徽分公司春季社會招聘高頻重點提升(共500題)附帶答案詳解
- 七年級英語下學(xué)期開學(xué)考試(深圳專用)-2022-2023學(xué)年七年級英語下冊單元重難點易錯題精練(牛津深圳版)
- 2025江蘇省全日制勞動合同書范本
- 地方融資平臺債務(wù)和政府中長期支出事項監(jiān)測平臺操作手冊-單位
- 放射科護理常規(guī)
- 儒釋道文化秒解
- 新時代中小學(xué)教師職業(yè)行為十項準(zhǔn)則
- 人教版八年級上冊英語1-4單元測試卷(含答案)
- 初中數(shù)學(xué)教學(xué)經(jīng)驗分享
- 2024年銀行考試-興業(yè)銀行考試近5年真題附答案
- 2024年公開招聘人員報名資格審查表
評論
0/150
提交評論