ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2022-07-31 09:02:54  阅读:170  来源: 互联网

标签:语句 name 修改 视图 Server 数据表 SQL


更新记录
转载请注明出处: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有