视图是基于 SQL 语句的结果集的可视化的表,一种虚拟存在的表。
视图相对于普通的表的优势主要包括以下几项。
简单: 使用视图的用户完全不需要关心后面对应的表的结构、 关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。
安全: 使用视图的用户只能访问他们被允许查询的结果集, 对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。
数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
MySQL 视图的定义有一些限制,例如,在 FROM 关键字后面不能包含子查询,这和其他数据库是不同的,如果视图是从其他数据库迁移过来的,那么可能需要因此做一些改动,可以将子查询的内容先定义成一个视图,然后对该视图再创建视图就可以实现类似的功能了。
视图的可更新性和视图中查询的定义有关系,以下类型的视图是不可更新的。
包含以下关键字的 SQL 语句:
聚合函数 (SUM、 MIN、 MAX、 COUNT 等) 、 DISTINCT、 GROUP BY、HAVING、UNION 或者 UNION ALL。
常量视图。
SELECT 中包含子查询。
JION。
FROM 一个不能更新的视图。
WHERE 字句的子查询引用了 FROM 字句中的表。
第一个语句就是创建一个名叫view1的视图,因为视图也是一种表,不能与已有的表(视图)出现重名。
第二个语句就是查询视图,和平常从表中查询数据是一样的。
视图的数据是依托于真实表的数据的,所以真实表的修改,相应视图也会修改。修改视图,相应的真实表的数据也会修改。