在本教程中,您将了解MySQL视图,我们将解释并演示MySQL如何实现视图。
MySQL 5.x 版本之后支持数据库视图。 在MySQL中,视图的几乎特征符合SQL:2003标准。 MySQL以两种方式处理对视图的查询:
- 第一种方式,MySQL会根据视图定义语句创建一个临时表,并在此临时表上执行传入查询。
- 第二种方式,MySQL将传入查询与查询定义为一个查询并执行组合查询。
MySQL支持版本系统的视图。每次视图被更改或替换时,视图的副本将在驻留在特定数据库文件夹的arc
(archive)文件夹中备份。备份文件的名称为view_name.frm-00001
。如果再次更改视图,MySQL将创建一个名为view_name.frm-00002
的新备份文件。
MySQL允许基于其他视图创建视图。在视图定义的SELECT语句中,可以引用另一个视图。
MySQL视图的限制
不能在视图上创建索引。当使用合并算法的视图查询数据时,MySQL会使用底层表的索引。对于使用诱惑算法的视图,当您针对视图查询数据时,不会使用索引。
在MySQL 5.7.7之前版本,是不能在SELECT
语句的FROM
子句中使用子查询来定义视图的。
如果删除或重命名视图所基于的表,则MySQL不会发出任何错误。但是,MySQL会使视图无效。 可以使用CHECK TABLE
语句来检查视图是否有效。
一个简单的视图可以更新表中数据。基于具有连接,子查询等的复杂SELECT语句创建的视图无法更新。
MySQL不像:Oracle,PostgreSQL等其他数据库系统那样支持物理视图,MySQL是不支持物理视图的。