《視圖和索引》PPT課件.ppt_第1頁
《視圖和索引》PPT課件.ppt_第2頁
《視圖和索引》PPT課件.ppt_第3頁
《視圖和索引》PPT課件.ppt_第4頁
《視圖和索引》PPT課件.ppt_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1,第七章 視圖和索引,7.1 視圖簡介 7.2 創(chuàng)建視圖 7.3 查看與修改視圖 7.4 編輯視圖中的記錄 7.5 視圖定義信息查詢 7.6 刪除視圖 7.7 索引,2,7.1 視圖簡介,1.視圖的基本概念 視圖是一個虛擬表,其內(nèi)容由查詢語句定義生成。表是視圖的基礎(chǔ)。 數(shù)據(jù)庫中只存儲了視圖定義,而不存放視圖所對應(yīng)的數(shù)據(jù),視圖所對應(yīng)的數(shù)據(jù)仍存放在視圖所引用的基表中。 視圖中的數(shù)據(jù)是視圖在被使用時動態(tài)生成的,它隨著基表數(shù)據(jù)的變化而發(fā)生變化,3,7.1 視圖簡介,2.視圖的作用 1) 視圖可以集中數(shù)據(jù),滿足不同用戶對數(shù)據(jù)的不同要求。 2) 視圖可以簡化復(fù)雜查詢的結(jié)構(gòu),從而方便用戶對數(shù)據(jù)的操作。 3

2、) 視圖能夠?qū)?shù)據(jù)提供安全保護(hù)。 4) 便于組織數(shù)據(jù)導(dǎo)出,4,7.2 創(chuàng)建視圖,創(chuàng)建視圖時應(yīng)該注意以下: 創(chuàng)建者必須擁有創(chuàng)建視圖的權(quán)限,對視圖中引用的基表或視圖有許可權(quán)。 只能在當(dāng)前數(shù)據(jù)庫中創(chuàng)建視圖 在一個視圖中最多引用1024列,視圖中記錄的行數(shù)限制由基表中記錄數(shù)目決定。 視圖的名稱必須遵循標(biāo)識符的定義規(guī)則,對于每個用戶來說也必須唯一,而且視圖名稱不允許與該用戶擁有的表重名。 視圖中列的名稱一般繼承其基表中列的名稱,如果視圖中某一列是算術(shù)表達(dá)式、函數(shù)、常量或者來自多個表的列名相同,必須要為視圖中的列重新定義名稱,5,7.2 創(chuàng)建視圖,可以將視圖創(chuàng)建在其他視圖上,SQL Server 2005

3、中允許32層的視圖嵌套。 不能在視圖上創(chuàng)建全文索引,不能將規(guī)則、默認(rèn)綁定在視圖上。 不能在臨時表上創(chuàng)建視圖,也不能創(chuàng)建臨時視圖。 定義視圖的查詢語句中不能包含計算子句COMPUTE、COMPUTE BY子句和INTO關(guān)鍵字,6,7.2 創(chuàng)建視圖,7.2.1 使用SSMS創(chuàng)建視圖 7.2.2 使用CREATE VIEW語句創(chuàng)建視圖 7.2.3 重命名視圖,7,7.2.1 使用SSMS創(chuàng)建視圖,示范案例1 使用SQL Server Management Studio在“Northwind”數(shù)據(jù)庫中創(chuàng)建一個視圖“V_dingdanxiangxi”,用于查詢一個訂單是由哪個雇員簽訂的,簽訂的是什么時候

4、,買了什么產(chǎn)品,價格是多少,由誰來送貨,送貨的地址是什么等內(nèi)容,8,使用CREATE VIEW語句創(chuàng)建視圖語法格式如下: CREATE VIEW . . view_name ( column ,.n ) WITH ENCRYPTION AS select_statement WITH CHECK OPTION,7.2.2 使用CREATE VIEW創(chuàng)建視圖,9,7.2.2 使用CREATE VIEW創(chuàng)建視圖,示范案例2 使用T-SQL語句在“Northwind”數(shù)據(jù)庫中創(chuàng)建一個視圖“V_ProductInfo”,用于查詢所有產(chǎn)品的產(chǎn)品號“productid”、產(chǎn)品名稱“productname”

5、和產(chǎn)品價格“unitprice”。使用的基本表為“Products”表。 程序清單如下: CREATE VIEW V_ProductInfo AS SELECT productid,productname,unitprice FROM products,10,7.2.3 重命名視圖,1.使用SSMS 2.使用系統(tǒng)存儲過程sp_rename 其語法格式如下: sp_rename old_name ,new_name 示范案例3 使用T-SQL語句將Northwind數(shù)據(jù)庫中視圖“V_SelectProductInfo1”重命名為“vv_spinfo” 程序清單如下: EXEC sp_rename

6、 v_selectproductinfo1,vv_spinfo,11,7.3 查看與修改視圖,7.3.1 查看視圖 7.3.2 在SQL Server Management Studio中修改視圖 7.3.3 用CREATE VIEW修改視圖,12,7.3.1 查看視圖,1.在SQL Server Management Studio中查看視圖內(nèi)容的方法與查看數(shù)據(jù)表內(nèi)容的方法幾乎一樣。 2.在T-SQL語句里,使用Select語句可以查看視圖的內(nèi)容,其用法與查看數(shù)據(jù)表內(nèi)容的用法一樣,區(qū)別只是把數(shù)據(jù)表名改為視圖名,13,7.3.2 在SSMS中修改視圖,使用SQL Server Managemen

7、t Studio修改視圖事實上只是修改該視圖所存儲的T-SQL語句,14,7.3.3 用ALTER VIEW修改視圖,其語法格式如下: ALTER VIEW view_name ( column ,.n ) WITH ENCRYPTION AS select_statement 注:對于加密或未加密的視圖都可以用此語句進(jìn)行修改,15,7.3.3 用ALTER VIEW修改視圖,示范案例4 使用T-SQL語句修改Northwind數(shù)據(jù)庫中的視圖“V_SelectProductInfo”,用于查詢類別名“categoryname”為“Beverages”的所有產(chǎn)品的詳細(xì)信息,如產(chǎn)品號“produc

8、tid”、產(chǎn)品名稱“productname”和供應(yīng)商的公司名稱“companyname”,16,7.3.3 用ALTER VIEW修改視圖,程序清單如下: ALTER VIEW V_SelectProductInfo AS SELECT ductid,ductname, panyname FROM products JOIN categories ON products.categoryid=categories.categoryid JOIN suppliers ON products.supplierid=suppliers.supplier

9、id WHERE categories.categoryname=Beverages,17,7.4 編輯視圖中的記錄,7.4.1 編輯視圖中記錄的限制 7.4.2 在SSMS中操作視圖記錄 7.4.3 用T-SQL語句操作視圖記錄,18,7.4.1 編輯視圖中記錄的限制,在使用視圖修改數(shù)據(jù)時,要注意下列一些事項: 不能在一個語句中對多個基表使用數(shù)據(jù)修改語句。如果要修改由兩個或兩個以上基表得到的視圖,必須進(jìn)行多次修改,每次修改只能影響一個基表。 對于基表中需更新而又不允許空值的所有列,它們的值在 INSERT 語句或 DEFAULT 定義中指定。這將確?;碇兴行枰档牧卸伎梢垣@取值。 不能修

10、改那些通過計算得到結(jié)果的列,19,7.4.1 編輯視圖中記錄的限制,在視圖定義中使用了 WITH CHECK OPTION 子句,則所有在視圖上執(zhí)行的數(shù)據(jù)修改語句都必須符合定義視圖的 SELECT 語句中所設(shè)定的條件。 在基表的列中修改的數(shù)據(jù)必須符合對這些列的約束條件,如是否為空、約束、DEFAULT 定義等,20,7.4.2 在SSMS中操作視圖記錄,1.修改視圖中的記錄 2.在視圖中插入記錄 3.在視圖中刪除記錄,21,7.4.3 用T-SQL語句操作視圖記錄,1.更新記錄 UPDATE V_ProductInfo SET unitprice=16 WHERE productid=4,22

11、,7.4.3 用T-SQL語句操作視圖記錄,2.刪除記錄 DELETE V_ProductInfo WHERE productid=4,23,7.4.3 用T-SQL語句操作視圖記錄,3.插入記錄 INSERT V_ProductInfo VALUES(蘋果,$3,24,7.5 視圖定義信息查詢,1.使用SQL Server Management Studio查看視圖信息 2.使用系統(tǒng)存儲過程查看視圖信息 EXEC sp_helptext objname,25,7.6 刪除視圖,1.在SSMS中刪除視圖 2.使用DROP VIEW語句刪除視圖 語法格式如下: DROP VIEW view ,.

12、n,26,7.6 刪除視圖,示范案例5 使用T-SQL語句刪除“Northwind”數(shù)據(jù)庫中的視圖“V_SelectProductInfo”。 程序清單如下: DROP VIEW V_SelectProductInfo,2021/3/10,27,7.7 索引,問題 如何提高查詢速度? 某些列如何保證沒有重復(fù)值或滿足一定條件? 如何保證數(shù)據(jù)的參照完整性,2021/3/10,28,7.7索 引,索引是一個記錄表中所包含的值以及相應(yīng)的存儲位置的列表。 索引通過記錄表中的關(guān)鍵值來指向表中的記錄,這樣數(shù)據(jù)庫引擎就不用掃描整個表而能定位到相關(guān)的記錄,2021/3/10,29,索引的作用,創(chuàng)建索引的好處主要

13、有以下兩點: (1)加快數(shù)據(jù)查詢 (2)加快表的連接、排序和分組工作 創(chuàng)建索引也有它的不足,如下所述: (1)創(chuàng)建索引需要占用數(shù)據(jù)空間和時間 (2)建立索引會減慢數(shù)據(jù)修改的速度,2021/3/10,30,索引的分類,按照表中建立索引的那一列(或列組合)中的數(shù)據(jù)是否各不相同,可以將索引分為惟一索引和非惟一索引。 按照索引的結(jié)構(gòu),可以將其劃分為兩大類,聚集索引(Clustered index)和非聚集索引(Nonclustered index,2021/3/10,31,1惟一索引和非惟一索引 惟一索引要求所有數(shù)據(jù)行中任意兩行中的被索引列或索引列組合不能存在重復(fù)值,包括不能有兩個空值NULL,而非惟

14、一索引則不存在這樣的限制,2021/3/10,32,2聚集索引和非聚集索引 聚集索引會對表進(jìn)行物理排序,所以這種索引對查詢非常有效。表中只能有一個聚集索引。當(dāng)建立主鍵約束時,如果表中沒有聚集索引,SQL Server會用主鍵列作為聚集索引鍵。 非聚集索引不會對表進(jìn)行物理排序,2021/3/10,33,通常,下列情況需要在表中的某一列或某些列上建立索引: (1)經(jīng)常用作查詢條件的列。 (2)需要頻繁地按范圍搜索的列。 (3)連接中頻繁使用的列。 (4)在ORDER BY子句中經(jīng)常使用的列。 (5)主鍵或外鍵的列。 (6)值是惟一的列,2021/3/10,34,由于建立索引表后將占用系統(tǒng)資源,且索

15、引的建立會影響數(shù)據(jù)的修改速度,每執(zhí)行一次增刪改操作都要重新維護(hù)一次索引,因此在沒有必要的情況下不要建立索引,2021/3/10,35,創(chuàng)建索引,索引可以在創(chuàng)建表時建立,也可以在定義表以后的任何時候建立; 既可以在表的一列上建立一個索引,也可以在列組合上建立一個索引; 一個表中既可以建立一個索引,也可以建立多個索引(當(dāng)然,其中只有一個聚集索引,2021/3/10,36,可以利用企業(yè)管理器建立或利用T-SQL建立索引。建立索引的條件如下: (1)只有表的擁有者才能建立索引。 (2)每個表只能建立一個聚集索引。 (3)每個表最多可以建立250個非聚集索引。 (4)索引最多可以包含16列,2021/3

16、/10,37,5)建立惟一索引時,應(yīng)保證建立索引的列不包括重復(fù)的數(shù)據(jù),并且沒有兩個以上的NULL。 (6)text、ntext、image列不能建立索引,2021/3/10,38,創(chuàng)建索引方法(一,系統(tǒng)自動創(chuàng)建索引 在創(chuàng)建或修改表時,如果添加了一個主鍵或惟一鍵約束,則系統(tǒng)將自動在該表上,以該鍵值作為索引列,創(chuàng)建一個惟一索引,2021/3/10,39,創(chuàng)建索引方法(二,使用企業(yè)管理器 【問題】在Student表上創(chuàng)建基于StuName列,名為IX_StuName的非聚集、非惟一索引。 【注意】創(chuàng)建主鍵約束和惟一約束時,會自動在這些列上創(chuàng)建惟一索引,2021/3/10,40,創(chuàng)建索引方法(三)-使

17、用SQL語句,常用索引命令常用格式如下: CREATE UNIQUE CLUSTEREDNONCLUSTERED INDEX index_name ON table_nameview_name (column_name ASC | DESC , n) WITH index_property , n,2021/3/10,41,練習(xí)】使用T-SQL語句在StuCou表上創(chuàng)建名為IX_StuNoCouNo的聚集、惟一、復(fù)合索引,該索引基于StuNo列和CouNo列創(chuàng)建。 CREATE UNIQUE CLUSTERED INDEX IX_StuNoCouNo ON StuCou (StuNo,CouN

18、o) GO,2021/3/10,42,復(fù)合索引說明,在(字段1,字段2)上創(chuàng)建的復(fù)合索引和在(字段2,字段1)上創(chuàng)建的復(fù)合索引是不同的。 查找數(shù)據(jù)時,只有在where子句中指定了索引的第一個字段時才使用該復(fù)合索引。 復(fù)合索引中字段的順序很重要:在次序上首先定義最具惟一性的字段列,2021/3/10,43,刪除索引,使用企業(yè)管理器 【問題】使用企業(yè)管理器刪除Student表中的IX_StuName索引,2021/3/10,44,使用SQL語句 格式: DROP INDEX table_name.index_name,2021/3/10,45,問題】刪除StuCou表中的IX_StuNoCouNo索引。 DROP INDEX StuCou.IX_StuNoCouNo,2021/3/10,46,思考】 student表中的索引PK_Student可以刪除嗎,2021/3/10,47,注意】 不能用DROP INDEX語句刪除由PRIMARY KEY約束或UNIQUE約束創(chuàng)建的索引。要刪除這些索引必須先刪除PRIMARY KEY約束或UNIQUE約束。 在刪除聚集索引時,表中的所有非聚集索引都將被重建,2021/3/10,48,管理索引,顯示索引信息 重命名索引,2021/3/10,49,顯示索引信息 企業(yè)管理器 使用系統(tǒng)存儲過程sp_helpindex table_name

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論