本文更新於2019-06-22,使用MySQL 5.7,操作系統為Deepin 15.4。 為了便於描述,此處將創建視圖的DDL覆述一次,其已於“SQL”章節描述。 CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW vi ...
本文更新於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語句:聚合函數(
SUM
、MIN
、MAX
、COUNT
等)、DISTINCT
、GROUP BY
、HAVING
、UNION
或UNION ALL
。 SELECT
中包含子查詢,如`SELECT (SELECT colname FROM tablename LIMIT 1)。JOIN
。FROM
一個不能更新的視圖。WHERE
子句中的子查詢引用了FROM
子句中的表。