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

使用限制

  • 视图可以引用其它视图,但不能引用自己,也不能循环引用。
  • 不允许向视图写入数据,例如使用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:修改已创建视图的名称或所有人。
  • DESC VIEW:查看已创建的视图的信息。
  • DROP VIEW:删除已创建的视图。