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

首頁 > 數據庫 > SQL Server > 正文

11、SQL Server 視圖、數據庫快照

2024-08-31 00:54:05
字體:
來源:轉載
供稿:網友
11、SQL Server 視圖、數據庫快照

SQLServer視圖

什么是視圖?

視圖是一個虛擬的表,內容源于查詢的結果集。只有當視圖上建立了索引后,才會具體化。

視圖可以篩選和處理數據,而不是直接訪問基礎表。如:創建一個視圖,只展示源表中的幾列數據,無需授予用戶訪問基礎表的權限,取而代之的是授予視圖訪問權限。

為什么用視圖?

1、如果是比較復雜的多表聯查,可以將這些復雜的語句放在視圖中完成,而我們只需要使用簡單的語句查詢視圖即可。

2、保護基礎表,敏感列無法被檢索出。

3、對視圖添加索引,可以提高效率。

創建視圖

1、可以使用SSMS工具創建,視圖->新建視圖->選表選列 ->輸入名字保存即可。

2、使用T-SQL創建

if exists(select * from sysobjects where name = 'newView') --如果存在刪除    drop view newViewgocreate view newView --創建視圖asselect 學號=id,姓名=name,年齡=age from studentgoselect * from newView

關于order by

if exists(select * from sysobjects where name = 'newView') --如果存在刪除    drop view newViewgocreate view newView --創建視圖asselect top 10 學號=id,姓名=name,年齡=age from studentorder by id desc --如果使用order關鍵字 則必須指定topgoselect * from newView

修改視圖

alter view newViewasselect top 20 * from studentorder by id desc --如果使用order關鍵字 則必須指定topgo

更新架構

--剛剛修改的視圖用的是 *  查詢的是全部列--此時修改基礎表架構alter table student add mail varchar(20)--這時源表已經更新架構,但是視圖并沒有改變 需要調用系統存儲過程更新一下EXEC sp_refreshview studentView--這時 新的列才會被加進來

更新視圖

對視圖進行增、刪、改操作,其實就是修改源表。但是由于諸多限制(如由多表聯查出的視圖,只檢索出個別字段,但是插入的時候有些源表上的值是非空的就會出問題),一般不修改視圖。

所以更新源表即可更新視圖。

數據庫快照

數據庫快照是某一時間點的源數據庫的只讀靜態視圖,可以用來恢復數據庫。

使用數據庫快照必須與源數據庫在相同的服務器實例,并且不能對源數據庫進行刪除、分離、或還原操作。

使用數據庫快照

--源表中數據use webDBgoselect * from student

if exists(select * from sys.databases where name = 'webDB_DBSS')drop database webDB_DBSS --存在則刪除gocreate database webDB_DBSS --創建數據庫快照on(    name = webDB,    filename='d:/webDB_DBSS.ss' --注意后綴.ss) --如果有多個文件需要一一指出as snapshot of webDBgo

--修改源數據庫數據use webDBgoupdate student set name='偉大' where id = 10 --查詢源數據庫數據select * from student where id = 10 --查詢快照數據use webDB_DBSSgoselect * from student where id = 10 

修改源數據庫,快照數據庫并未發生改變。

--修改student表架構alter table webDB.dbo.student add [address] varchar(20)select * from webDB.dbo.student--快照中依然沒有select * from webDB_DBSS.dbo.student  --刪除源數據庫student表drop table webDB.dbo.newTable --查詢數據庫快照該表 依然存在select * from webDB_DBSS.dbo.newTable

從快照恢復數據到快照創建時刻

restore database webDBfrom database_snapshot='webDB_DBSS'goselect * from webDB.dbo.student --修改的值被改回select * from webDb.dbo.newTable --被刪除的表 改回

以上得知:任何創建快照之后的修改數據都將被改回!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 墨玉县| 田阳县| 博客| 宜兰市| 综艺| 清水河县| 崇州市| 尼玛县| 历史| 外汇| 潼南县| 获嘉县| 漳浦县| 千阳县| 卢氏县| 淮北市| 长岛县| 芷江| 临沧市| 苍山县| 南郑县| 溧水县| 钦州市| 宾川县| 景谷| 抚顺县| 饶河县| 绍兴县| 志丹县| 新蔡县| 寿光市| 宜兴市| 景洪市| 龙川县| 定远县| 丰顺县| 尼玛县| 延川县| 金川县| 柯坪县| 庆城县|