一、概述
Mysql 5.0 版本后开始引入视图。视图本身是一个虚拟表,不存放任何数据。在使用 sql 语句访问视图的时候,他返回的数据都是在查询过程中从其他表动态生成的。
二、使用视图
1、创建视图
CREATE VIEW comic_view as SELECT comic_id,name,pen_name from comic;
2、创建之后,我们就可以像使用正常数据表一样使用视图。
SELECT comic_id,name,pen_name from comic_view limit 100;
三、可更新视图
可更新视图是指可以通过更新这个视图来更新视图涉及的相关表。只要指定了合适的条件,就可以更新、删除、甚至想视图中写入数据。
如果视图定义中包含了Group By、UNION、聚合函数、以及其他一些特殊情况,就不能被更新。
更新视图的查询也可以是一个关联语句,但是有一个限制,被更新的列必须在同一个表中。另外,所有使用临时表算法实现的视图都无法被更新。(有合并算法和临时表算法两种算法)
四、视图优缺点
1、优点:
第一个显著优点就是它简化了操作。此时我们完全不用关心视图是怎么处理数据的,我们只需要知道如何使用这个结果集即可,视图相当于一个中间层。
第二个显著优点就是它更加安全。比如我们可以让用户有权去访问某个视图,但是不能访问原表,这样就可以起到保护原表中某些数据的作用。另外,权限是无法细致到某一个列的,通过视图,则很容易实现。
第三个显著优点就是降低耦合。假如我们以后要修改原表的结构,那么我们可以通过修改视图的定义即可,而不用修改应用程序,对访问者是不会造成影响的,一般来说,这样代价会更小。
2、缺点:
(1)实际数据表的表结构修改了,则必须手动修改相关视图。
(2)应对大数据时,可能会降低性能。
注:如果使用的数据库类型是Mysql,因为 Mysql 目前并不支持物化视图,所以针对分布式、大数据的程序,都不建议使用视图。
原文链接:https://www.haveyb.com/article/59