首页 > 代码库 > 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视图