create [or replace] # 可替换已有的视图
[algorithm ={ undefined|merge|temptable }] # 视图算法的选择
view view_name[(column_list)] # 视图名,后可自定义视图列表名
as select_statement # 视图的定义
[with[ cascaded|local] check option ] ; # 权限设置
说明:
create: 表示创建新的视图;
or replace:表示如果该视图已经存在,则用新视图代替它,若视图不存在则创建新视图
algorithm 子句:表示为视图选择算法,有三个选项,一般情况下我们不显示给出,使用第一个参数 “undefined”,表示 MySQL 自动选择算法;
view_name:为视图名。默认情况下,在当前数据库下创建视图,若想给其他数据创建视图,必须在视图名前制定目标数据库,db_name.view_name,视图名不能与表名相同;
column_list:可以给视图列取名称,多个列用逗号隔开;
select_statement:用来创建视图的 select 语句,给出了视图所需内容。默认情况下,select 语句检索的列名就是视图的列名称。若想给列名取别的名字,可使用 column_list 字句,但注意两者数目必须相等。
With check option :用于视图更新时,保证在视图的权限范围内;
-
要求具有针对视图的 create view 语句权限,以及针对有 select 语句选择列上的某些权限。
cascaded | local:可选参数;
-
lcascade:默认值,更新视图时要满足所有相关视图和表的条件;
-
local :表示更新视图时满足该视图本身的定义即可。
视图不仅可以从一个基表导出,还可以从多张基表导出来;并且还可以在已有的视图基础上导出新的视图;因此可以将视图的创建分为三种情况:在单表中创建视图,在多表中创建视图,在已有视图中创建新的视图。