CREATE VIEW [IF NOT EXISTS] <view_name> --[1] [(<column_name>, <column_name>,...)]--[2] AS SELECT <select_statement>;
复制
-
视图由一个预定义的查询 SELECT 语句组成。
-
对视图可以像表一样进行 INSERT,UPDATE,DELETE 操作。
-
但普通视图是一个虚拟的表,是非实物化的(unmaterialized),是一个表中的数据经过某种筛选后的显示方式。 也就是说视图中没有实际的数据,每次对视图进行查询时,创建视图所用的查询语句会被再次执行一次。
-
-
视图的数量没有限制,但是命名不能和视图以及表重复,具有唯一性。
-
视图可以被嵌套,一个视图中可以嵌套另一个视图。
-
视图不能有相关联的触发器和默认值,不能在视图后使用 ORDER BY 排序。
-
当普通视图对应的基本表出现数据更新后,视图将会进行自动同步。
若您需要了解更多关于物化视图等视图查询优化功能,请参考视图查询优化。
CREATE VIEW
功能描述
-
使用 CREATE VIEW AS SELECT 创建视图。
注意事项
-
在创建视图时可以选择定义列名,但是不能定义列类型,列类型由 AS SELECT <select_statement> 的查询结果决定。
-
CREATE VIEW 的语法和 CTAS 非常相像。区别在于VIEW是非实体化的,CREATE VIEW 给查询创建一个快捷方式,而 CTAS 将查询结果写入磁盘中。
语法格式
参数说明
-
<view_name>:视图名称。
-
<column_name>:列名称。
-
<select_statement>:子查询语句结果。
-
可选项 [1],如果 <view_name> 指定的视图已经存在,会报错,加上 IF NOT EXISTS 选项避免报错。
-
可选项 [2],支持定义视图的列名。
示例
CREATE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1;
复制
推荐阅读
CREATE OR REPLACE VIEW
功能描述
-
当定义的视图名称已经存在时,将修改替换原视图的定义。
-
当定义的视图名称不存在,则与 CREATE VIEW 语法功能相同。
语法格式
CREATE OR REPLACE VIEW <view_name> AS SELECT <select_statement>;
复制
参数说明
-
<view_name>:视图名称。
-
<select_statement>:子查询语句结果。
示例
CREATE OR REPLACE VIEW v1 AS SELECT trans_id,acc_num FROM t1;
复制
推荐阅读
ALTER VIEW
功能描述
-
使用 SET TBLPROPERTIES 设定指定视图的自定义属性。
语法格式
ALTER [MATERIALIZED] VIEW <view_name> SET TBLPROPERTIES ('<property_name>'='<property_value>'); -- [1]
复制
参数说明
-
<view_name>:视图名称。
-
<property_name>:视图属性名称。
-
<property_value>:视图属性值。
-
可选项 [1],支持修改物化视图或视图。
示例
ALTER VIEW v1 SET TBLPROPERTIES ('date'='2023-2-8');
复制
推荐阅读
DROP VIEW
功能描述
-
使用 DROP [MATERIALIZED] VIEW 删除视图或物化视图。
注意事项
-
DROP [MATERIALIZED] VIEW 将指定视图的元数据删除。虽然视图和表有很多共同之处,但是 DROP TABLE 不能用来删除 VIEW。
-
如果删除的视图被其他视图所使用,不会给出任何警告。
-
依靠于被删除视图的视图会变成无效视图,但是用户需要自行处理这些变成无效视图的视图。
语法格式
DROP [MATERIALIZED] VIEW [IF EXISTS] <view_name>; --[1]
复制
参数说明
-
<view_name>:视图或物化视图的名称。
-
可选项 [1],如果 <view_name> 指定的视图已经不存在,会报错,加上 IF EXISTS 选项避免报错。
示例
DROP VIEW IF EXISTS v1;
复制
推荐阅读
SHOW VIEWS
功能描述
-
使用 SHOW VIEWS 查看当前数据库中的所有普通视图,不会展示物化视图。
-
使用 SHOW MATERIALIZED VIEWS 查看当前数据库中的所有物化视图,不会展示普通视图。
注意事项
-
使用 SHOW TABLES 可以查看当前数据库中的所有表、视图以及物化视图。
语法格式
SHOW VIEWS; SHOW MATERIALIZED VIEWS;
复制
推荐阅读
DESC VIEW
功能描述
-
使用 DESCRIBE 查看目标视图查询输出列的信息。
-
使用 DESCRIBE FORMATTED 查看目标视图的完整信息,包括列信息,所处数据库,所属者信息,表类型,创建视图的原始语句等,查询结果中的部分属性信息及含义如下所示:
属性名称 含义 View Original Text
创建视图时指定的 query 字符串
View Expanded Text
是 View Original Text 的扩展形式,主要是为所有列加上限定名等。后续使用视图时主要基于该字符串,而不是View Original Text.
View Rewrite Enabled
是否允许用改写该视图。
View Source Tables(仅物化视图)
该 materialized view 中涉及到的源表名称
View Out Of Date(仅物化视图)
该 materialized view 是否过期,如果源表的数据在建 materialized view 之后有更新,那表示该 materialized view 已过期。
语法格式
DESCRIBE|DESC [TABLE] <view_name>;--[1]
复制
DESCRIBE|DESC FORMATTED <view_name>;
复制
参数说明
-
<view_name>:视图(包括物化视图)的名称。
-
可选项 [1]:可以选择省略关键字 TABLE。
示例
desc v1; desc formatted materialized_v1;
复制
推荐阅读