Sql server 为什么使用视图而不是Sql语句

Sql server 为什么使用视图而不是Sql语句,sql-server,Sql Server,可能重复: 写视图而不是写sql语句的原因是什么?是的,有很多原因 安全性:当您想要限制某个用户可以从表中看到的内容时,您可以只授予对视图的访问权,而不是对基础表的访问权 简单性:需要对子查询使用查询/视图时。或者当您不想重复多次输入同一复杂查询时 物化视图(如果您的RDBMS支持):可以提高某些分析查询(数据仓库)的性能 分区:如果您想要一个仅表示其他关系(表)子集的关系(视图)。也就是说,您可以创建发票\u 2011视图,仅使用表发票中的2011年发票 更新: 关于这个例子,他问: 假设您

可能重复:


写视图而不是写sql语句的原因是什么?

是的,有很多原因

  • 安全性:当您想要限制某个用户可以从表中看到的内容时,您可以只授予对视图的访问权,而不是对基础表的访问权
  • 简单性:需要对子查询使用查询/视图时。或者当您不想重复多次输入同一复杂查询时
  • 物化视图(如果您的RDBMS支持):可以提高某些分析查询(数据仓库)的性能
  • 分区:如果您想要一个仅表示其他关系(表)子集的关系(视图)。也就是说,您可以创建
    发票\u 2011
    视图,仅使用表
    发票
    中的2011年发票
  • 更新:

    关于这个例子,他问:

    假设您有这个表:

    create table customers (
       customer_id integer primary key,
       name varchar(200) not null,
       dob date
    );
    
    您希望用户
    bart
    只查看1980年以前出生的客户的
    name
    dob
    。您不能将
    客户
    表的访问权限授予
    巴特
    ,因为他可以看到表中存储的任何内容

    而是创建一个视图:

    create view customers_1980 as 
    select name, dob from customers
     where dob < '1980-01-01';
    

    这样,
    bart
    将只能访问
    customers
    表的受限视图子集。

    在您希望向用户提供受限访问权限的地方,使用视图是合适的

    可以将经常使用的查询创建到索引视图中,从而为您提供高性能提升


    请通读这篇文章

    你好,帕布罗,非常感谢,但是你能用一个关于安全的例子向我解释一下如何给出。用一个例子更新了这个问题。
    grant select on customers_1980 to bart;