什麼是視圖
大家都知道,我們國家現在“神七”上天了。從美國的月球登月開始,人類上天不再是神話。聽說,在美國,你只要出幾十萬美元,您就可以上一次月球進行太空旅行,所以,我們相信:在不久的將來,上天旅行將走進我們百姓的生活,那是一件多麼新鮮神奇的事情啊。好多美國人上天后,他們用望遠鏡觀看我們的地球,結果看到的地球形狀各不相同。有的說象綠色的橘子,有的說象白色的大鴨梨,有的說象藍色的大西瓜。這是為什麼呢?你肯定會說:那是因為從不同的角度(視角),看到的不同形狀而已。那麼,從不同的視角,將看到不同的“圖形”,這就是我們馬上講到的視圖。我們的學員資訊也是如此:對於學員的資訊和成績,老師比較關心學員成績以及是否參加考試,包括姓名、學號、筆試、機試、是否通過等。班主任則比較關心學生檔案,包括姓名、學號、性別和年齡。
其實,視圖就是一張虛擬表,它表示一張表的部分資料或多張表的綜合資料,其結構和資料是建立在對錶的查詢基礎上
• 視圖中並不存放資料,而是存放在視圖所引用的原始表(基表)中
• 同一張原始表,根據不同使用者的不同需求,可以建立不同的視圖
視圖的用途
– 篩選表中的行
– 防止未經許可的使用者訪問敏感性資料
– 降低資料庫的複雜程度
– 將多個物理資料庫抽象為一個邏輯資料庫
使用視圖可以給使用者和開發人員帶來很多好處。具體為:
1.對終端使用者的好處
(1)結果更容易理解
建立視圖時,可以將列名改為有意義的名稱,使使用者更容易理解列所代表的內容。在視圖中修改列名不會影響基表的列名。
(2)獲得資料更容易
很多人對SQL不太瞭解,因此對他們來說建立對多個表的複雜查詢很困難。可以通過建立視圖來方便使用者訪問多個表中的資料。
2.對開發人員的好處
(1)限制資料檢索更容易
開發人員有時需要隱藏某些行或列中的資訊。通過使用視圖,使用者可以靈活地訪問他們需要的資料,同時保證同一個表或其他表中的其他資料的安全性。要實現這一目標,可以在建立視圖時將要對使用者保密的列排除在外。
(2)維護應用程式更方便
調試視圖比調試查詢更容易。跟蹤視圖中過程的各個步驟中的錯誤更為容易,這是因為所有的步驟都是視圖的組成部分。
如何建立視圖
• 使用T-SQL語句建立視圖的文法
CREATE VIEW view_name
AS
<select語句>
IF EXISTS (SELECT * FROM sysobjects WHERE /*檢測是否存在*/
name = 'view_stuInfo_stuMarks')
DROP VIEW view_stuInfo_stuMarks /*刪除視圖*/
GO
CREATE VIEW view_stuInfo_stuMarks /*建立視圖*/
AS
SELECT 姓名=stuName,學號=stuInfo.stuNo,
筆試成績 =writtenExam, 機試成績=labExam,
平均分=(writtenExam+labExam)/2
FROM stuInfo LEFT JOIN stuMarks
ON stuInfo.stuNo=stuMarks.stuNo
GO
SELECT * FROM view_stuInfo_stuMarks /*使用視圖*/
從一個或者多個表或視圖中匯出的虛擬表,其結構和資料是建立在對錶的查詢基礎上的。
理論上它可以像普通的物理表一樣使用,例如增、刪、改、查等,修改視圖中的資料實際上是修改
未經處理資料表。因為修改視圖有許多限制,所以在實際開發中一般視圖僅做查詢使用。