sql server 2008学习9 视图

创建简单视图:

use test
go
create view v1(视图名)
as
select name from b

 

这样视图就创建好了.

下面说下视图的本质:

当执行  select * from v1 时,  那么实质上市告诉 sql server 把执行 select name from b 语句返回的结果

给我.

 

视图就像在命令执行的查询那样运行---没有任何的预先优化过程.这意味着数据在请求和所交付的数据之间增加额额外

的一层系统开销,而视图的运行总是比 执行运行内部的sql 更慢.视图存在的理由就是---对于用户是安全或者简化的.

  • 视图可以隐藏敏感数据,
  • 作为过滤器   例子如下:
               use test
                   go
                   create view v2
                   as
                   select name from b where id=2

总结:视图实际上 只是一个用户不可见的 select语句.

更加复杂的视图:

对视图进行 insert update delete

使用 with check potion 限制插入到视图中的内容。-- 为了通过使用视图更新或者插入数据,结果行必须符合要求

以显示在视图结果中.  也就是插入或者更新的行 必须满足视图中select语句的where条件,

看创建一个视图,sql:

create view v4
as 
select name from a 
where name like 'a%'
with check option

那么现在 向视图插入一条数据:

insert into v4(name) values('ss')

那么sql 会报错:

image

因为 子句过滤了  a% 内容,而 插入的ss不符合 这个过滤的条件,所以会报错.

如果想知道某一个视图的作用,那么可以用如下方法:

1.

use  test
go
exec sp_helptext v4(视图名)
返回如下信息:
 
2.
select * from sys.sql_modules where [object_id]= object_id('v4')

结果如下:

image

 

加密视图:

新建一个加密的视图:

create view v5
with encryption
as 
select name from a 
where name like 'a%'
with check option
 
在运行
select * from sys.sql_modules where [object_id]= object_id('v5')
查看视图时:

image

definition变成了空值,无法看到视图到底做了些什么.

如果对视图使用了alter 命令,那么 如果不使用加密,那么 修改后的视图,将变成非加密的.

 

 

 

 

 

 

 

 

  1.  

转载于:https://www.cnblogs.com/Mr-Joe/archive/2012/05/09/2491592.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值