視圖是從一個或多個表中導(dǎo)出來的,它的行為與表非常相似鳄乏,但視圖是一個虛表。在視圖中可以使用SELECT棘利、INSERT橱野、UPDATE和DELETE語句,對視圖的操作最終都會轉(zhuǎn)換對基本表的操作善玫。
視圖的概念:視圖是原始數(shù)據(jù)庫數(shù)據(jù)的一種轉(zhuǎn)換水援,是查看表中數(shù)據(jù)的另一種方式∶├桑可以將視圖看作一個移動的窗口蜗元,通過它可以看到想要的數(shù)據(jù)。
一.視圖的作用
(1)簡單化:看到的就是需要的系冗。簡化用戶對數(shù)據(jù)的理解及操作奕扣。經(jīng)常被查詢的可以定義成視圖,可以不用每次都設(shè)置查詢條件掌敬。
(2)安全性:通過視圖的用戶只能查看和修改他們所能見到的數(shù)據(jù)惯豆。
(3)獨立性:視圖可幫助用戶屏蔽真實表結(jié)構(gòu)變化帶來的影響池磁。
二.視圖分類
SQL Server的視圖可分為三類,分別是:標(biāo)準(zhǔn)視圖楷兽、索引視圖和分區(qū)視圖地熄。
(1)標(biāo)準(zhǔn)視圖:組合了一個或多個表中的數(shù)據(jù)。
(2)索引視圖:索引視圖是被具體化了的視圖芯杀,即他已經(jīng)經(jīng)過計算并存儲端考。索引視圖可以顯著提高某些類型查詢的性能。
(3)分區(qū)視圖:分區(qū)視圖在一臺或多臺服務(wù)器間水平連接一組成員表中的分區(qū)數(shù)據(jù)瘪匿。
三.創(chuàng)建視圖
(1)創(chuàng)建視圖的語法規(guī)則
- 視圖定義中的SELECT子句不能包括下列內(nèi)容:
- COMPUTE或COMPUTE BY子句跛梗。
- ORDER BY 子句,除非在SELECT語句的選擇列表中也有一個TOP子句棋弥。
- INTO關(guān)鍵字核偿。
- OPTION子句。
- 引用臨時表或變量表顽染。
CREATE VIEW view_name
AS
SELECT * FROM table
--單表創(chuàng)建視圖
CREATE VIEW view_dept
AS
SELECT * FROM dept
--多表創(chuàng)建視圖
CREATE VIEW view_dept
AS
SELECT * FROM dept d
RIGHT JOIN employee e ON d.d_no=e.dept_no
(2)修改視圖
修改視圖的語法和創(chuàng)建視圖的語法非常相似漾岳,就是將CREATE語句改為ALTER語句。
ALTER VIEW view_dept
AS
SELECT * FROM dept WHERE d_no<50
(3)重命名視圖名稱
--sp_rename 'old_name','new_name'
sp_rename 'view_dept','view_dept_employee'
(4)使用系統(tǒng)存儲過程查看視圖信息
sp_help view_dept_employee
四.通過視圖更新數(shù)據(jù)
通過視圖更新的時候都是轉(zhuǎn)到基本表進(jìn)行更新的粉寞,如果對視圖增加或者刪除記錄尼荆,實際上是對其基本表增加或刪除記錄。
通過視圖更新數(shù)據(jù)的方法有三種唧垦,分別是INSERT捅儒、UPDATE、DELETE振亮。通過視圖更新數(shù)據(jù)需要注意以下三點巧还。
- 修改視圖中的數(shù)據(jù)時,不能同時修改兩個或多個基本表坊秸。
- 不能修改視圖中通過計算得到的字段麸祷。
3.執(zhí)行UPDATE或DELETE命令時,無法用DELETE命令刪除數(shù)據(jù)褒搔,若使用UPDATE命令則應(yīng)當(dāng)與INSERT命令一樣阶牍,被更新的列必須屬于同一個表。
--更新
UPDATE view_dept SET d_name = 'gou' WHERE d_no=50
--插入
INSERT INTO view_dept VALUES(60,'SSSS','DongGuan')
--刪除
DELETE FROM view_dept WHERE d_no=60
五.刪除視圖
--語法
DROP VIEW view_name
DROP VIEW view_dept