视图中包含 SELECT 查询的结果,因此视图的创建基于 SELECT 语句和已经存在的数据表。视图可以建立在一张表上,也可以建立在多张表上。在 MySQL中,创建视图需要使用 CREATE VIEW 语句,其基本语法格式如下所示:
CREATE [OR REPLACE][ALGORITHM ={UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
在上述语法格式中,创建视图的语句是由多条子句构成的。为了帮助读者更好地理解,下面对语法格式中的每个部分进行详细的解释,具体如下。
(1)CREATE:表示创建视图的关键字,上述语句能创建新的视图。
(2)OR REPLACE:如果给定了此子句,表示该语句能够替换已有视图。
(3)ALGORITHM:可选,表示视图选择的算法。
(4)UNDEFINED:表示 MySQL将自动选择所要使用的算法。
(5)MERGE:表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
(6)TEMPTABLE:表示将视图的结果存人临时表,然后使用临时表执行语句
(7)view_name:表示要创建的视图名称。
(8)column_list:可选,表示属性清单。指定了视图中各个属性的名,默认情况下,与 SELECT 语句中查询的属性相同。
(9)AS:表示指定视图要执行的操作。
(10)SELECT_statement:是一个完整的査询语句,表示从某个表或视图中查出某些满足条件的记录,将这些记录导人视图中。
(11)WITH CHECK OPTION:可选,表示创建视图时要保证在该视图的权限范围之内。
(12)CASCADED:可选,表示创建视图时,需要满足跟该视图有关的所有相关视图和表的条件,该参数为默认值。
(13)LOCAL:可选,表示创建视图时,只要满足该视图本身定义的条件即可。
创建视图时要求具有针对视图的 CREATE VIEW 权限,以及针对由 SELECT 语句选择的每一列上的某些权限。对于在 SELECT 语句中其他地方使用的列,必须具有SELECT 权限。如果还有 OR REPLACE 子句,必须在视图上具有 DROP 权限。
需要注意的是,视图属于数据库,在默认情况下,将在当前数据库创建新视图,要想在给定数据库中明确创建视图,创建时应将名称指定为 db_name.view_name。