1. 程式人生 > 其它 >SQL Server-檢視的建立、修改和刪除以及通過檢視操作表的資料

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