mysql创建视图注意事项
转自:https://www.cnblogs.com/cctvyuzhou/p/8985582.html
可以使用 CREATE VIEW 语句来创建视图
语法格式如下:
CREATE VIEW <视图名> AS <SELECT语句>
语法说明如下。
1、视图名:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。
2、select语句:指定创建视图的SELECT语句,可用于查询多个基础表或源视图。
可以通过以下语句创建视图
CREATE ALGORITHM = UNDEFINED DEFINER = `xx`@`localhost` SQL SECURITY DEFINER VIEW `xxxx` AS
1、ALGORITHM=UNDEFINED:指定视图的处理算法;
ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响mysql处理视图的方式。
对于MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分(视图定义和select 结合在一起了,执行会快)。
对于TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
对于UNDEFINED,mysql自己选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。
2、DEFINER=root@localhost:指定视图创建者;
'root'@'localhost'是root用户以本机连接,'root'@'%'是root用户允许任何ip的连接。
3、SQL SECURITY DEFINER:指定视图查询数据时的安全验证方式;
DEFINER表示按定义者拥有的权限来执行
INVOKER表示用调用者的权限来执行。默认情况下,系统指定为DEFINER