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

posted @ 2023-02-02 18:00  cacti_vc  阅读(335)  评论(0编辑  收藏  举报