视图

hubble的视图不是物化的:它们不存储基础查询的结果。相反,每次使用该视图时都会重新执行基础查询。

所需权限

用户必须具有CREATE权限、SELECT以及视图引用的任何表的权限

语法图

CreateViewStmt
CREATEOrReplaceVIEWIfNotExistsViewNameASViewSelectStmt
IfNotExists
IFNOTEXISTS
OrReplace
ORREPLACE

语法图

参数简介
IF NOT EXISTS仅当不存在同名视图时才创建新视图。请注意,IF NOT EXISTS仅检查视图名称。它不检查现有视图是否与新视图具有相同的列。
OR REPLACE如果不存在同名视图,则创建一个新视图。如果已存在同名视图,请替换该视图
view_name要创建的视图的名称,在其数据库中必须是唯一的,并遵循这些标识符规则。

创建视图

  • 要创建视图,请使用以下CREATE VIEW语句:
create view hubble_db.user_info
  as select  cust_no, cust_name,cust_card_no 
  from  cust_info;

列表视图

  • 创建后,视图将在数据库中的常规表旁边列出:
show  tables from  hubble_db;
  schema_name | table_name | type  | owner | estimated_row_count | locality
--------------+------------+-------+-------+---------------------+-----------
  public      | cust_info  | table | root  |                   0 | NULL
  public      | user_info  | view  | root  |                   0 | NULL
  • 要仅列出视图,可以views在信息模式中查询表:
select * from hubble_db.information_schema.views;
  table_catalog | table_schema | table_name |                             view_definition                             | 
----------------+--------------+------------+-------------------------------------------------------------------------+--------------+--------------+--------------------+----------------------+----------------------+-----------------------------
  hubble_db     | public       | user_info  | SELECT cust_no, cust_name, cust_card_no FROM hubble_db.public.cust_info | NULL         

查询视图

  • 要查询视图,请使用表表达式(例如,使用SELECT子句)作为目标,就像使用存储表一样:
select * from  hubble_db.user_info;
  • 要检查SELECT视图执行的语句,请使用以下SHOW CREATE语句:
show  create hubble_db.user_info;

重命名视图

  • 要重命名视图,请使用以下ALTER VIEW语句:
alter view hubble_db.user_info rename to hubble_db.user_info_bak;

删除视图

  • 要删除视图,请使用以下DROP VIEW语句
drop view hubble_db.user_info_bak;