数据库-视图
定义和特点
根据查询(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/

浙公网安备 33010602011771号