国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL Server基礎之《視圖的概述和基本操作》

2024-08-31 00:54:31
字體:
來源:轉載
供稿:網(wǎng)友
SQL Server基礎之《視圖的概述和基本操作》

 數(shù)據(jù)庫中的視圖是一個虛擬表。同真實的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù),行和列數(shù)據(jù)用來自由定義視圖和查詢所引用的表,并且在引用視圖時動態(tài)產生。本篇將通過一些實例來介紹視圖的概念,視圖的作用,創(chuàng)建視圖,查看視圖,修改視圖,更新和刪除視圖等SQLServer的數(shù)據(jù)庫知識。

一:視圖的概述

 視圖是從一個或者多個表導出的,它的行為與表非常相似,但視圖是一個虛擬表,在視圖中可以使用SELECT語句查詢數(shù)據(jù),以及使用insert、update和delete語句修改記錄,對于視圖的操作最終轉化為對基本數(shù)據(jù)表的操作。視圖不僅可以方便操作,而且可以保障數(shù)據(jù)庫系統(tǒng)的安全性。

 視圖一經(jīng)定義便存儲在數(shù)據(jù)庫中,與其相對應的數(shù)據(jù)并沒有像表數(shù)據(jù)那樣在數(shù)據(jù)庫中在存儲一份,通過視圖看到的數(shù)據(jù)只是存放在基本表中的數(shù)據(jù)。可以對其進行增刪該查,通過視圖對數(shù)據(jù)修改,基本表數(shù)據(jù)也對應變化,反之亦然。

二:視圖的分類

 SQLServer的視圖可以分為3類,分別是:標準視圖,索引視圖,分區(qū)視圖

2.1.標準視圖

 標準視圖組合了一個或多個表中的數(shù)據(jù),可以獲得使用視圖中的大多數(shù)好處,包括重點將放在特定的數(shù)據(jù)上及簡化數(shù)據(jù)操作。

2.2.索引視圖

 索引視圖是被具體化了的視圖,即它已經(jīng)經(jīng)過計算并存儲。可以為視圖創(chuàng)建索引,對視圖創(chuàng)建一個唯一的聚集索引。索引視圖可以顯著提高某些類型查詢的性能,索引視圖尤其適于聚合許多行的查詢,但它們不太適于經(jīng)常更新的基本數(shù)據(jù)集。

2.3.分區(qū)視圖

 分區(qū)視圖在一臺多多臺服務器間水平連接一組成員表的分區(qū)數(shù)據(jù),這樣,數(shù)據(jù)看上去如同來自一個表。連接本地同一個SQLServer實例中的成員表的視圖是一個本地區(qū)分視圖。

三:視圖的優(yōu)點和作用

與直接從表中讀取數(shù)據(jù)相比,視圖具有一下優(yōu)點

3.1.簡單化

 看到的就是需要的,視圖不僅可以簡化用戶對數(shù)據(jù)的理解,也可以簡化對它們的操作,那些經(jīng)常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的每次操作指定全部的條件。

3.2.安全性

 視圖可以作為一種安全機制。通過視圖用戶只能查看和修改他們所能看到的數(shù)據(jù)。其它或表既不可見也不可以訪問。如果某一用戶想要訪問視圖的,必須授予其訪問權限。視圖所引用表的訪問權限與視圖權限的設置互不影響。

3.3.邏輯數(shù)據(jù)獨立性

 視圖可以幫助用戶屏蔽真實表結構變化帶來的影響。

四:視圖的基本操作和語法

4.1.創(chuàng)建視圖

--語法CREATE VIEW view_name AS    SELECT column_name(s) FROM table_nameWHERE condition

測試數(shù)據(jù)準備:

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),    ('關羽','男',26); 
--創(chuàng)建視圖if (exists (select * from sys.objects where name = 'student_view'))    drop view student_viewgo--student_view()不實用參數(shù),默認為基礎表中的列名稱create view student_view asselect name,age from studentTable where age>24;--執(zhí)行視圖select * from student_view;

查看視圖的信息

  • 使用sp_help存儲過程查看視圖的定義信息
  • 使用sp_helptext系統(tǒng)存儲過程使用來顯示規(guī)則,默認值,未加密的存儲過程,用戶定義函數(shù),觸發(fā)器或視圖的文本,語法
exec  sp_help 'student_view';exec sp_helptext 'student_view';

創(chuàng)建加密視圖:

--加密視圖if (exists (select * from sys.objects where name = 'student_encryption'))    drop view student_encryptiongocreate view student_encryptionwith encryption --加密as    select id, name, age from studentTablego--view_definition is null--查看加密視圖select * from information_schema.views where table_name like 'student_encryption';

 

  從執(zhí)行結果可看出view_definition字段為NULL

4.2.使用視圖修改基本表數(shù)據(jù)

(1).通過視圖向基本表中插入數(shù)據(jù)

--(1).通過視圖向基本表中插入數(shù)據(jù)create view stu_insert_view(編號,姓名,性別,年齡)asselect id,name,gender,age from studentTable;goselect * from studentTable;---插入一條數(shù)據(jù)insert into stu_insert_view values('曹操','男',40);----查看插入記錄之后表中的內容。select * from studentTable;   

(2).通過視圖修改基本表的數(shù)據(jù)

--(2).通過視圖修改基本表的數(shù)據(jù)--查看修改之前的數(shù)據(jù)select * from studentTable;--修改數(shù)據(jù)update student_view set age=30where name='劉備';--查看修改后的數(shù)據(jù)select * from studentTable;

(3).通過視圖刪除基本表的數(shù)據(jù)

--語法delete view_name where condition;--例子delete student_view where name ='張飛';select * from student_view;select * from studentTable;

4.3.修該視圖

--修改視圖alter view student_view asselect * from studentTable where age>26;

4.4.刪除視圖

--語法drop view view_name1,view_name2,......,view_nameN;--該語句可以同時刪除多個視圖,只要在刪除各視圖名稱之間用逗號分隔即可。drop view studentTable;

五:視圖和表的區(qū)別
  1. 視圖是已經(jīng)編譯好的SQL語句,是基于SQL語句的結果集的可視化表,而表不是;
  2. 視圖(除過索引視圖)沒有實際的物理記錄,而基本表有;
  3. 表示內容,視圖是窗口;
  4. 表占物理空間,而視圖不占物理空間,視圖只是邏輯概念的存在;
  5. 視圖是查看數(shù)據(jù)表的一種方法,可以查詢數(shù)據(jù)表中某些字段構成的數(shù)據(jù),只是一些SQL語句的集合。從安全角度說,視圖可以防止用戶接觸數(shù)據(jù)表,從而不知表結構;
  6. 表屬于全局模式的表,是實表;視圖數(shù)據(jù)局部模式的表,是虛表;
  7. 視圖的建立和刪除只影響視圖本身,不影響對應的基本表。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南汇区| 北碚区| 名山县| 双流县| 抚远县| 淳化县| 新密市| 新和县| 凉城县| 绥滨县| 微山县| 上林县| 祁阳县| 高青县| 浮梁县| 绩溪县| 寿宁县| 榆中县| 广安市| 朔州市| 宜都市| 靖安县| 慈利县| 阜城县| 平远县| 富平县| 蓝田县| 额济纳旗| 湘阴县| 梓潼县| 衡东县| 旺苍县| 施秉县| 韶山市| 翁牛特旗| 碌曲县| 鄂尔多斯市| 康马县| 平山县| 中超| 四川省|