視圖簡介
視圖是虛擬的表,它只包含表的一部分。這是由表派生的
視圖的優勢
一、
爲用戶集中數據
二、
簡化數據庫查詢
三、
簡化用戶權限管理
四、
方便數據的導出
五、
視圖做爲一個臨時的表能夠與實際表進行關聯操做
視圖的分類
一、
標準視圖
二、
索引視圖
三、
分區視圖
建立視圖
Create view <視圖名>
As <查詢語句>
【with check point】
查詢語句:視圖數據的來源,符合查詢語句的結果將放入視圖中
With check point:以視圖進行UPDATE、INSERT和DELETE操做時要保證更新、插入和刪除的行知足視圖定義中的謂詞條件【查詢語句中的條件表達式】
例一:建立一個視圖,該視圖用於顯示
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