本文为您介绍如何通过DDL语句创建、删除、重命名视图。

创建视图

语法格式
CREATE [OR REPLACE] VIEW [IF NOT EXISTS] view_name
    [(col_name [COMMENT col_comment], ...)]
    [COMMENT view_comment]
    [AS select_statement]

功能说明

本语法用于新建视图。
注意
  • 创建视图时,您必须有对视图所引用表的读权限。
  • 视图可以引用其它视图,但不能引用自己,也不能循环引用。
  • 不允许向视图写入数据,例如使用insert into或者insert overwrite操作视图。
  • 创建好视图后,如果视图的引用表发生了变更,有可能导致视图无法访问,例如删除被引用表。您需要自行维护引用表及视图之间的对应关系。
参数说明
  • view_name:创建的视图名称。
  • IF NOT EXISTS:如果没有指定if not exists,在视图已经存在时用create view会导致异常。这种情况可以用create or replace view重建视图,重建后视图本身的权限保持不变。
  • col_name:视图包含的列名称。
  • view_comment:视图的注释。
  • select_statement:查询语句,其为视图的数据来源。视图只能包含一个有效的select语句。
示例
--创建视图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;

重命名视图

语法格式
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;

删除视图

语法格式
DROP VIEW [IF EXISTS] view_name;
参数说明
  • view_name:删除视图的名称。
  • IF EXISTS:如果视图不存在且没有指定if exists,则报错。
示例
--删除视图sale_detail_view。
DROP VIEW IF EXISTS sale_detail_view;