视图
虚拟表 由一个或多个表通过查询而定义的,将查询定义保存起来,实际不包括数据。
与表的区别:表存储数据的地方,视图存储的是查询语句(索引视图除外,它被具体化了,一旦修改数据,本表的数据也改变)
作用:简化查询,增加数据的保密性,在安全性上的到保证。
缺点:只是简化查询,并不提高查询速度,增加了维护成本。
分类:标准视图:存储查询定义,没有存储数据。
索引视图(被具体化了的视图,创建了索引,显著提高查询性能,聚合了很多行的查询,不太适合经常更新基本数据集)
分类视图:一台或多台服务器间水平连接一组成员表的分区数据。
创建视图脚本
标准视图
create view 视图名
as
T-SQL语句
列:
--标准视图
create view Vuserbinfos
as
select u.*,b.Bname from UserInfo u inner join BInfo b on u.Bid=b.Bid
go
--使用 与使用表一样
select * from Vuserbinfos
索引视图
create view 视图名 with schemabinding
as
select UID,UserName,Userage,Usersex from dbo.UserInfo
列:
--索引视图 (被具体化了的视图) 适合于聚合多行数据的情况下
--数据是实际存在,删除视图里的数据,基础表里的数据也被删除。
--索引视图里不要去删除修改数据
create view Vuesrinfos_indx with schemabinding
as
select UID,UserName,Userage,Usersex from dbo.UserInfo
go
select * from Vuesrinfos_indx
--索引视图创建唯一聚集索引
create Unique clustered index uq_Vuesrinfos_indx on Vuesrinfos_indx(UID)
go
分区视图
create view 视图名
AS
select * from TEST_1
UNION ALL
select * from TEST_2
列:
--分区视图 (表结构相同的不同区的表)
create view VtestInfos
AS
select * from TEST_1
UNION ALL
select * from TEST_2
GO
select * from VtestInfos
标准视图和分区视图 都不允许删除和修改里面的数据,会影响基础表。
索引视图,删除了,基础表数据也被删除 慎用