MySQL学习笔记(10):视图

本文更新于2019-06-22,使用MySQL 5.7,操作系统为Deepin 15.4。

目录

    为了便于描述,此处将创建视图的DDL复述一次,其已于“SQL”章节描述。

    CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW viewname [(colname[, ...])]
    AS select_statement [WITH [CASCADE|LOCAL] CHECK OPTION]
    

    视图的行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。

    MySQL视图的定义有一些限制,如在FROM关键字后面不能包含子查询,这和其他数据库是不同的。通过将子查询的内容定义成另一个视图,然后对该视图再创建视图即可实现类似的功能。

    视图分可更新视图和不可更新视图,以下类型的视图是不可更新的:

    • 常量视图。
    • 包含以下关键字的SQL语句:聚合函数(SUMMINMAXCOUNT等)、DISTINCTGROUP BYHAVINGUNIONUNION ALL
    • SELECT中包含子查询,如`SELECT (SELECT colname FROM tablename LIMIT 1)。
    • JOIN
    • FROM一个不能更新的视图。
    • WHERE子句中的子查询引用了FROM子句中的表。
    posted @ 2020-07-03 19:35  garvenc  阅读(173)  评论(0编辑  收藏