什麼是視圖:
視圖(view):從一個或幾個基本表中根據使用者需要而做成一個虛表
1:視圖是虛表,它在儲存時只儲存視圖的定義,而沒有儲存對應的資料
2:視圖只在剛剛開啟的一瞬間,通過定義從基表中搜集資料,並展現給使用者
視圖與查詢的區別:
視圖和查詢都是用由sql語句組成,這是他們相同的地方,但是視圖和查詢有著本質區別:
它們的區別在於:
1:儲存上的區別:視圖儲存為資料庫設計的一部分,而查詢則不是.
2:更新限制的要求不一樣
要注意:因為視圖來自於表,所以通過視圖可以間接對錶進行更新,我們也可以通過update語句對錶進行更新,但是對視圖和查詢更新限制是不同的,以下我們會知道雖然通過視圖可以間接更新表但是有很多限制.
3:排序結果:通過sql語句,可以對一個表進行排序,而視圖則不行。比如:建立一個含有order by子句的視圖,看一下可以成功嗎。
視圖的優點:
為什麼有了表還要引入視圖呢。這是因為視圖具有以下幾個優點:
1:能分割資料,簡化觀點。可以通過select和where來定義視圖,從而可以分割資料基表中某些對於使用者不關心的資料,使使用者把注意力集中到所關心的資料列.進一步簡化瀏覽資料工作
2:為資料提供一定的邏輯獨立性。 如果為某一個基表定義一個視圖,即使以後基本表的內容的發生改變了也不會影響“視圖定義”所得到的資料
3:提供自動的安全保護功能。 視圖能像基本表一樣授予或撤消訪問許可權
4:視圖可以間接對錶進行更新,因此視圖的更新就是表的更新
視圖的安全性
視圖的安全性可以防止未授權使用者查看特定的行或列,是使用者只能看到表中特定行的方法如下:
1 在表中增加一個標誌使用者名稱的列;
2 建立視圖,是使用者只能看到標有自己使用者名稱的行;
3 把視圖授權給其他使用者。
邏輯資料獨立性
視圖可以使應用程式和資料庫表在一定程度上獨立。如果沒有視圖,應用一定是建立在表上的。有了視圖之後,程式可以建立在視圖之上,從而程式與資料庫表被視圖分割開來。視圖可以在以下幾個方面使程式與資料獨立:
1 如果應用建立在資料庫表上,當資料庫表發生變化時,可以在表上建立視圖,通過視圖屏蔽表的變化,從而應用程式可以不動。
2 如果應用建立在資料庫表上,當應用發生變化時,可以在表上建立視圖,通過視圖屏蔽應用的變化,從而使資料庫表不動。
3 如果應用建立在視圖上,當資料庫表發生變化時,可以在表上修改視圖,通過視圖屏蔽表的變化,從而應用程式可以不動。
4 如果應用建立在視圖上,當應用發生變化時,可以在表上修改視圖,通過視圖屏蔽應用的變化,從而資料庫可以不動。
視圖的建立和管理
視圖的建立
1:通過sql語句
格式:create view 視圖名 as select 語句
試一試:分別建立關於一個表或多個表的視圖[因為視圖可以來自於多表]
2:通過企業管理器
說明:
1:在完成視圖的創立之後,就可以像使用基本表一樣來使用視圖
2:在建立視圖時,並非所有的select子查詢都可用,如:compute和compute by,order by[除非與top一起連用]
3:但在查詢時,依然都可以用在建立時禁用的select子查詢
4:在視圖建立時,必須為沒有標題列指定標題[思考:能否不用select語句來建立一個視圖]
視圖的刪除:
1:通過sql語句:drop view 視圖名
2:通過企業管理器
說明:與刪除表不同的是,刪除視圖後只是刪除了視圖了定義,並沒有刪除表中的資料.[查看相關性]
修改視圖的定義
1:通過企業管理器
2:通過sql語句:
格式:alter view 視圖名 as 新的select語句
瀏覽視圖資訊 sp_helptext 視圖名 [查看視圖建立的語句]