文章出處
文章列表
之前一直都不知道VIEW有什么作用,寫程序的時候也很少遇到過,復習SQL語句的時候碰到了,就記錄下來吧。
什么是視圖?
在 SQL 中,視圖是基于 SQL 語句的結果集的可視化的表。
視圖包含行和列,就像一個真實的表。視圖中的字段就是來自一個或多個數據庫中的真實的表中的字段。我們可以向視圖添加 SQL 函數、WHERE 以及 JOIN 語句,我們也可以提交數據,就像這些來自于某個單一的表。
注釋:數據庫的設計和結構不會受到視圖中的函數、where 或 join 語句的影響。
SQL CREATE VIEW 語法
1 CREATE VIEW view_name AS 2 SELECT column_name(s) 3 FROM table_name 4 WHERE condition
注釋:視圖總是顯示最近的數據。每當用戶查詢視圖時,數據庫引擎通過使用 SQL 語句來重建數據。
查詢:
1 SELECT * FROM view_name WHERE condition
SQL 更新視圖
你可以使用下面的語法來更新視圖:
1 CREATE OR REPLACE VIEW view_name AS 2 SELECT column_name(s) 3 FROM table_name 4 WHERE condition
一次只能用CREATE或REPLACE,重新建一個(CREATE)也就是更新
SQL 撤銷視圖
您可以通過 DROP VIEW 命令來刪除視圖。
1 DROP VIEW view_name
View具體能干些什么呢?
- simplify data access for query writers. (簡化數據訪問)
- managing security and protecting sensitive data.(權限管理和保護敏感數據)
- grant permissions exclusively to views, rather than to the underlying tables (不直接分配表的權限給用戶,用view來替代)
- expose only those columns that you wish the end user to see (可以讓終端用戶只看到他們要看的列)
- allow direct data updates. (允許更新數據)
View 的種類?
- Regular View (普通的view,我的理解就是最簡單的view定義)
- 不要嵌套view (例如用一個view 去叫另外一個view)
- 如果可以盡量用stored procedure來代替view.(和view對比,每一次訪問view,這個view的execution plan就會重新編譯一次)
- Indexed View (索引的view,和table差不多,先定義普通view,然后再加上clustered index和non-clustered index. 注意:clustered index只能有一個)
- Distributed Partitioned View (分布式的view,這種view用UNION ALL 把幾個不同的SQL Server的table結合在一起生成一個單獨的table)
在創建view的時候有幾條規則需要注意一下
第一 select表達式最多只能定義1024個列
第二 INTO, OPTION, COMPUTE, COMPUTE BY 還有引用其他表格變量都不能用
第三 ORDER BY不能直接用,除非和TOP一起用
文章列表
全站熱搜