视图(VIEW)

“从 SQL 的角度来看视图就是一张表”

视图和表到底有什么不同呢?区别只有一个,那就是“是否保存了实际的数据”

通常,我们在创建表时,会通过 INSERT 语句将数据保存到数据库之中,而数据库中的数据实际上会被保存到计算机的存储设备(通常是硬盘)中。因此,我们通过 SELECT 语句查询数据时,实际上就是从存储设备(硬盘)中读取数据,进行各种计算之后,再将结果返回给用户这样一个过程。

但是使用视图时并不会将数据保存到存储设备之中,而且也不会将数据保存到其他任何地方。实际上视图保存的是 SELECT 语句。我们从视图中读取数据时,视图会在内部执行该 SELECT 语句并创建出一张临时表。

视图的优点

  •  由于视图无需保存数据,因此可以节省存储设备的容量
  • 可以将频繁使用的 SELECT 语句保存成视图,这样就不用每次都重新书写了

视图中的数据会随着原表的变化自动更新。视图归根到底就是SELECT 语句,所谓“参照视图”也就是“执行 SELECT 语句”的意思,因此可以保证数据的最新状态。这也是将数据保存在表中所不具备的优势。

创建视图的方法:注意不要少了AS!

CREATE VIEW 视图名称(<视图列名1>, <视图列名2>, ……)
AS
<SELECT语句>

视图的限制

  • 定义视图时不能使用ORDER BY子句
  • 对视图进行更新

为什么不能使用 ORDER BY 子句呢?这是因为视图和表一样,数据行都是没有顺序的。实际上,有些 DBMS 在定义视图的语句中是可以使用 ORDER BY 子句的A,但是这并不是通用的语法。因此,在定义视图时请不要使用 ORDER BY 子句。

如果定义视图的 SELECT 语句出现某些条件,那么这个视图就不能被更新。

  • ① SELECT 子句中使用 DISTINCT
  • ② FROM 子句中有多张表
  • ③ 使用了 GROUP BY 子句
  • ④ 使用了 HAVING 子句

删除视图

  • DROP VIEW 视图名称(<视图列名1>, <视图列名2>, ……)
原文地址:https://www.cnblogs.com/philipchan/p/14322753.html