数据库-视图

定义和特点

根据查询(SELECT)语句计算或整理出来的虚拟表(属于表表达式(Table Expression))

和“派生表”“公用表达式(CTE)”的区别:持久化在数据库中

和临时表的区别:只要不显式删除,就可以重复使用

 

标准视图

存储的是SELECT语句,而不是实际的物理数据。数据行和列来自于“基表(和其他视图)”,每一次使用时动态生成

CREATE VIEW view_name[(column_1, column_2, column_3, ...)]
AS
SELECT clause

列名可以在view_name之后指定;如果不指定,就使用SELECT clause里面的列名

尽量不要使用SELECT * FROM...,因为修改基表的定义或增加列,不会自动刷新到已创建的视图 (EXEC sp_refreshview view_name)

所有列(包括:计算列)都必须有不同的列名

不同使用ORDER BY,除非是为了TOP

 

优点

(1)简化了操作,把经常使用的数据定义为视图

  我们在使用查询时,在很多时候我们要使用聚合函数,同时还要 显示其它字段的信息,可能还会需要关联到其它表,这时写的语句可能会很长,如果这个动作频繁发生的话,我们可以创建视图,这以后,我们只需要select * from view就可以啦,这样很方便。

(2)安全性,用户只能查询和修改能看到的数据

  因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以将基表中重要的字段信息,可以不通过视图给用户,视图是动态的数据的集合,数据是随着基表的更新而更新。同时,用户对视图不可以随意的更改和删除,可以保证数据的安全性。

(3)逻辑上的独立性,屏蔽了真实表的结构带来的影响

  视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。

 

缺点

(1)性能差

  数据库必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也要把它变成一个复杂的结合体,需要花费一定的时间。

(2)修改限制

  当用户试图修改视图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的视图来说,这是很方便的,但是,对于比较复杂的试图,可能是不可修改的。

文章转载自:快速开发平台– 云微平台
地址:https://www.hocode.com/

posted @ 2022-02-12 16:45  码上的飞鱼  阅读(97)  评论(0)    收藏  举报