zoukankan      html  css  js  c++  java
  • 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 命令,那么 如果不使用加密,那么 修改后的视图,将变成非加密的.

  • 相关阅读:
    0223_模拟2011
    0223_模拟2011
    0223_模拟2011
    0223_模拟2011
    12c DG broker DMON自动重启过程分析
    12c DG broker DMON自动重启过程分析
    12c DG broker DMON自动重启过程分析
    12c DG broker DMON自动重启过程分析
    CITA架构设计
    跨链合约示例
  • 原文地址:https://www.cnblogs.com/soundcode/p/2679999.html
Copyright © 2011-2022 走看看