視圖

視圖簡介
       視圖是虛擬的表,它只包含表的一部分。這是由表派生的
 
視圖的優勢
一、  爲用戶集中數據
二、  簡化數據庫查詢
三、  簡化用戶權限管理
四、  方便數據的導出
五、  視圖做爲一個臨時的表能夠與實際表進行關聯操做
 
視圖的分類
一、  標準視圖
二、  索引視圖
三、  分區視圖
 
建立視圖
       Create view <視圖名>
       As <查詢語句>
       with check point
查詢語句:視圖數據的來源,符合查詢語句的結果將放入視圖中
With check point:以視圖進行UPDATEINSERTDELETE操做時要保證更新、插入和刪除的行知足視圖定義中的謂詞條件【查詢語句中的條件表達式】
 
例一:建立一個視圖,該視圖用於顯示 2006 1 1 之後簽定的全部合同
       Create view all-contract
       As
       Select * from contract where date<’ 2006-1-1
 
修改視圖
       alter view <視圖名>
       As <查詢語句>
例二:修改上述視圖,顯示 2006-1-1 之後的全部信息
       Alter view all-contract
       As
       Select * from contract where date>’ 2006-1-1
 
刪除視圖
       Drop view all-contract
 
加密視圖
       Create view all-contract
       With encryption
       As
       Select * from contract
視圖權限管理
一、  使用DENY能夠添加某一權限
二、  使用REVOKE取消添加的權限
 
例三:禁止任何用戶來刪除視圖中的數據;也就是說給此視圖添加拒絕刪除的權限
       Deny delete on all-contract to public
例四:取消對用戶拒絕刪除的權限
       Revoke delete on all-contract to public
 
【視圖的綜合應用】
       假定某進出口公司的數據庫採用分佈式的結構,各分公司的數據經過廣域網存儲在在各分公司當地的服務器上。公司總部須要實時查詢各公司的數據,所以須要創建一個視圖,對於各分公司的數據進行彙總查詢,查詢者不須要知道各分公司的狀況,以及有多少個分公司的數據庫,他只須要執行一個事先創建好的視圖便可
一、  建立一個名稱叫ORDER的表
Create table order
(
Id varchar(10) not null,
Customer varchar(30) not null,
Orderdate datetime not null,
subCompanyName varchar(30)  not null,
volume money not null
)
二、  使用聯合查詢來查詢各分公司的數據,將數據放入建立的視圖中
Create view order-view
As
Select * from bj.selling.dbo.order
Union
Select * from sh.selling.dob.order
【遠程數據對象的表示法】
數據庫服務器.數據庫名稱.架構名稱.數據庫對象
三、  在公司本地直接查詢視圖中的內容,便可得到各分公司的數據
Select * from order-view
相關文章
相關標籤/搜索