SQL Server 網(wǎng)絡(luò)數(shù)據(jù)庫管理項(xiàng)目教程課件7項(xiàng)目七 視圖及其應(yīng)用_第1頁
SQL Server 網(wǎng)絡(luò)數(shù)據(jù)庫管理項(xiàng)目教程課件7項(xiàng)目七 視圖及其應(yīng)用_第2頁
SQL Server 網(wǎng)絡(luò)數(shù)據(jù)庫管理項(xiàng)目教程課件7項(xiàng)目七 視圖及其應(yīng)用_第3頁
SQL Server 網(wǎng)絡(luò)數(shù)據(jù)庫管理項(xiàng)目教程課件7項(xiàng)目七 視圖及其應(yīng)用_第4頁
SQL Server 網(wǎng)絡(luò)數(shù)據(jù)庫管理項(xiàng)目教程課件7項(xiàng)目七 視圖及其應(yīng)用_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目七:視圖及其應(yīng)用視圖的概念視圖的創(chuàng)建視圖的更改與刪除任務(wù)一任務(wù)二任務(wù)三視圖及其應(yīng)用任務(wù)四視圖的管理與維護(hù)任務(wù)五視圖的使用7.1任務(wù)1:視圖的概念7.1.1相關(guān)知識(shí)視圖的概念視圖是一種常用的數(shù)據(jù)庫對象,是從一個(gè)或者多個(gè)數(shù)據(jù)表或視圖中導(dǎo)出的“虛表”,視圖的結(jié)構(gòu)和數(shù)據(jù)是對數(shù)據(jù)表(基表)進(jìn)行查詢的結(jié)果。視圖被定義后就被存儲(chǔ)在數(shù)據(jù)庫中,通過視圖看到的數(shù)據(jù)只是存放在基表中的數(shù)據(jù)。當(dāng)通過視圖進(jìn)行修改數(shù)據(jù)記錄時(shí),修改的是基表中的數(shù)據(jù);同時(shí),當(dāng)基表的數(shù)據(jù)發(fā)生變化時(shí),這種變化也會(huì)自動(dòng)反映到視圖中。1.視圖的概念視圖是基于某個(gè)查詢結(jié)果而生成的“虛表”,同數(shù)據(jù)表一樣,也是由行列組成的,而且在數(shù)據(jù)操作中,可以像使用表一樣使用視圖。2.視圖的分類在SQLServer2008中主要有三種常用視圖,包括標(biāo)準(zhǔn)視圖、索引視圖和分區(qū)視圖。其中,(1)標(biāo)準(zhǔn)視圖將來自一個(gè)或多個(gè)基表的數(shù)據(jù)合并成為一個(gè)新的虛擬表。(2)索引視圖索引視圖已計(jì)算并存儲(chǔ)起來,為視圖創(chuàng)建唯一聚集索引可建立視圖索引相關(guān)知識(shí)(3)分區(qū)視圖分區(qū)視圖將分散在一臺(tái)或多臺(tái)服務(wù)器上的一組表的分區(qū)數(shù)據(jù)橫向聯(lián)接起來。3.視圖的優(yōu)點(diǎn)視圖的主要優(yōu)點(diǎn)包括實(shí)現(xiàn)集中多個(gè)表中,查詢起來比較繁瑣,在這種情況下,可以將多個(gè)表中的數(shù)據(jù)集中在一個(gè)視圖中,只通過執(zhí)行視圖查詢即可完成復(fù)雜的多表查詢過程,從而大大簡化了數(shù)據(jù)的查詢操作。表中通常存放的是某個(gè)實(shí)體的完整信息,如果不想讓用戶查看表中的有些信息,就可以為該用戶創(chuàng)建一個(gè)視圖,只將允許該用戶查看的數(shù)據(jù)加入視圖,并設(shè)置權(quán)限,使該用戶允許訪問視圖而不能訪問表,這樣就保護(hù)了表中的數(shù)據(jù)??梢詾楸砗鸵晥D分別設(shè)置訪問權(quán)限,二者互不影響,從而提高了表的數(shù)據(jù)安全性。在某些情況下,由于表中數(shù)據(jù)量太大,需要對表中的數(shù)據(jù)進(jìn)行水平或者垂直分割,如果直接分割數(shù)據(jù)表,可能會(huì)引起應(yīng)用程序的錯(cuò)誤。可以使用視圖對數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行分塊形式,從而使應(yīng)用程序仍可以通過視圖來重載數(shù)據(jù)。視圖的概念相關(guān)知識(shí)視圖的概念有時(shí)SQLServer數(shù)據(jù)庫需要與其它類型的數(shù)據(jù)庫交換數(shù)據(jù),即數(shù)據(jù)的導(dǎo)入和導(dǎo)出。如果SQLServer數(shù)據(jù)庫中的數(shù)據(jù)存放在多個(gè)表中,進(jìn)行數(shù)據(jù)交換就比較麻煩。如果將需要交換的數(shù)據(jù)通過一個(gè)視圖來集中處理,再將視圖中的數(shù)據(jù)與其它類型的數(shù)據(jù)庫中數(shù)據(jù)交換,就簡化了數(shù)據(jù)的維護(hù)管理。通過union運(yùn)算,可以將不同SQLServer上的表的數(shù)據(jù)聯(lián)合查詢生成一個(gè)結(jié)果集,即生成分區(qū)視圖,通過該視圖,可以提高查詢效率。7.2任務(wù)2:視圖的創(chuàng)建7.2.1相關(guān)知識(shí)視圖的創(chuàng)建1.視圖創(chuàng)建的方法為了創(chuàng)建視圖,數(shù)據(jù)庫管理員必須授予使用創(chuàng)建者創(chuàng)建的權(quán)限,視圖的創(chuàng)建方式有兩種,使用圖形工具和使用T-SQL語句。2.創(chuàng)建的視圖的限制嵌套不能超過32層;包含的列不可超過1024列;不可使用COMPUTE、COMPUTEBY或INTO;使用ORDERBY時(shí),還要同TOP。3.創(chuàng)建視圖的語法使用Transact-SQL的CREATVIEW語句創(chuàng)建視圖的語法結(jié)構(gòu)和參數(shù)說明如下:基本語法:CREATEVIEW[schema_name.]View_name[colum_list][WITH<ENCRYPTION|SCHEMABINDING|VIEW_METADATA>]ASselect_statement[WITHCHECKOPTION];<view_attribute>::={[ENCRYPTION][SCHEMABINDING][VIEW_METADATA]}其中:語法中的符號(hào)及參數(shù)說明如下:schema_name:視圖所屬框架名稱view_name:視圖名稱column_list:視圖中各個(gè)列使用的名稱AS:指定視圖要執(zhí)行的操作select_statement:定義視圖的SELECT語句WITHCHECKOPTION:強(qiáng)制針對視圖執(zhí)行的所有數(shù)據(jù)修改語句,都必須符合在statement中設(shè)置的條件。通過視圖修改時(shí),WITHCHECKOPTION可確保提交修改后,認(rèn)可通過視圖看到數(shù)據(jù)。ENCRYPTION:對sys.syscomments中包含CREATVIEW語句文本的項(xiàng)進(jìn)行加密。SCHEMABINDING:將視圖綁定到基礎(chǔ)表的架構(gòu)VIEW_METADATA:指定為引用視圖的查詢請求瀏覽模式的元數(shù)據(jù)時(shí),SQLServer實(shí)例將向DB-Library、ODBC和OLEDBAPI返回有關(guān)視圖的元數(shù)據(jù)信息,而不返回基表的元數(shù)據(jù)信息。7.2.2任務(wù)實(shí)施方法1:使用SSMS管理工具創(chuàng)建視圖視圖的創(chuàng)建步驟1:在“SQLServerManagermentStudio”管理工具中展開數(shù)據(jù)庫對象文件夾,選擇并展要?jiǎng)?chuàng)建視圖的數(shù)據(jù)庫如“Student”。右擊“視圖”對象,在彈出的快捷菜單中單擊新建“視圖”命令如圖7-1所示。操作圖示步驟2:在彈出的“添加表”對話框中,添加基表(按住Ctrl鍵可依次選擇多個(gè)基表),單擊“添加”按鈕,若不再添加基表,可以選擇“關(guān)閉”按鈕,如圖7-2所示,我們選擇“班級(jí)”和“學(xué)生”兩張表。如不需要某個(gè)已選基表可以選擇該基表,按“delete”移除。操作圖示任務(wù)實(shí)施視圖的創(chuàng)建步驟3:每個(gè)基表列名前的復(fù)選框可以設(shè)置視圖需要的輸出字段,并在“關(guān)系圖窗口”中進(jìn)行顯示,在條件窗格里還可以設(shè)置需要過濾的查詢條件。如圖7-3所示。操作圖示步驟4:在關(guān)系圖窗格中右鍵單擊“執(zhí)行SQL”命令,可查看當(dāng)前視圖所包含的數(shù)據(jù)內(nèi)容,結(jié)果顯示在“顯示結(jié)果窗格”中,如圖7-4所示。操作圖示步驟5:單擊

按鈕,或選擇“文件”|“保存視圖”菜單項(xiàng),在彈出的“選擇名稱”中輸入視圖名稱“view_班級(jí)”,單擊“確定”按鈕,則完成創(chuàng)建過程。任務(wù)實(shí)施操作1:在數(shù)據(jù)庫(Student)中創(chuàng)建一個(gè)基于“課程”表的視圖“view_課程”,該視圖要求輸出所有課程的課程名稱、課程類型、課程描述創(chuàng)建語句如下:USEStudentGOCREATEVIEWview_課程ASSELECT課程名稱,課程類型,課程描述FROM課程表GO執(zhí)行“SELECT*FROMview_課程”語句可以查詢視圖結(jié)果如圖7-5所示。方法2:使用Transaction-SQL語句創(chuàng)建視圖視圖的創(chuàng)建操作圖示任務(wù)實(shí)施操作2:在數(shù)據(jù)庫(student)中創(chuàng)建一個(gè)基于“班級(jí)”和“學(xué)生”表的視圖“班級(jí)_view”,要求輸出查詢院系編號(hào)、班級(jí)名稱、姓名、性別創(chuàng)建語句如下:USEStudentGOCREATEVIEW班級(jí)_viewASSELECT院系編號(hào),班級(jí)名稱,姓名,性別FROM班級(jí)表,學(xué)生表WHERE班級(jí)表.班級(jí)編號(hào)=學(xué)生表.班級(jí)編號(hào)GO執(zhí)行“SELECT*FROM班級(jí)_view”,輸出結(jié)果如圖7-6所示。視圖的創(chuàng)建操作圖示7.3任務(wù)3:視圖的更改與刪除7.3.1相關(guān)知識(shí)視圖的更改與刪除1.視圖更改與刪除的方法修改和刪除視圖也有兩種方式:使用SQLServerManagementStudio管理工具和使用T-SQL語句。2.視圖更改與刪除的語法使用Transact-SQL的ALTERVIEW語句修改視圖的語法結(jié)構(gòu)和參數(shù)說明如下:基本語法:ALTERVIEW[schema_name.]View_name[(column[,…n])][WITH<view_attribute>[,…n]]ASselect_statement[;][WITHCHECKOPTION]<view_attribute>::={[ENCRYPTION][SCHEMABINDING] }修改視圖后,你可以更改其名稱,或者修改其定義,而無需刪除再重新創(chuàng)建該視圖。刪除再重新創(chuàng)建視圖將造成與該視圖關(guān)聯(lián)的權(quán)限丟失。(1)ALTERVIEW:修改先前創(chuàng)建的視圖,這包括索引視圖。(2)Schema_name:是視圖所屬架構(gòu)的名稱。(3)View_name:是要更改的視圖。相關(guān)知識(shí)視圖的更改與刪除(4)Column:為要構(gòu)成指定視圖的一列或多列的名稱(用逗號(hào)分隔)(5)ENCRYPTION:對sys.syscomment中包含ALTERVIEW語句文本的項(xiàng)進(jìn)行加密。(6)SCHEMABINDING:將視圖綁定到基礎(chǔ)表的架構(gòu)(7)AS:指定視圖要執(zhí)行的操作(8)VIEW_METADATA:指定SQLServer實(shí)例將向DB-Library、ODBC和OLEDBAPI返回有關(guān)視圖的元數(shù)據(jù)信息(9)select_statement:定義視圖的SELECT語句(10)WITHCHECKOPTION:強(qiáng)制針對視圖執(zhí)行的所有數(shù)據(jù)修改語句,都必須符合在statement中設(shè)置的條件。使用Transact-SQL的DROPVIEW語句刪除視圖的語法結(jié)構(gòu)和參數(shù)說明如下:基本語法:DORPVIEWview_nameDROPVIEW 從當(dāng)前數(shù)據(jù)庫中刪除一個(gè)或多個(gè)視圖7.3.2任務(wù)實(shí)施1.視圖的更改任務(wù)實(shí)施方法1.使用“SMSS”管理工具創(chuàng)建視圖視圖的更改與刪除步驟1:在SQLServerManagementStudio中,選擇要修改的視圖單擊右鍵,選擇“設(shè)計(jì)”可進(jìn)行相應(yīng)的視圖修改,按“保存”按鈕退出修改。如圖7-7所示。操作圖示任務(wù)實(shí)施操作1:修改視圖“班級(jí)_view”,增加輸出學(xué)生的出生日期,執(zhí)行語句如下:ALTERVIEW班級(jí)_viewASSELECT班級(jí)名稱,院系編號(hào),姓名,性別,出生日期FROM班級(jí)表,學(xué)生表WHERE班級(jí)表.班級(jí)編號(hào)=學(xué)生表.班級(jí)編號(hào)GO執(zhí)行“SELECT*FROM班級(jí)_view”,輸出結(jié)果如圖7-8所示:方法2:使用T-SQL語言修改視圖操作圖示視圖的更改與刪除任務(wù)實(shí)施步驟1:打開“SQLServerManagementStudio”管理工具,選擇要?jiǎng)h除視圖的數(shù)據(jù)庫。2.視圖的刪除任務(wù)實(shí)施方法1:使用“SSMS”管理工具刪除視圖操作圖示視圖的更改與刪除步驟2:單擊數(shù)據(jù)庫(Student)下的“視圖”節(jié)點(diǎn),選擇要?jiǎng)h除的視圖對象,單擊右鍵,選擇“刪除”或直接按“delete”鍵完成刪除操作,如圖7-9所示。任務(wù)實(shí)施如要在數(shù)據(jù)庫中刪除“班級(jí)_view”的視圖,需要執(zhí)行如下語句:DROPVIEW班級(jí)_view刷新視圖列表,會(huì)發(fā)現(xiàn)“班級(jí)_view”視圖已經(jīng)被刪除。方法2:使用T-SQL語句刪除視圖視圖的更改與刪除7.4任務(wù)4:視圖的管理與維護(hù)7.4.1任務(wù)實(shí)施視圖的管理與維護(hù)查看視圖信息1.查看視圖的定義信息操作圖示如果視圖定義時(shí)沒有加密,那么可以獲得有關(guān)視圖定義的信息,查詢視圖的方式和查詢普通表一樣,我們可以在相關(guān)視圖上單擊右鍵,選擇“屬性”進(jìn)行查看。如圖7-10所示。也可以使用“sp_helpview_班級(jí)”查看視圖的基本信息,如圖7-11所示操作圖示任務(wù)實(shí)施視圖的管理與維護(hù)2.視圖加密視圖在創(chuàng)建和修改的過程中,可以選擇是否進(jìn)行視圖加密,通過加密視圖,可以保護(hù)視圖創(chuàng)建邏輯,同時(shí)防止在SQLServer復(fù)制過程中發(fā)布視圖。以下將演示如何創(chuàng)建加密視圖。操作1:在數(shù)據(jù)庫(Student)中創(chuàng)建一個(gè)基于“課程(course)”表的視圖“course_view”,該視圖要求輸出所有課程的課程名(course_Name),課程類型(course_Type),課程簡介(course_Des),并對視圖進(jìn)行加密。創(chuàng)建語句如下:USEStudentGOCREATEVIEWview_課程WITHENCRYPTIONASSELECT課程名稱,課程類型,課程描述FROM課程表GO進(jìn)行加密的視圖圖標(biāo)中將出現(xiàn)一把小鎖“

”,表示視圖已經(jīng)加密。任務(wù)實(shí)施視圖的管理與維護(hù)操作2:使用“sp_helptext”顯示加密與未加密視圖的文本信息:在查詢編輯器中輸入“sp_helptextview_課程”。由于視圖“view_課程”為加密,所以顯示結(jié)果如圖7-12所示:操作圖示7.5任務(wù)4:視圖的使用7.5.1相關(guān)知識(shí)視圖的使用利用視圖不但能夠方便的進(jìn)行查詢,還可以通過視圖對其關(guān)聯(lián)的基表自由地進(jìn)行插入、修改、刪除和更新數(shù)據(jù)等操作,但在操作過程中應(yīng)該注意以下幾點(diǎn):視圖不維護(hù)單獨(dú)的數(shù)據(jù)副本。如果視圖在定義過程中使用了WITHCHECKOPTION子句,則所有在視圖上執(zhí)行的數(shù)據(jù)修改都必須符合定義視圖的SELECT語句中所設(shè)置的條件。修改視圖中的數(shù)據(jù)時(shí),應(yīng)該對視圖所引用基表的特定行所做的操作進(jìn)行修改,不能在一個(gè)語句中對多個(gè)基表進(jìn)行就修改,每次修改只能影響一個(gè)基表。不能修改通過計(jì)算或函數(shù)運(yùn)算得到的字段。在基表的列中修改的數(shù)據(jù)必須符合對這些列的約束,如非空、字符等等,當(dāng)進(jìn)行刪除數(shù)據(jù)操作時(shí),也必須符合相關(guān)基表的約束值,才能操作成功。不能修改GROUPBY、HAVING或DISTINCT子句影響的列。對視圖的更新后將影響基表。7.5.2任務(wù)實(shí)施視圖的使用步驟1:在“SQLServerManagementStudio”中展開需要插入記錄的數(shù)據(jù)庫中的視圖,單擊右鍵,選擇“編輯前200行”如圖7-13所示。操作圖示步驟2:在彈出的窗口中可以對同一個(gè)基表中的數(shù)據(jù)進(jìn)行插入、修改、刪除等操作。方法1:使用“SSMS”管理工具向視圖中插入數(shù)據(jù)任務(wù)實(shí)施使用視圖插入數(shù)據(jù)和在基表中插入數(shù)據(jù)一樣,都可以用INSERT語句來實(shí)現(xiàn),插入數(shù)據(jù)的操作,基本語法如下:INSERTINTOtable_name(列1,列2,...)VALUES(值1,值2,....)操作1:在數(shù)據(jù)庫“Student”中,基于院系表創(chuàng)建視圖“view_院系”。包含院系編號(hào),院系名稱,院系主任等信息。操作2:在“view_院系”視圖中添加一條記錄院系編號(hào)為“05”,院系名稱為“機(jī)械系”,院系主任為“方明”。執(zhí)行語句如下:INSERTINTOView_院系VALUES('05','機(jī)械系','方明')輸出結(jié)果如圖7-14所示:方法2:使用T-SQL語句插入數(shù)據(jù)視圖的使用操作圖示任務(wù)實(shí)施視圖的使用在視圖中更新數(shù)據(jù)與在基表中更新一樣,但是當(dāng)視圖是來自多個(gè)基表中的數(shù)據(jù)時(shí),與插入一樣每次跟新只能更新一個(gè)基表中的數(shù)據(jù)。視圖的數(shù)據(jù)更新同樣有運(yùn)用“SQLServerManagementStudio”管理工具和T-SQL語言兩種方式。其中管理工具運(yùn)用與插入相同,以下將介紹如何使用T-SQL語言完成數(shù)據(jù)更新。操作1:將“view_課程”視圖中的課程“Java程序設(shè)計(jì)”更改為“C程序設(shè)計(jì)”使用語句如下:useStudentGoUPDATEview_課程SET課程名稱='C程序設(shè)計(jì)'WHERE課程名稱='Java程序設(shè)計(jì)'刷新視圖,顯示輸出結(jié)果如圖7-15所示。操作圖示子任務(wù)使用UPDATE更新數(shù)據(jù)任務(wù)實(shí)施視圖的使用通過視圖刪除數(shù)據(jù)與通過基表刪除數(shù)據(jù)的方式一樣,當(dāng)視圖中的數(shù)據(jù)被刪除后,基表中的數(shù)據(jù)也被相應(yīng)刪除,同時(shí)如果視圖同時(shí)基于多個(gè)基表時(shí),則不允許刪除數(shù)據(jù)操作。視圖的數(shù)據(jù)刪除同樣有運(yùn)用“SQLServerManagementStudio”管理工具和T-SQL語言兩種方式。其中管理工具運(yùn)用與插入相同,以下將介紹如何使用T-SQL語言完成數(shù)據(jù)刪除。操作1:將“view_院系”視圖中的“機(jī)械系”的數(shù)據(jù)進(jìn)行刪除,使用語句如下:DELETEFROMview_院系WHERE院系名稱='機(jī)械系'刷新視圖,顯示輸出結(jié)果如圖7-16所示。操作圖示子任務(wù)使用DELETE刪除數(shù)據(jù)項(xiàng)目小結(jié)本項(xiàng)目主要介紹了視圖的一些概念、分類、優(yōu)點(diǎn)和使用視圖需要注意的一些方面,并通過使用“SQLServerManagementStudio”管理工具和Transact-SQL語法,講解了視圖的創(chuàng)建、修改、刪除和視圖信息的查詢、視圖的加密、視圖數(shù)據(jù)的修改等操作。其中CREATEVIEW命令用于創(chuàng)建視圖,ALTERVIEW命令用于視圖的修改、DROPVIEW命令用于視圖的刪除。同時(shí)在視圖定義過程中應(yīng)該使用視圖加密以保證數(shù)據(jù)安全。此外在視圖的數(shù)據(jù)修改過程中應(yīng)該注意視圖的修改不能同時(shí)針對多張基表。通過對視圖的使用,可以在實(shí)際的數(shù)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論