MySQL(视图篇)

一、概述

  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 目前并不支持物化视图,所以针对分布式、大数据的程序,都不建议使用视图。