1. 什么是视图
一张虚拟的表,从一个或多个表中查询出的数据集
2.视图的作用
一)简化SQL语句
二)安全,权限控制管理【对真实表关闭权限,但开放视图的权限】
三)在不影响真实表的情况下,满足更多灵活的需求
3.视图语法
一)创建
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = {user
| CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }] VIEWview_name
[(column_list
)] ASselect_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
注意:
ALGORITHM表示视图选择的算法(可选参数)
UNDEFINED:MySQL将自动选择所要使用的算法
MERGE:将视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分
TEMPTABLE:将视图的结果存入临时表,然后使用临时表执行语句
属性清单表示视图中的列名,默认与SELECT查询结果中的列名相同(可选参数)
WITH CHECK OPTION表示更新视图时要保证在该试图的权限范围之内(可选参数)
CASCADED:更新视图时要满足所有相关视图和表的条件
LOCAL:更新视图时,要满足该视图本身定义的条件即可
tips:创建试图时最好加上WITH CASCADED CHECK OPTION参数,这种方式比较严格,可以保证数据的安全性
二)修改
one:
two:CREATE OR REPLACE [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = {user
| CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }] VIEWview_name
[(column_list
)] ASselect_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = {user
| CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }] VIEWview_name
[(column_list
)] ASselect_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
三)删除
DROP VIEW view_name
4.视图小结
参考链接:http://dev.mysql.com/doc/refman/5.7/en/create-view
http://www.cnblogs.com/wangtao_20/archive/2011/02/24/1964276.html
http://www.cnblogs.com/zzwlovegfj/archive/2012/06/23/2559596.html
http://www.jb51.net/article/36363.htm