SQL Server-檢視的建立、修改和刪除以及通過檢視操作表的資料
檢視是關係資料庫系統中的重要機制。使用者通過檢視能以多種角度觀察資料。檢視可以對資料提供一定程度的安全保護。本篇主要介紹用SQL語言實現檢視的建立、刪除的方法和步驟,以及通過檢視向基本表中插人、更新、刪除資料的方法和步驟。
檢視
檢視是從一個或幾個基本表匯出的表,它與基本表不同,是一個虛表。資料庫中只儲存檢視的定義而不儲存檢視中的資料,從檢視中可訪問的資料應存放在原來的基本表中。檢視一經定義,就可以和基本表一樣被查詢﹑被刪除,我們也可以在一個檢視之上再定義新的檢視,但對檢視的更新(增加﹑刪除﹑修改)操作則有一定的限制。
檢視的作用
- 檢視能夠簡化使用者的操作。
- 檢視使使用者能從多個角度看待同一資料。
- 檢視對重構資料庫提供了一定程度的邏輯獨立性。
- 檢視能夠對機密資料提供安全保護。
可更新檢視的限制
- 若檢視是由兩個以上的基本表匯出的,則次檢視不允許更新。
- 若檢視的欄位來自欄位表示式或常數,則不允許對此檢視執行INSERT和UPDATE操作,但允許執行DELETE操作。
- 若檢視的欄位來自集函式,則此檢視不允許更新。
- 若檢視定義中含有GROUP BY子句,則此檢視不允許更新。
- 若檢視中含有DISTINCT短語,則此檢視不允許更新。
- 若檢視定義中有巢狀查詢,並且內層查詢FROM子句中涉及的表也是匯出該檢視的基本表,則此檢視不允許更新。
- 一個不允許更新的檢視上定義的檢視也不允許更新。
建立檢視
1.互動式建立一個檢視。
要求:檢視名稱是VIEW_S,其資料來源於一個基本表S,包含的資料有SNO、SN、SEX、DEPT。
啟動SQL Server Management Studio,在“物件資源管理器”中,展開資料庫jxsk,右擊“檢視”,在開啟的快捷選單中選擇“新建檢視”選項,即可開啟一個“新增表”對話方塊。
在“新增表”對話方塊中,選擇表S,單擊“新增”按鈕,關閉“新增表”對話方塊,返回建立檢視視窗,可看到建立檢視視窗中增加了表S。
在表S中,分別選中欄位SNO,SN,SEX,DEPT左側的複選框,表示選中這些欄位,將它們加人檢視中,觀察下面窗格中的變化。
單擊檢視設計器工具欄中的“!”按鈕﹐執行檢視定義。視窗下面的表格資料即為檢視的內容。
單擊工具欄中的儲存按鈕,開啟對話方塊,輸入檢視名稱VIEW_S。單擊“確定”按鈕即可儲存。
關閉“建立檢視視窗”。在“物件資源管理器”中,展開資料庫jxsk 中的“檢視”節點, VIEW_S即是剛建立的檢視,另一個為系統檢視資料夾。
2.互動式建立一個成績表檢視。
要求:檢視名稱是VIEW_SCORETABLE,其資料來源於兩個基本表C和SC及一個已有的檢視VIEW_S,包含的資料有來自檢視VIEW_S的欄位SN、來自表C的欄位CN,來自表SC的欄位SCORE。
開啟SQL Server Management Studio,在“物件資源管理器”中,展開資料庫jxsk,右擊“檢視”,在開啟的快捷選單中選擇“新建檢視”選項。開啟“新增表”視窗。
在“新增表”視窗中,選擇表C和表SC,單擊“新增”命令,可看到建立檢視視窗上部分窗格中增加了表C和表SC,並檢視下面SQL窗格中語句的變化。以此類推,在“檢視”選項卡中新增檢視VIEW_S。單擊“關閉”按鈕﹐關閉“新增表”視窗,返回建立檢視視窗。
在檢視VIEW_S中,選中欄位SN左側的複選框,表示選中欄位SN。以此類推,在表C中選擇CN,在表SC中選擇SCORE。觀察下面SQL窗格中語句的變化。
選中檢視VIEW_S中的SNO並將其拖曳到表SC中的SNO,檢視下面SQL窗格中語句的變化;同樣選中表SC中的CNO並拖曳到表C中的CNO,檢視下面SQL窗格中語句的變化。
單擊檢視設計器工具欄中的“!”按鈕,執行檢視定義。視窗下面的表格資料即是檢視的內容。
單擊工具欄中的儲存按鈕,開啟對話方塊,輸入檢視名稱VIEW_SCORETABLE,單擊“確定”按鈕。關閉“建立檢視視窗”。
在“物件資源管理器”中,展開資料庫jxsk中的“檢視”節點,右窗格中的VIEW_SCORETABLE即是剛建立的檢視。
3.使用create語句建立一個課程表檢視。
要求:檢視名稱是VIEW_CTABLE,其資料來源於兩個基本表T、C,包含的資料有來自資料庫表T的欄位TN,來自資料庫表C的欄位CN。
create view VIEW_CTABLE as select TN, CN from T, TC, C where T.TNO = TC.TNO and C.CNO = TC.CNO
修改檢視
1.使用互動式方法把檢視VIEW_S中的欄位SNO刪掉。
在“物件資源管理器”中,展開資料庫jxsk中的“檢視”節點。右擊VIEW_S,在快捷選單中選擇“設計”選項,開啟設計檢視視窗。在此視窗中可檢視視窗中各部分內容的關係。
在資料庫表S中,取消選中SNO左端的複選框,即取消此項選擇,然後檢視視窗下部分列表和SQL語句的變化。
單擊檢視設計器工具欄中的“!”按鈕,執行對檢視定義進行改變的操作。視窗下部分表格中顯示的是刪除SNO後檢視中的資料。
2.使用alter語句給檢視VIEW_CTABLE增加一個課時欄位:CT tinyint。
alter view VIEW_CTABLE as select TN, CN, CT from T, C, TC where T.TNO = TC.TNO and C.CNO = TC.CNO
通過檢視修改資料庫資料
1.互動式通過修改檢視VIEW_S中的資料來實現對其基本表S中資料的修改。
在SQL Server Management Studio 中, 分別開啟檢視VIEW_S和資料庫表S的內容,可見兩個表中“李華”記錄的各欄位資料相同。
在檢視VIEW_S 中,把“李華”的系名DEPT“軟工”改為“計算機”。單擊“!”按鈕﹐執行進行這個改變的操作。單擊表S視窗,使其成為當前視窗,檢視到“李華”的 DEPT欄位值仍然是“軟工”,單擊按鈕“!”﹐再檢視“李華”的DEPT欄位值時已變為“計算機”,與當前的檢視VIEW_S中的改變一致。
2.對檢視VIEW_S執行INSERT語句,檢視此檢視的基本表S中資料的變化。
insert into VIEW_S values ('古明', '男', '自動化')
執行語句後系統提示錯誤。這是因為,檢視VIEW_S來源於基本表S,但卻不包含基本表S的主鍵SNO,主鍵的性質是不許取空值。當向檢視中插人一行新資料時,因沒有SNO欄位值,所以﹐從檢視到基本表對映插入此行資料時﹐表S中的SNO欄位值自動取空值,這是主鍵所不允許的,故執行失敗。
3.修改檢視VIEW_S的定義,使其包含基本表S的主鍵欄位SNO,再對VIEW_S 執行插入操作。
alter view VIEW_S as select SNO, SN, SEX, DEPT from S
go
insert into VIEW_S values ('S8', '古明', '男', '自動化')
go
4.用delete語句對檢視VIEW_S執行DELETE操作,檢視此檢視的基本表S中資料的變化。
delete VIEW_S where SNO = 'S8'
刪除檢視
1.互動式刪除檢視VIEW_S。
啟動SQL Server Management Studio。在“物件資源管理器”中,展開資料庫jxsk中的“檢視”節點中的內容即為資料庫jxsk 中的檢視內容。
右擊檢視VIEW_S,在開啟的快捷選單中選擇“刪除”選項,開啟“刪除物件”對話方塊。
檢視“要刪除的物件”列表,單擊要刪除的檢視VIEW_S,單擊“確定”按鈕,檢視VIEW_S即被刪除。
在“物件資源管理器”中,重新整理資料庫 jxsk中的“檢視”節點,可看到檢視VIEW_S已經不存在。
2.使用drop語句刪除檢視VIEW_CTABLE。
drop view VIEW_CTABLE