zoukankan      html  css  js  c++  java
  • (4.22)sql server视图/索引视图概念

    (4.22)sql server视图

    关键词:sql server视图、索引视图

    SQL Server视图是由SQL语句组成的逻辑数据库对象。它也可以称为由SQL语句组成的虚拟表,该SQL语句可能包含来自一个或多个物理表的数据。通常会创建视图

    - 安全

      将用户限制为某些表中的特定行或列,而不是所有数据。

    - 便于使用

      为连接多个表的复杂/繁琐查询创建视图。有时,对视图使用单个选择很容易,而不是复杂的select语句。

    - 聚合

      有时,将多个表连接到单个视图中的数据(总和/最大/最小/计算列)很容易汇总。

      可以通过在视图列上创建唯一的聚簇索引来创建索引视图。索引视图可以提高与数据库索引相同的存储在数据库中的查询性能。但是,它有一定的局限性

    - 由于使用SCHEMABINDING选项创建视图,因此无法修改基础表和列。

      

    - 索引视图不能有外连接,TOP,COUNT和其他关键字(http://msdn.microsoft.com/en-us/library/ms191432.aspx

    - 视图上的索引需要与表上的索引相同的维护。

    - 它不能引用来自不同数据库的视图或表

    - 它可能不适合具有频繁插入,更新和删除的OLTP系统。

    使用T-SQL脚本修改视图

    语法:

    --声明数据库引用
    use 数据库名;
    go

    --修改视图
    alter view [架构名][.]视图名
    with encryption,schemabinding,view_metadata
    as 
    select_statement
    [check option];
    go

    语法解析:

    schema_name
    视图所属架构的名称。

    view_name
    要更改的视图。

    column
    将成为指定视图的一部分的一个或多个列的名称(以逗号分隔)。

    encryption
    适用范围: SQL Server 2008 到 SQL Server 2017 和 Azure SQL Database。

    加密 sys.syscomments 中包含 ALTER VIEW 语句文本的项。 WITH ENCRYPTION 可防止视图作为 SQL Server 复制的一部分进行发布。

    schemabinding
    将视图绑定到基础表的架构。 如果指定了 SCHEMABINDING,则不能以可影响视图定义的方式来修改基表。 必须首先修改或删除视图定义本身,然后才能删除要修改的表的相关性。 使用 SCHEMABINDING 时,select_statement 必须包含所引用的表、视图或用户定义函数的两部分名称 (schema.object)。 所有被引用对象都必须在同一个数据库内。

    不能删除参与使用 SCHEMABINDING 子句创建的视图的表或视图,除非该视图已被删除或更改,而不再具有架构绑定。 否则, 数据库引擎将引发错误。 另外,如果对参与具有架构绑定的视图的表执行 ALTER TABLE 语句,而这些语句又会影响视图定义,则这些语句将会失败。

    view_metadata
    指定为引用视图的查询请求浏览模式的元数据时, SQL Server 实例将向 DB-Library、ODBC 和 OLE DB API 返回有关视图的元数据信息,而不返回基表的元数据信息。 浏览模式的元数据是 数据库引擎实例返回到客户端 DB-Library、ODBC 和 OLE DB API 的额外元数据。 如果使用此元数据,客户端 API 将可以实现可更新客户端游标。 浏览模式的元数据包含结果集中的列所属的基表的相关信息。

    对于使用 VIEW_METADATA 创建的视图,浏览模式的元数据在描述结果集内视图中的列时,将返回视图名,而不返回基表名。

    使用 WITH VIEW_METADATA 创建视图时,如果该视图具有 INSERT 或 UPDATE INSTEAD OF 触发器,则视图的所有列(timestamp 列除外)都可更新。 有关详细信息,请参阅 CREATE VIEW (Transact-SQL) 中的“注释”部分。

    as
    视图要执行的操作。

    select_statement
    定义视图的 SELECT 语句。

    with check option
    要求对该视图执行的所有数据修改语句都必须符合 select_statement 中所设置的条件。

  • 相关阅读:
    《linux/unix设计思想》读后感
    webserver ZooKeeper Cluster
    OS + RedHat 6.3 x64 / sshd X11 /
    nGrinder SocketTest.groovy
    OS + Centos7.6 gdm / xmanager xstart
    OS + CentOS 7 / VirtualBox 6.0 / VMware-Workstation-Full-15.1.0
    浅谈MySQL Replication(复制)基本原理
    MySQL存储引擎比较
    explain SQL语句性能检测
    看看JavaScript中void(0)的含义
  • 原文地址:https://www.cnblogs.com/gered/p/10647412.html
Copyright © 2011-2022 走看看