注意:视图只适用于MySQL5及之后的版本
- 重用SQL语句。
- 简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。
- 使用表的组成部分而不是整张表。
- 保存数据。可以给用户授予表的特定部分的访问权限而不是整张表的访问权限。
- 更改数据格式和表示。视图可以返回底层表的表示和格式不同的数据。
在创建视图之后,可以使用与基本表相同的方式操作视图。可以对视图执行select操作,过滤和排序数据,将视图联结到和其他视图或表,甚至能添加和更新数据(添加和更新数据存在某些限制)。更重要的是视图仅仅是用来查看存储在别处数据的一种设施。视图本身不包含数据,因为它们返回的数据是从其他表中检索出来的。在添加或更改这些表中的数据时,视图将返回改变过的数据。
性能问题:因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需的任何一个检索。如果使用多个联结和过滤创建的视图或者嵌套了视图,可能会发现性能反而下降的很厉害。因此,在部署使用了大量视图的应用前,应该进行测试。
- 与表一样,视图必须唯一命名(不能与表名或其他视图名一样)
- 可创建视图的数目没有限制
- 创建视图必须有足够的访问权限
- 视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个新的视图
- order by可以用在视图中,但如果select中也包含了order by,那么视图中的order by将会被覆盖
- 视图不能创建索引,也不能有关联的触发器或默认值
- 视图可以和表一起使用。
基本语法
//创建视图
CREATE VIEW viewname AS SELECT 。。。。
//查看创建视图
SHOW CREATE VIEW viewname
//删除视图
DROP VIEW viewname
//更新视图,如果视图不存在则创建视图,否则替换原有视图
CREATE OR REPLACE VIEW
利用视图简化复杂的联结
用视图重新格式化检索出的数据
使用视图过滤不想要的数据
使用视图计算字段
通过视图更新数据
通常视图是可以更新的(即可以使用INSERT、UPDAtE和DELETE)。但视图是基于基本表而言的,使用对视图增加或删除行,实际是对其基表的更新。
一般视图用于检索数据,而不用于更新数据。
视图为虚拟表。它包含的不是数据而是根据需要检索数据的查询。视图提供了一种MySQL的SELECT语句层次的封装,可以简化数据处理以及重新格式化基础数据或保存基础数据。
PS:本文章来源于《MySQL必知必会》