数据库
首页 > 数据库> > SQL Server教程 - T-SQL-视图(VIEW)

SQL Server教程 - T-SQL-视图(VIEW)

作者:互联网

更新记录
转载请注明出处:https://www.cnblogs.com/cqpanda/p/16527488.html
2022年7月31日 发布。
2022年7月2日 从笔记迁移到博客。

视图说明(VIEW)

视图本质:已编译好的SQL语句
视图外在表现:一个虚拟的表或对象
视图是虚拟的表,本身不包含数据,对视图的操作和对普通表的操作一样
注意:只有当视图上建立索引之后,才会被具体化(存储到磁盘上)

视图作用(使用场景)

将多个表的指定字段组合在一个表中,或者只使用实际表的一部分数据
简化复杂的 SQL 操作,比如复杂的联结
更改数据格式和表示
将多个数据库或分布式数据库中的一个或多个表进行组合查询
对外提供虚拟表,限定用户只可以查看指定的数据,安全保密
视图可用于提供向后兼容接口来模拟曾经存在但其架构己更改的表
SQL Server复制数据和从其中复制数据时使用视图,以便提高性能并对数据进行分区

视图存在问题

性能;视图或多或少存在性能消耗,需要花费一定的时间
修改限制;部分视图不可以修改

视图和数据表的区别

(1)视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的数据表,而数据表不是。
(2)视图没有实际的物理记录,而基本表有。
(3)数据表是内容,视图是窗口。
(4)数表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在。数据表可以及时对它进行修改,但视图只能用创建的语句来修改。
(5)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以防止用户接触数据表,从而不知道表结构。
(6)数据表属于全局模式中的表,是真实表;视图属于局部模式的表,是虚拟表。
(7)视图的建立和删除只影响视图本身,不影响对应的基本表。

视图和数据表的联系

视图(View)是在基本表之上建立的数据表,它的结构(即所定义的列)和内容(即所有记录)都来自基本表,它依据基本表的存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

视图分类

标准视图:
SELECT语句集合组成的视图
一般用于整合多个表的数据

索引视图:
带有索引(聚集索引)的视图
使用索引视图可以有效提高查询的性能
适合经常查询但不经常写入的视图

分区视图:
​ 在一台或多台服务器间水平连接一组成员表中的分区数据
​ 本地连接多张表的视图就是分区视图,只不过在本地而已

系统视图:
​ 系统视图包含目录元数据

可以使用系统视图返回与SQL Server实例或在该实例中定义的对象有关的信息
比如可以查询 sys.databases 目录视图将返回实例中用户定义数据库有关的信息

创建视图

创建视图-使用SSMS

点击新建视图
image

选择需要的表:
image

编辑并保存视图
image

创建视图-使用T-SQL

CREATE VIEW [schema_name.][视图名] [列名,...]
AS
    -- SQL语句
[ WITH CHECK OPTION ]

注意:
WITH CHECK OPTION使视图符合参与视图的表、视图的约束。
视图不可以包含COMPUTE和COMPUTE BY、ORDER BY、INTO、OPTION子句,不可以引用表变量、临时变量。
视图中有INSERT/DELETE/UPDATE时,不能同时修改多个表。
不能修改视图中的计算字段。

修改视图

修改视图内容-使用T-SQL

ALTER VIEW [视图名]
AS
  -- SQL语句
[ WITH CHECK OPTION ]

修改视图名-使用T-SQL

exec sp_rename [old_view_name], [new_view_name];

修改视图中列的名称

exec sp_rename [view_name.column_name], [new_column_name];

修改和查看视图结构-使用SSMS

image

查看视图

查看视图结构-使用T-SQL

EXECUTE sp_help [视图名];
EXECUTE sp_helptext [视图名]; -- 查看VIEW定义语句

查看和编辑视图内容-使用SSMS

image

删除视图

删除视图-使用SSMS

image

删除视图-使用T-SQL

DROP VIEW [视图名];

标签:语句,name,修改,视图,Server,数据表,SQL
来源: https://www.cnblogs.com/cqpanda/p/16527488.html