首页 > 代码库 > Mysql视图

Mysql视图

1.介绍

  视图跟表有很多相似的特定,可以对进行视图读操作,特定的情况下也可以对视图指向的数据进行insert,delete,update。但是视图和表不同的是视图并不是真正的存放数据,视图是一张虚拟的表,可以把不同的表关联起来,能够提高SQL语句的复用性和安全性。

2.语法

  CREATE  [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]  VIEW  view_name  [(属性列表)]  

    AS  SELECT  [columns]  FROM  [WITH [CASCADED | LOCAL] CHECK OPTION]

  其中可选参数ALGORITHM有三种,分别为UNDEFINED,MERGE,TEMPTABLE。

    (1)UNDEFINED:Mysql将自动选择算法

    (2)MERGE:先将视图中的SELECT语句和外部SELECT VIEW ... 的SELECT进行合并然后再查询,系统默认值

    (3)TEMPTABLE:先执行视图内部的SELECT语句,然后再执行SELECT VIEW ... 中的SELECT语句

  属性列表表示查询结果返回的列名称,可选参数,默认和表的列名一致

  WITH [CASCADED | LOCAL] CHECK OPTION 可选参数,CASCADED表示更新视图时要满足所有视图的条件,而LOCAL表示满足本身定义条件即可

3.实例

  (1)创建视图时没有使用WITH CHECK OPTION

  技术分享

  技术分享

   技术分享

  可以看出,可以随意地update 或者 insert 记录,不需要满足name like ‘%c‘条件

  (2)增加了WITH CHECK OPTION

  技术分享

  这时候如果要对book_view进行update或者insert就要满足name LIKE ‘%s%‘

  (3)WITH CASCADED CHEKC OPTION 和 WITH LOCAL CHECK OPTION的区别

  技术分享

  LOCAL只检查本视图的条件,而CASCADED会检查所有视图的条件

4.参考资料

  WITH CHECK OPTION : http://blog.csdn.net/xinyuan_java/article/details/51424651

Mysql视图