联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
6.9.1.5 定义视图
更新时间:12/30/2024, 10:07:51 AM

ArgoDB 支持普通/物化视图,普通视图只是一层简单的查询代理,所涉及的 SQL 语句, 主要包含创建视图替换视图定义以及改变删除显示描述视图或物化视图。

  • 视图由一个预定义的查询 SELECT 语句组成。

    1. 对视图可以像表一样进行 INSERT,UPDATE,DELETE 操作。

    2. 但普通视图是一个虚拟的表,是非实物化的(unmaterialized),是一个表中的数据经过某种筛选后的显示方式。 也就是说视图中没有实际的数据,每次对视图进行查询时,创建视图所用的查询语句会被再次执行一次。

  • 视图的数量没有限制,但是命名不能和视图以及表重复,具有唯一性。

  • 视图可以被嵌套,一个视图中可以嵌套另一个视图。

  • 视图不能有相关联的触发器和默认值,不能在视图后使用 ORDER BY 排序。

  • 当普通视图对应的基本表出现数据更新后,视图将会进行自动同步。

若您需要了解更多关于物化视图等视图查询优化功能,请参考视图查询优化

CREATE VIEW

功能描述

  • 使用 CREATE VIEW AS SELECT 创建视图。

注意事项

  • 在创建视图时可以选择定义列名,但是不能定义列类型,列类型由 AS SELECT <select_statement> 的查询结果决定。

  • CREATE VIEW 的语法和 CTAS 非常相像。区别在于VIEW是非实体化的,CREATE VIEW 给查询创建一个快捷方式,而 CTAS 将查询结果写入磁盘中。

语法格式

CREATE VIEW [IF NOT EXISTS] <view_name> --[1]
[(<column_name>, <column_name>,...)]--[2]
AS SELECT <select_statement>;
复制

参数说明

  • <view_name>:视图名称。

  • <column_name>:列名称。

  • <select_statement>:子查询语句结果。

  • 可选项 [1],如果 <view_name> 指定的视图已经存在,会报错,加上 IF NOT EXISTS 选项避免报错。

  • 可选项 [2],支持定义视图的列名。

示例

例 8.1.42:创建视图
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>:子查询语句结果。

示例

例 8.1.43:替换视图定义
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],支持修改物化视图或视图。

示例

例 8.1.44:改变视图参数
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 选项避免报错。

示例

例 8.1.45:删除视图
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。

示例

例 8.1.46:查看视图详细信息
desc v1;
desc formatted materialized_v1;
复制

推荐阅读