概述
定义
视图是一张虚拟存在的表,它并非是在数据库中真实存在的,它所使用的数据是在视图被使用时动态生成的。总的来说,视图是一条select语句所返回的结果集,因此对于视图的使用主要落在创建select语句上面。
视图所具有的优势
简单:使用视图的用户不需要关心视图背后复杂的表的结构,关联关系,以及筛选条件,视图就是已经过滤好的复合条件的结果集。
安全:使用视图的用户只能访问允许他们访问的结果集,表的访问限制不能到具体的行或者列,但是通过视图可以实现。
数据独立:一旦视图被确定了那么后面表的结构变化就会对使用者屏蔽,列的增加对视图没有影响,列的更改或者减少也可以通过对视图的修改轻松改变。
视图基本操作
创建视图:
创建语法
CREATE [OR REPLACE] [AL GORITHM={UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name[(column_list)]
AS select_statement
[WITH[CASCADED|LOCAL] CHECK OPTION]
获取数据:
视图创建以及查看数据:
通过视图更新数据:
注意:由于视图中的数据并非静态而是动态生成的,因此对于视图中数据的更新实际上是对于源表中数据的更新
可以将视图作为一张真正的表来进行查询操作,所有能够在真正的表中使用的查询都能够用于视图
修改视图
ALTER [AL GORITHM={UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name[(colum_list)]
AS select_statement
[WITH[CASCADED|LOCAL] CHECK OPTION]
选项:
WITH[CASCADED|LOCAL] CHECK OPTION 决定了是否允许更新数据使记录不满足视图的条件
LOCAL: 只要满足本视图的条件就允许更新
CASCADED: 必须满足所有针对该视图的所有条件才可以更新。\该选项为默认值
注意:尽管可以通过视图更新数据,但是我们仍然不建议通过视图进行这些操作,因为视图的作用在于方便查询而非更新。
查看视图
从MySQL5.1版本开始,通过show tables 命令不仅仅可以显示表的信息,也会显示视图的信息,同时不再有一个专门的命令用于查看视图,在层级上视图与表同级。
SHOW TABLES 命令显示表与视图
同样,在使用SHOW TABLE STATUS 命令的时候,不但可以显示表的信息,同时也可以显示视图的信息。
删除视图
DROP VIEW [IF EXISTS] view_name