文章出處

    之前一直都不知道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具體能干些什么呢?

  1. simplify data access for query writers. (簡化數據訪問)
  2. managing security and protecting sensitive data.(權限管理和保護敏感數據)
  3. grant permissions exclusively to views, rather than to the underlying tables (不直接分配表的權限給用戶,用view來替代)
  4. expose only those columns that you wish the end user to see (可以讓終端用戶只看到他們要看的列)
  5. allow direct data updates. (允許更新數據)

View 的種類?

  1. Regular View (普通的view,我的理解就是最簡單的view定義)
    • 不要嵌套view (例如用一個view 去叫另外一個view)
    • 如果可以盡量用stored procedure來代替view.(和view對比,每一次訪問view,這個view的execution plan就會重新編譯一次)
  2. Indexed View (索引的view,和table差不多,先定義普通view,然后再加上clustered index和non-clustered index. 注意:clustered index只能有一個)
  3. Distributed Partitioned View (分布式的view,這種view用UNION ALL 把幾個不同的SQL Server的table結合在一起生成一個單獨的table)

在創建view的時候有幾條規則需要注意一下

  第一 select表達式最多只能定義1024個列

  第二 INTO, OPTION, COMPUTE, COMPUTE BY 還有引用其他表格變量都不能用

  第三 ORDER BY不能直接用,除非和TOP一起用


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()