《數據庫原理與應用教程》第5版 課件 第5章 視圖和索引_第1頁
《數據庫原理與應用教程》第5版 課件 第5章 視圖和索引_第2頁
《數據庫原理與應用教程》第5版 課件 第5章 視圖和索引_第3頁
《數據庫原理與應用教程》第5版 課件 第5章 視圖和索引_第4頁
《數據庫原理與應用教程》第5版 課件 第5章 視圖和索引_第5頁
已閱讀5頁,還剩35頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

數據庫原理與應用教程(第5版)第5章視圖和索引5.1視圖5.2索引5.1視圖5.1視圖概念5.2定義視圖5.3通過視圖查詢數據5.4修改和刪除視圖5.5視圖的作用5.1視圖概念視圖:由基本表構成的虛表(滿足用戶需求的表結構)

5.2定義視圖CREATEVIEW<視圖名>[(視圖列名表)] AS查詢語句說明:查詢中通常不含ORDERBY和DISTINCT語句。缺省時視圖列名與查詢列名相同。查詢的源表可以是已定義的視圖。說明下列三種情況下不能省略視圖列名:某個目標列是聚集函數或表達式列;多表連接查詢時,在查詢列表中有同名列;希望用新的更合適的列名。視圖的列名序列或者全部省略,或者全部指定。定義單源表視圖視圖取自一個基本表的部分行、列,視圖行列與基本表行列對應,一般可看可改。示例例1.建立信息系學生的視圖。

CREATEVIEWIS_Student AS SELECTSno,Sname,Sage FROMStudentWHERESdept=’信息’

定義多源表視圖子查詢源表多于一個,一般可看不可改。示例例2.建立查詢信息系選了C001課程的學生的視圖,列出學號,姓名和年齡。CREATEVIEWV_IS_S1(Sno,Sname,Grade)

AS SELECTStudent.Sno,Sname,Sage FROMStudent,SC WHERESdept=‘信息系’ ANDStudent.Sno=SC.SnoANDSC.Cno=‘C001’在已有視圖上定義新視圖視圖的數據源可以來自其它的視圖。示例例3.利用例2建立的視圖,建立信息系選了C001課程且成績在90分以上的學生的視圖。

CREATEVIEWV_IS_S2(Sno,Sname,Grade)

AS SELECTStudent.Sno,Sname,Sage FROMV_IS_S1

WHEREGrade>=90示例例4.利用例1所建的視圖,建立查詢信息系“計算機文化學”考試成績大于等于80分的學生的姓名和成績的視圖。

CREATEVIEWV_IS_VBASSELECTSname,GradeFROMIS_StudentVJOINSCONV.Sno=SC.SnoJOINCourseCONC.Cno=SC.CnoWHERECname='計算機文化學'

ANDGrade>=80定義帶表達式的視圖定義基本表時,為減少數據冗余,表中只存放基本數據。由基本數據經過各種計算派生出的數據一般不存儲。由于視圖中的數據并不實際存儲,因此,可以在在視圖中設置一些附加列來保存這些派生的數據。由于這些附加列在基本表中并不實際存在,因此稱這些列為虛擬列。稱包含虛擬列的視圖為帶表達式的視圖。示例例5.定義一個查詢學生學號、姓名和出生年份的視圖。

CREATEVIEWV_BirthYear(Sno,Sname,BirthYear)ASSELECTSno,Sname,2020-SageFROMStudent含分組統計信息的視圖子查詢中含GROUPBY子句,視圖行列由基本表行列得到,數據只看不可改。示例例6.定義一個查詢每個學生的學號及考試平均成績的視圖。

CREATEVIEWS_G(Sno,AvgGrade)ASSELECTSno,AVG(Grade)FROMSC GROUPBYSno5.3通過視圖查詢數據視圖定義好后,可以對其進行查詢,通過視圖查詢數據同基本表一樣。示例例7.利用5.2節例1建立的視圖,查詢信息系年齡小于等于20歲的學生。

SELECTSno,Sname,SageFROMIS_StudentWHERESage<=20轉換成相關基本表的等價查詢SELECTSno,Sname,SageFROMStudentWHERESdept='信息系'

ANDSage<=20示例例8.查詢信息系選修了“C001”的學生學號、姓名和年齡。SELECTSno,Sname,SageFROMIS_StudentJOINSCONIS.Student.Sno=SC.SnoWHERECno='C01'示例例9.查詢信息系學生的學號、姓名、所選課程的課程名。

SELECTv.Sno,Sname,CnameFROMIS_StudentvJOINSCONv.Sno=SC.SnoJOINCourseCONC.Cno=SC.Cno

轉換成相關基本表的等價查詢SELECTS.Sno,Sname,CnameFROMStudentSJOINSCONS.Sno=SC.SnoJOINCourseCONC.Cno=SC.CnoWHERESdept='信息系'示例例10.利用5.2節例6建立的視圖,查詢考試平均成績80分以上的學生的學號和平均成績。

SELECT*FROMS_GWHEREAvgGrade>80不能直接轉換為:SELECTSno,AVG(Grade)FROMSCWHEREAVG(Grade)>80GROUPBYSno而應該轉換為:SELECTSno,AVG(Grade)FROMSCGROUPBYSnoHAVINGAVG(Grade)>90修改和刪除視圖修改格式:ALTERVIEW視圖名

[(列名[,...n])]AS

查詢語句示例例11.修改例6定義的視圖,使其統計每個學生的考試平均成績和修課總門數。ALTERVIEWS_G(Sno,AvgGrade,Count_Cno)ASSELECTSno,AVG(Grade),Count(*)FROMSCGROUPBYSno刪除視圖格式:

DROPVIEW<視圖名>

例.刪除例1定義的IS_Student視圖。

DROPVIEWIS_Student5.5視圖的作用簡化數據查詢語句使用戶能從多角度看待同一數據提高了數據的安全性提供了一定程度的邏輯獨立性5.2索引5.2.1索引基本概念5.2.2索引分類5.2.3唯一索引5.2.4創建和刪除索引5.2.1基本概念索引與圖書中的目錄類似。在數據庫中,索引使對數據的查找不需要對整個表進行掃描,就可以在其中找到所需數據。圖書的目錄注明了各部分內容所對應的頁碼,而數據庫中的索引是一個表中所包含的值的列表,其中注明了表中的各行數據所在的存儲位置。可以為表中的單個列建立索引,也可以為一組列建立索引。索引由索引項組成,索引項由來自表中每一行的一個或多個列(稱為索引關鍵字)組成。當在多個列上建立索引時,系統按索引列出現的先后順序對索引列進行排序。

索引及數據間對應關系索引利弊合適的索引可以提高查詢效率。索引為查找所帶來的性能好處是有代價的:索引在數據庫中會占用一定的存儲空間。在對數據進行插入、更改和刪除操作時,為使索引與數據保持一致,還需要對索引進行相應維護。對索引的維護是需要花費時間。5.2.2索引的分類索引分為兩大類聚集索引(ClusteredIndex,也稱為聚簇索引)非聚集索引(Non-clusteredIndex,也稱為非聚簇索引)聚集索引對數據按聚集索引關鍵字值進行物理的排序。下列情況可考慮創建聚集索引:包含大量非重復值的列。使用下列運算符返回一個范圍值的查詢:

BETWEENAND、>、>=、<和<=。不返回大型結果集的查詢。經常被用作連接的列,一般來說,這些列是外鍵列。經常用在ORDERBY或GROUPBY子句中的列。非聚集索引非聚集索引與圖書后邊的術語表類似。數據存儲在一個地方,術語表存儲在另一個地方。而且數據并不按術語表的順序存放,但術語表中的每個詞在書中都有確切的位置。非聚集索引就類似于術語表,而數據就類似于一本書的內容。下述情況可考慮建立非聚集索引包含大量非重復值的列。不返回大型結果集的查詢。經常作為查詢條件使用的列。經常作為連接和分組條件的列。唯一索引確保索引列不包含重復值。在組合唯一索引的情況下,可以確保索引列中每個值的組合都是唯一的。例如,如果在last_name、first_name和middle_initial列的組合上創建了唯一索引full_name,則該表中任何兩個人都不可以具有完全相同的名字。聚集索引和非聚集索引都可以是唯一的。說明如果必須要實施唯一性來確保數據的完整性,則應在列上創建UNIQUE約束或PRIMARYKEY約束,而不要創建唯一索引。例如,如果限制身份證號碼(sid)列的取值不重復,則可在sid列上創建UNIQUE約束。實際上,當在表上創建PRIMARYKEY約束或UNIQUE約束時,系統會自動在這些列上創建唯一索引。5.2.3創建和刪除索引CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEX<索引名>ON<表名>(<列名>[<順序>[,<列名>[<順序>]…]]UNIQUE:創建唯一索引。CLUSTERED:創建聚集索引。NONCLUSTERED:創建非聚集索引。[ASC|DESC]:指定索引列的升序或降序排序方式。默認值為ASC。默認是創建非聚集索引。示例例1在Student表的Sname列上創建非聚集索引。CREATEINDEXSname_indONStudent(Sname)例2在Student表的Sid列上創建一個唯一聚集索引。CREATEUNIQUECLUSTEREDINDEXSid_indONStudent(Sid)示例(續

溫馨提示

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

評論

0/150

提交評論