Mysql 视图
视图是一种简单的数据查询机制。不同于表,视图不涉及数据存储,因此不用担心视图会充满磁盘空间。
执行create view 语句时,数据库服务器只是简单地存储视图的定义为将来使用。如果不执行查询就不会检索或存储任何数据。一旦视图被建立,用户就能把它当作一个表来查询。
从用户的角度来看,视图看起来确实像一个表。如果想知道视图中有哪些可用列,可以使用describe命令查询。
查询视图时可以自由使用select语句中的任何子句,包括group by,having,order by。
为什么使用视图?
1.1数据安全
表中数据包含敏感信息,不能对用户放开权限。
1.2数据聚合
报表程序通常需要聚合数据,视图是实现这一功能的好办法,使数据像已经被预聚合并存储在数据库一样。
1.3隐藏复杂性
为终端用户屏蔽复杂性。
1.4连接分区数据
允许设计者更改基础数据结构而不必强迫所有数据库用户修改他们的查询。
可更新的视图
Mysql ,Oracle,SQL server数据库都允许用户在遵守特定规则的前提下通过视图修改数据。
对Mysql而言,满足如下条件即可更新:
-
没有使用聚合函数
-
视图没有使用group by或having子句
-
Select 或from子句中不存在子查询,并且where子句中的任何子查询都不引用from子句中的表
-
视图没有使用union ,union all,和distinct
-
From子句包括不止一个表或可更新视图
-
如果有不止一个表或视图,那么from 子句只使用内连接