全部产品
Search
文档中心

云原生大数据计算服务 MaxCompute:视图操作

更新时间:Dec 19, 2024

视图(View)是一种在表层级上创建的虚拟表,它可以基于一个或多个表而存在。通过使用视图,您可以保留查询逻辑(SQL语句)而无需创建实际的表占用存储空间。本文为您介绍管理视图的相关操作命令和使用示例。

视图操作命令如下。

类型

功能

角色

操作入口

创建或更新视图

基于查询语句创建视图或更新已存在的视图。

具备项目空间创建表权限(CreateTable)的用户。

本文中的命令您可以在如下工具平台执行:

重命名视图

修改已创建视图的名称。

具备修改表权限(Alter)的用户。

修改视图的所有人

修改已创建的视图的所有人。

具备修改表权限(Alter)的用户。

列出项目下所有普通视图

列出项目下所有的普通视图。

具备项目查看对象列表权限(List)的用户。

查看视图

查看已创建的视图的信息。

具备读取表元信息权限(Describe)的用户。

删除视图

删除已创建的视图。

具备删除表权限(Drop)的用户。

创建或更新视图

基于查询语句创建视图或更新已存在的视图。

  • 使用限制

    • 视图可以引用其他视图,但不能引用自己,也不能循环引用。

    • 不允许向视图写入数据,例如使用INSERT INTO或者INSERT OVERWRITE操作视图。

  • 命令格式

    CREATE [OR REPLACE] VIEW [IF NOT EXISTS] <view_name>
        [(<col_name> [comment <col_comment>], ...)]
        [comment <view_comment>]
        AS <select_statement>;
  • 参数说明

    参数

    是否必填

    说明

    OR REPLACE

    更新视图需要携带该字段。

    IF NOT EXISTS

    如果没有指定IF NOT EXISTS,在视图已经存在时用CREATE VIEW会导致异常。这种情况可以用CREATE OR REPLACE VIEW重建视图,重建后视图本身的权限保持不变。

    view_name

    待创建或更新的视图的名称。

    col_name

    待创建视图包含的列名称。

    col_comment

    待创建视图的列的注释。

    view_comment

    待创建视图的注释。

    select_statement

    SELECT查询语句,是视图的数据来源,您必须有视图所引用表的读权限。视图只能包含一个有效的SELECT语句。

    说明

    创建或更新好视图后,如果视图引用的表发生变更,有可能导致视图无法访问,例如删除了引用的表。您需要自行维护引用表及视图之间的对应关系。

  • 使用示例

    • 示例1:基于表sale_detail创建视图sale_detail_view。

      CREATE VIEW IF NOT EXISTS sale_detail_view 
      (store_name, customer_id, price, sale_date, region) 
      comment 'a view for table sale_detail' 
      AS SELECT * FROM sale_detail;
    • 示例2:基于表sale_detail更新视图sale_detail_view。

      CREATE OR REPLACE VIEW IF NOT EXISTS sale_detail_view 
      (store_name, customer_id, price)
      comment 'a view for table sale_detail'
      AS SELECT shop_name, customer_id, total_price FROM sale_detail;

重命名视图

修改已创建视图的名称。

  • 命令格式

    ALTER VIEW <view_name> RENAME TO <new_view_name>;
  • 参数说明

    参数

    是否必填

    说明

    view_name

    需要重命名视图的名称。

    new_view_name

    新的视图名称。如果已存在同名视图,会返回报错。

  • 使用示例

    --将视图view sale_detail_view重命名为market。
    ALTER VIEW sale_detail_view RENAME TO market;

修改视图的所有人

修改已创建的视图的所有人,即视图Owner。

  • 命令格式

    ALTER VIEW <view_name> CHANGEOWNER TO <new_owner>;
  • 参数说明

    参数

    是否必填

    说明

    view_name

    待修改Owner的视图的名称。

    new_owner

    修改后的Owner的账号。

  • 使用示例

    --将视图sale_detail_view的所有人修改为ALIYUN$xxx@aliyun.com。
    ALTER VIEW sale_detail_view CHANGEOWNER TO 'ALIYUN$xxx@aliyun.com';

列出项目下所有普通视图

说明

SHOW VIEWS;命令需要在MaxCompute客户端(odpscmd)0.43.0及以上版本中执行。

  • 命令格式

    如果需要仅查看项目下的所有视图,可使用SHOW VIEWS;。您也可以通过SHOW TABLES;列出项目下所有表和视图,详情请参见列出项目下的表和视图

    --列出项目下所有普通视图。
    SHOW VIEWS;
    --列出项目下视图名与chart匹配的视图。
    SHOW VIEWS LIKE '<chart>';
  • 使用示例

    SHOW VIEWS LIKE 'sale*';  

    返回结果如下。

    ALIYUN$account_name:sale_detail_view
    ......
    --ALIYUN是系统提示符,表示您是阿里云主账号用户。如果您是阿里云RAM用户,系统提示符为RAM。

查看视图

  • 命令格式

    DESC <view_name>; 
  • 参数说明

    view_name:必填。待查看视图的名称。

  • 使用示例

    DESC sale_detail_view;

删除视图

删除已创建的视图。

  • 命令格式

    DROP VIEW [IF EXISTS] <view_name>;
  • 参数说明

    参数

    是否必填

    说明

    IF EXISTS

    如果视图不存在且没有指定IF EXISTS,会返回报错。

    view_name

    待删除的视图的名称。

  • 使用示例

    --删除视图sale_detail_view。
    DROP VIEW IF EXISTS sale_detail_view;