国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SQL Server基礎知識之:設計和實現(xiàn)視圖
userphoto

2010.04.27

關注

SQL Server基礎知識之:設計和實現(xiàn)視圖

作者: ddvip,  出處:IT專家網(wǎng)論壇, 責任編輯: 陳子琪, 
2010-03-26 13:00
  設計和實現(xiàn)視圖可謂是數(shù)據(jù)庫物理設計中的一個非常重要的步驟。從一般意義上說,設計和實現(xiàn)視圖應該遵循下面的一些建議和原則。

  設計和實現(xiàn)視圖可謂是數(shù)據(jù)庫物理設計中的一個非常重要的步驟。從一般意義上說,設計和實現(xiàn)視圖應該遵循下面的一些建議和原則。

  以下內容摘在文檔,我對某些重點進行了補充說明(紅色部分)

  只能在當前數(shù)據(jù)庫中創(chuàng)建視圖。 但是,如果使用分布式查詢定義視圖,則新視圖所引用的表和視圖可以存在于其他數(shù)據(jù)庫甚至其他服務器中。

  分布式視圖是可行的,但隨著SQL Server本身能力的提高,例如SQL Server 2005開始支持表分區(qū)等技術之后,分布式視圖應該盡量少用。

  所謂分布式視圖的一個最大的問題就是將表物理上分開在多個數(shù)據(jù)庫甚至服務器中,這增加了維護和查詢的難度

  視圖名稱必須遵循標識符的規(guī)則,且對每個架構都必須唯一。 此外,該名稱不得與該架構包含的任何表的名稱相同。

  一個可以借鑒的做法是:在視圖名稱之前添加一個前綴 vw

  您可以對其他視圖創(chuàng)建視圖。Microsoft SQL Server 允許嵌套視圖。但嵌套不得超過 32 層。 根據(jù)視圖的復雜性及可用內存,視圖嵌套的實際限制可能低于該值。

  一般不建議超過2層

  不能將規(guī)則或 DEFAULT 定義與視圖相關聯(lián)。

  不能將 AFTER 觸發(fā)器與視圖相關聯(lián),只有 INSTEAD OF 觸發(fā)器可以與之相關聯(lián)。

  除非萬不得已,一般不建議使用觸發(fā)器

  定義視圖的查詢不能包含 COMPUTE 子句、COMPUTE BY 子句或 INTO 關鍵字。

  很多朋友不知道:COMPUTER和COMPUTER BY語句僅僅用于一些特殊場合,用于生成總計行。大致有如下的效果

  
 
 

  該特性不能用于視圖,但可以直接用于查詢

  定義視圖的查詢不能包含 ORDER BY 子句,除非在 SELECT 語句的選擇列表中還有一個 TOP 子句。

  這個很有意思,如果要訪問所有的呢,還必須是寫TOP 100 PERCENT

  定義視圖的查詢不能包含指定查詢提示的 OPTION 子句。

  定義視圖的查詢不能包含 TABLESAMPLE 子句。

  關于TABLESAMPLE語句,大家可能也比較陌生,這是一個用于對數(shù)據(jù)進行抽樣的。它和TOP語句不同,TOP語句是有固定大小的,而TABLESAMPLE返回的數(shù)據(jù),可能多,可能少,甚至可能沒有

  我之前有一篇文章講述這個語法 http://www.cnblogs.com/chenxizhang/archive/2009/05/19/1460040.html

  不能為視圖定義全文索引定義。

  不能創(chuàng)建臨時視圖,也不能對臨時表創(chuàng)建視圖。

  在SQL Server 2005中,可以通過CTE(Common Table Expression)來實現(xiàn)該功能

  之前的版本,大致的做法是使用臨時表,表變量,函數(shù)等等

  不能刪除參與到使用 SCHEMABINDING 子句創(chuàng)建的視圖中的視圖、表或函數(shù),除非該視圖已被刪除或更改而不再具有架構綁定。另外,如果對參與具有架構綁定的視圖的表執(zhí)行 ALTER TABLE 語句,而這些語句又會影響該視圖的定義,則這些語句將會失敗。

  如果未使用 SCHEMABINDING 子句創(chuàng)建視圖,則對視圖下影響視圖定義的對象進行更改時,應運行 sp_refreshview。 否則,當查詢視圖時,可能會生成意外結果。

  如果你修改了一個表,那么如何刷新所有與該表有關的視圖呢

  http://msdn.microsoft.com/zh-cn/library/ms187821(SQL.90).ASPx

  強烈建議對某些非常重要的視圖,添加SCHEMABINDING 子句。

  

  盡管查詢引用一個已配置全文索引的表時,視圖定義可以包含全文查詢,仍然不能對視圖執(zhí)行全文查詢。

  下列情況下必須指定視圖中每列的名稱:

  視圖中的任何列都是從算術表達式、內置函數(shù)或常量派生而來。

  視圖中有兩列或多列原應具有相同名稱(通常由于視圖定義包含聯(lián)接,因此來自兩個或多個不同表的列具有相同的名稱)。

  希望為視圖中的列指定一個與其源列不同的名稱。 (也可以在視圖中重命名列。) 無論重命名與否,視圖列都會繼承其源列的數(shù)據(jù)類型。

  若要創(chuàng)建視圖,您必須獲取由數(shù)據(jù)庫所有者授予的此操作執(zhí)行權限,如果使用 SCHEMABINDING 子句創(chuàng)建視圖,則必須對視圖定義中引用的任何表或視圖具有相應的權限。

  默認情況下,由于行通過視圖進行添加或更新,當其不再符合定義視圖的查詢的條件時,它們即從視圖范圍中消失。例如,創(chuàng)建一個定義視圖的查詢,該視圖從表中檢索員工的薪水低于 $30,000 的所有行。如果員工的薪水漲到 $32,000,因其薪水不符合視圖所設條件,查詢時視圖不再顯示該特定員工。 但是,WITH CHECK OPTION 子句強制所有數(shù)據(jù)修改語句均根據(jù)視圖執(zhí)行,以符合定義視圖的 SELECT 語句中所設條件。 如果使用該子句,則對行的修改不能導致行從視圖中消失。任何可能導致行消失的修改都會被取消,并顯示錯誤。
 
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
第五章 模式對象
三分鐘,帶你徹底讀懂SQL語言!
03 SQL語言基礎
Sqlstate詳解
CREATE TRIGGER (Transact
第4章 關系數(shù)據(jù)庫語言SQL
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服