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(视图名)
返回如下信息:
image
 
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 命令,那么 如果不使用加密,那么 修改后的视图,将变成非加密的.

posted @   左正  阅读(212)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
点击右上角即可分享
微信分享提示