zoukankan      html  css  js  c++  java
  • SQLServer之创建视图

    视图定义

    视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。

    使用SSMS数据库管理工具创建视图

    1、连接数据库,选择数据库,展开数据库-》右键视图-》选择新建视图。

    2、在添加表弹出框-》选择要创建视图的表、视图、函数、或者同义词等-》点击添加-》添加完成后选择关闭。

    3、在关系图窗格中-》选择表与表之间关联的数据列-》选择列的其他排序或筛选条件。

    4、点击保存或者ctrl+s-》刷新视图-》查看结果。

    5、使用视图。

    使用T-SQL脚本创建视图

    语法:

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

    --判断视图是否存在,如果存在则删除
    if exists(select * from sys.views where name=视图名称)
    drop view 视图名称;
    go

    --创建视图
    create
    view

    --视图所属架构的名称。
    --[schema_name][.]

    --视图名称。 视图名称必须符合有关标识符的规则。 可以选择是否指定视图所有者名称。
    [dbo][.]视图名称

    --视图中的列使用的名称。 仅在下列情况下需要列名:列是从算术表达式、函数或常量派生的;两个或更多的列可能会具有相同的名称(通常是由于联接的原因);视图中的某个列的指定名称不同于其派生来源列的名称。 还可以在 SELECT 语句中分配列名。
    --如果未指定 column,则视图列将获得与 SELECT 语句中的列相同的名称。
    --[column]

    [with]

    --适用范围: SQL Server 2008 到 SQL Server 2017 和 Azure SQL Database。
    --对 sys.syscomments 表中包含 CREATE VIEW 语句文本的项进行加密。 使用 WITH ENCRYPTION 可防止在 SQL Server 复制过程中发布视图。
    [encryption][,]

    --将视图绑定到基础表的架构。 如果指定了 SCHEMABINDING,则不能按照将影响视图定义的方式修改基表或表。 必须首先修改或删除视图定义本身,才能删除将要修改的表的依赖关系。
    --使用 SCHEMABINDING 时,select_statement 必须包含所引用的表、视图或用户定义函数的两部分名称 (schema.object)。 所有被引用对象都必须在同一个数据库内。
    --不能删除参与了使用 SCHEMABINDING 子句创建的视图的视图或表,除非该视图已被删除或更改而不再具有架构绑定。 否则, 数据库引擎将引发错误。
    --另外,如果对参与具有架构绑定的视图的表执行 ALTER TABLE 语句,而这些语句又会影响视图定义,则这些语句将会失败。
    [schemabinding][,]

    --指定为引用视图的查询请求浏览模式的元数据时, SQL Server 实例将向 DB-Library、ODBC 和 OLE DB API 返回有关视图的元数据信息,而不返回基表的元数据信息。
    --浏览模式元数据是 SQL Server 实例向这些客户端 API 返回的附加元数据。 如果使用此元数据,客户端 API 将可以实现可更新客户端游标。 浏览模式的元数据包含结果集中的列所属的基表的相关信息。
    --对于使用 VIEW_METADATA 创建的视图,浏览模式的元数据在描述结果集内视图中的列时,将返回视图名,而不返回基表名。
    --当使用 WITH VIEW_METADATA 创建视图时,如果该视图具有 INSTEAD OF INSERT 或 INSTEAD OF UPDATE 触发器,则视图的所有列(timestamp 列除外)都可更新。 有关可更新视图的详细信息,请参阅“备注”。
    [view_metadata]

    --指定视图要执行的操作。
    as
    select_statement
    go

    示例:

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

    --判断视图是否存在,如果存在则删除
    if exists(select * from sys.views where name='view1')
    drop view view1;
    go

    --创建视图
    create
    view

    --视图所属架构的名称。
    --[schema_name][.]

    --视图名称。 视图名称必须符合有关标识符的规则。 可以选择是否指定视图所有者名称。
    dbo.view1

    --视图中的列使用的名称。 仅在下列情况下需要列名:列是从算术表达式、函数或常量派生的;两个或更多的列可能会具有相同的名称(通常是由于联接的原因);视图中的某个列的指定名称不同于其派生来源列的名称。 还可以在 SELECT 语句中分配列名。
    --如果未指定 column,则视图列将获得与 SELECT 语句中的列相同的名称。
    --column

    --with

    --适用范围: SQL Server 2008 到 SQL Server 2017 和 Azure SQL Database。
    --对 sys.syscomments 表中包含 CREATE VIEW 语句文本的项进行加密。 使用 WITH ENCRYPTION 可防止在 SQL Server 复制过程中发布视图。
    --encryption,

    --将视图绑定到基础表的架构。 如果指定了 SCHEMABINDING,则不能按照将影响视图定义的方式修改基表或表。 必须首先修改或删除视图定义本身,才能删除将要修改的表的依赖关系。
    --使用 SCHEMABINDING 时,select_statement 必须包含所引用的表、视图或用户定义函数的两部分名称 (schema.object)。 所有被引用对象都必须在同一个数据库内。
    --不能删除参与了使用 SCHEMABINDING 子句创建的视图的视图或表,除非该视图已被删除或更改而不再具有架构绑定。 否则, 数据库引擎将引发错误。
    --另外,如果对参与具有架构绑定的视图的表执行 ALTER TABLE 语句,而这些语句又会影响视图定义,则这些语句将会失败。
    --schemabinding,

    --指定为引用视图的查询请求浏览模式的元数据时, SQL Server 实例将向 DB-Library、ODBC 和 OLE DB API 返回有关视图的元数据信息,而不返回基表的元数据信息。
    --浏览模式元数据是 SQL Server 实例向这些客户端 API 返回的附加元数据。 如果使用此元数据,客户端 API 将可以实现可更新客户端游标。 浏览模式的元数据包含结果集中的列所属的基表的相关信息。
    --对于使用 VIEW_METADATA 创建的视图,浏览模式的元数据在描述结果集内视图中的列时,将返回视图名,而不返回基表名。
    --当使用 WITH VIEW_METADATA 创建视图时,如果该视图具有 INSTEAD OF INSERT 或 INSTEAD OF UPDATE 触发器,则视图的所有列(timestamp 列除外)都可更新。 有关可更新视图的详细信息,请参阅“备注”。
    --view_metadata

    --指定视图要执行的操作。
    as
    select top(10000) a.id,a.age,a.height,a.name,b.id as classid from dbo.test1 as a
    inner join dbo.test3 as b on a.classid=b.id
    where a.classid<=100
    order by a.id
    --要求对该视图执行的所有数据修改语句都必须符合 select_statement 中所设置的条件。 通过视图修改行时,WITH CHECK OPTION 可确保提交修改后,仍可通过视图看到数据。
    --with check option;
    go

    示例结果:

  • 相关阅读:
    刷题-力扣-112. 路径总和
    刷题-力扣-1137. 第 N 个泰波那契数
    刷题-力扣-101. 对称二叉树
    刷题-力扣-99. 恢复二叉搜索树
    刷题-力扣-109. 有序链表转换二叉搜索树
    刷题-力扣-108. 将有序数组转换为二叉搜索树
    刷题-力扣-111. 二叉树的最小深度
    刷题-力扣-110. 平衡二叉树
    2019春Python程序设计练习6(0423--0429)
    2019春Python程序设计练习5(0416--0422)
  • 原文地址:https://www.cnblogs.com/vuenote/p/9842579.html
Copyright © 2011-2022 走看看