日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【SQL Server学习笔记】SQL SERVER 视图

發(fā)布時間:2025/7/14 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【SQL Server学习笔记】SQL SERVER 视图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

視圖包括:普通視圖,索引視圖,分布式分區(qū)視圖。

關(guān)于視圖的最佳實踐:

???? A、對視圖進(jìn)行性能優(yōu)化的過程和普通的select查詢語句的優(yōu)化過程是一樣的。

???? B、不要在一個視圖的定義中調(diào)用另一個視圖。

???? C、如果可能的話盡量使用存儲過程而不是視圖。因為存儲過程能重用執(zhí)行計劃,性能會有提升,存儲過程還能減少網(wǎng)絡(luò)流量,并且實現(xiàn)復(fù)制的業(yè)務(wù)邏輯,而且與視圖相比,編碼限制更少。

?

1、普通視圖

視圖允許一個select語句中最多定義1024列,不可以在視圖定義中使用某些select元素,包括into,option,compute,compute by,表變量,臨時表,在使用了top關(guān)鍵字時才能使用order by子句。

--1.1創(chuàng)建視圖 create view dbo.v_wcT as select wcId, wcV, wcDate from wcT go --1.2使用視圖 select * from dbo.v_wcT --視圖元數(shù)據(jù) --2.1視圖定義 select object_id, definition from sys.sql_modules where object_id = object_id('dbo.v_wcT') --2.2視圖的架構(gòu) select s.name, --視圖的架構(gòu) v.name --視圖的名稱 from sys.views v inner join sys.schemas s on v.schema_id = s.schema_id --2.3視圖中列的信息 select v.name, --視圖名稱 c.name --視圖中的列名 from sys.views v inner join sys.columns c on v.object_id = c.object_id --3.當(dāng)視圖引用的表對象修改后,視圖的元數(shù)據(jù)可能過時了, --如:更改了視圖中引用列的寬度,在刷新之前,元數(shù)據(jù)還是修改前的寬度 --3.1 alter table wcT alter column wcV varchar(50) not null --3.2查看元數(shù)據(jù) select v.name, c.name, c.max_length --發(fā)現(xiàn)元數(shù)據(jù)沒有變化,還是100 from sys.views v inner join sys.columns c on v.object_id = c.object_id where c.name = 'wcV' --3.3刷新視圖元數(shù)據(jù) exec sp_refreshview @viewname = 'dbo.v_wcT' --3.4再次查看元數(shù)據(jù) select v.name, c.name, c.max_length --發(fā)現(xiàn)這里已經(jīng)變?yōu)?0 from sys.views v inner join sys.columns c on v.object_id = c.object_id where c.name = 'wcV' --3.5適用于:存儲過程,觸發(fā)器,用戶定義函數(shù),視圖 exec sp_refreshsqlmodule @name = 'dbo.v_wcT' --4.修改視圖 alter view dbo.v_wcT as select wcId, wcV, wcDate from wcT where wcId > 2 go --5.1通過視圖來insert,update,delete --視圖的定義中不能有:聚合函數(shù),group by,distinct,having --只有當(dāng)基礎(chǔ)數(shù)據(jù)表對查詢編寫者不可見的時候,才應(yīng)該使用視圖來插入,更新數(shù)據(jù) insert into dbo.v_wcT(wcId,wcV,wcDate) values(8,'wc','2010-10-01') --查看新增的數(shù)據(jù) select * from wcT where wcId = 8 --5.2通過視圖刪除數(shù)據(jù) delete from dbo.v_wcT where wcId = 8 --6.1視圖加密 alter view dbo.v_wcT with encryption as select wcId, wcV, wcDate from wcT where wcId > 2 go --6.2發(fā)現(xiàn)定義是NULL select object_id, definition from sys.sql_modules where object_id = object_id('dbo.v_wcT') --7.刪除視圖 drop view dbo.v_wcT


2、索引視圖

sql server中有2個概念,一個是索引,一個是視圖。那么如果把這兩個結(jié)合起來,就是索引視圖.

原來我們都知道索引,就是按照某個字段,建立一個物理的對象,實際最在于硬盤上的數(shù)據(jù)。
而視圖,其實就是一個虛擬表,就是一個定義,實際上并不存在數(shù)據(jù),要查詢視圖,都是通過定義中的基本表來訪問數(shù)據(jù)的。

通過索引視圖,其實就是按照索引的定義,建立了一個索引,也就是把虛擬的東西,給實體化了,實體化為實際的存在于硬盤上的數(shù)據(jù)。

但是索引視圖,有不少限制條件:

比如:

轉(zhuǎn)載于:https://blog.51cto.com/yupeigu/1368096

總結(jié)

以上是生活随笔為你收集整理的【SQL Server学习笔记】SQL SERVER 视图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。