创建视图CREATE TABLE
视图定义注意事项:
SELECT
不能包含FROM
语句中的子查询SELECT
不能引用系统或用户变量- 在定义中不能引用
TEMPORARY
表 - 在视图定义中命名的表必须已存在
- 视图定义的格式:
CREATE [OR REPLACE][ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name[(column_list)] AS select_statement [WITH[CASCADED|LOCAL]CHECK OPTION]
。事实上修改和删除视图于此类似,下面省略
修改视图ALTER VIEW
删除视图DROP VIEW
视图处理算法
- 以上可选的
ALGORITHM
子句是对标准SQL的MySQL扩展,可取三个值MERGE
(引用视图的语句与视图定义语句结合,使视图定义的语句取代部分引用视图的语句)/TEMPTABLE
(视图结果置于TEMPTALE中,并使用它执行,表锁定释放的速度较快)/UNDEFINED
(未定义,默认选项,MySQL自主选择算法,倾向于MERGE) - 视图算法在一下三种情况下可以是
UNDEFINED
:
- 没有指定
ALGORITHM
- 显式指定
ALGORITHM=UNDEFINED
- 临时表只能为
ALGORITHM=UNDEFINED
可更新可插入视图
- 不可更新视图
- 不可插入视图