sql-server视图

视图是基于结果集的可视化的表,用于简化查询,对视图的操作不会影响到数据库本身。

1.创建视图
CREATE VIEW 视图名 AS SELECT 列名表 FROM 源表名
-- 例如:
CREATE VIEW PointsTransactionsView AS
select point.*,type.[TypeName],type.[Description] 
from [dbo].[PointTypes] type join [dbo].[PointsTransactions] point
on type.Id = point.PointTypeId;
2.查看已创建视图

方法一:使用sys.views视图

SELECT * FROM sys.views;

方法二:使用SSMS(SQL Server Management Studio)

3.删除视图
DROP VIEW 视图名
-- 例如:
DROP VIEW PointsTransactionsView;
4.视图更新
sp_refreshview 视图名

因为视图是基于表的,这相当于使用存储过程来刷新了视图。

(1)当添加一个列时,因为这个列不在视图创建时要求的列中(即便创建时使用了*,也只表示那个时候的全部,并不包括这个列),是不会对视图有影响的。
但是,如果你使用*的初衷不是为了只使用当前表中全部的列,还希望当表增加新的列时视图也能增加,这时候就需要去更新视图了。

-- 例:
CREATE VIEW PointsTransactionsView AS
select point.*,type.[TypeName],type.[Description] 
from [dbo].[PointTypes] type join [dbo].[PointsTransactions] point
on type.Id = point.PointTypeId

alter table [dbo].[PointsTransactions] add [RequiredPoints] VARCHAR(10);

sp_refreshview PointsTransactionsView;

(2)因为视图来自表,所以在表中删除了视图中使用了的列(这时候没问题,因为视图不影响表),在查看视图时会报错,即便查看的仅是没删除的列。这时候就需要刷新视图。

-- 例:
alter table [dbo].[PointsTransactions] DROP column [RequiredPoints];

SELECT [Description] FROM PointsTransactionsView;

 

这个时候刷新视图,查询就正确了,删除的列也没有了。

(3)对于原表中的数据进行了更改,视图会自动更新,无需操作。 

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值