sqlserver——视图
數(shù)據(jù)庫(kù)中的視圖是一個(gè)虛擬表。同真實(shí)的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù),行和列數(shù)據(jù)用來(lái)自由定義視圖和查詢所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)產(chǎn)生。本篇將通過(guò)一些實(shí)例來(lái)介紹視圖的概念,視圖的作用,創(chuàng)建視圖,查看視圖,修改視圖,更新和刪除視圖等SQL?Server的數(shù)據(jù)庫(kù)知識(shí)。
一、概述
視圖是從一個(gè)或者多個(gè)表導(dǎo)出的,它的行為與表非常相似,但視圖是一個(gè)虛擬表,在視圖中可以使用SELECT語(yǔ)句查詢數(shù)據(jù),以及使用insert、update和delete語(yǔ)句修改記錄,對(duì)于視圖的操作最終轉(zhuǎn)化為對(duì)基本數(shù)據(jù)表的操作。視圖不僅可以方便操作,而且可以保障數(shù)據(jù)庫(kù)系統(tǒng)的安全性。
?視圖一經(jīng)定義便存儲(chǔ)在數(shù)據(jù)庫(kù)中,與其相對(duì)應(yīng)的數(shù)據(jù)并沒(méi)有像表數(shù)據(jù)那樣在數(shù)據(jù)庫(kù)中在存儲(chǔ)一份,通過(guò)視圖看到的數(shù)據(jù)只是存放在基本表中的數(shù)據(jù)。可以對(duì)其進(jìn)行增刪該查,通過(guò)視圖對(duì)數(shù)據(jù)修改,基本表數(shù)據(jù)也對(duì)應(yīng)變化,反之亦然。
二、分類
:標(biāo)準(zhǔn)視圖:標(biāo)準(zhǔn)視圖組合了一個(gè)或多個(gè)表中的數(shù)據(jù),可以獲得使用視圖中的大多數(shù)好處,包括重點(diǎn)將放在特定的數(shù)據(jù)上及簡(jiǎn)化數(shù)據(jù)操作。
索引視圖:索引視圖是被具體化了的視圖,即它已經(jīng)經(jīng)過(guò)計(jì)算并存儲(chǔ)。可以為視圖創(chuàng)建索引,對(duì)視圖創(chuàng)建一個(gè)唯一的聚集索引。索引視圖可以顯著提高某些類型查詢的性能,索引視圖尤其適于聚合許多行的查詢,但它們不太適于經(jīng)常更新的基本數(shù)據(jù)集。
分區(qū)視圖:
分區(qū)視圖在一臺(tái)多多臺(tái)服務(wù)器間水平連接一組成員表的分區(qū)數(shù)據(jù),這樣,數(shù)據(jù)看上去如同來(lái)自一個(gè)表。連接本地同一個(gè)SQL?Server實(shí)例中的成員表的視圖是一個(gè)本地區(qū)分視圖。
?
三、優(yōu)點(diǎn)和作用
3.1.簡(jiǎn)單化
?看到的就是需要的,視圖不僅可以簡(jiǎn)化用戶對(duì)數(shù)據(jù)的理解,也可以簡(jiǎn)化對(duì)它們的操作,那些經(jīng)常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的每次操作指定全部的條件。
3.2.安全性
?視圖可以作為一種安全機(jī)制。通過(guò)視圖用戶只能查看和修改他們所能看到的數(shù)據(jù)。其它或表既不可見(jiàn)也不可以訪問(wèn)。如果某一用戶想要訪問(wèn)視圖的,必須授予其訪問(wèn)權(quán)限。視圖所引用表的訪問(wèn)權(quán)限與視圖權(quán)限的設(shè)置互不影響。
3.3.邏輯數(shù)據(jù)獨(dú)立性
?視圖可以幫助用戶屏蔽真實(shí)表結(jié)構(gòu)變化帶來(lái)的影響。
四、
視圖語(yǔ)法結(jié)構(gòu)
--語(yǔ)法 CREATE VIEW view_nameASSELECT column_name(s) FROM table_name WHERE condition測(cè)試數(shù)據(jù)準(zhǔn)備
use sample_db; create table studentTable(id int identity(1,1)primary key,name varchar(20),gender char(2),age int, ) insert into studentTable (name,gender,age) values('劉備','男',28),('張飛','男',24),('關(guān)羽','男',26);創(chuàng)建視圖
--創(chuàng)建視圖 if (exists (select * from sys.objects where name = 'student_view'))drop view student_view go --student_view()不實(shí)用參數(shù),默認(rèn)為基礎(chǔ)表中的列名稱 create view student_view as select name,age from studentTable where age>24; --執(zhí)行視圖 select * from student_view;修改視圖
alter view view_name as select ...... where ......-?
查看視圖的信息
- 使用sp_help存儲(chǔ)過(guò)程查看視圖的定義信息
- 使用sp_helptext系統(tǒng)存儲(chǔ)過(guò)程使用來(lái)顯示規(guī)則,默認(rèn)值,未加密的存儲(chǔ)過(guò)程,用戶定義函數(shù),觸發(fā)器或視圖的文本,語(yǔ)法
?
轉(zhuǎn)載于:https://www.cnblogs.com/javier520/p/10851047.html
總結(jié)
以上是生活随笔為你收集整理的sqlserver——视图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【PAT】B1055 集体照(25 分)
- 下一篇: 工厂方法 Factory Method