CREATE VIEW
描述
视图基于 SQL
查询的结果集。 CREATE VIEW
构造一个没有物理数据的虚拟表,因此其他操作(如 ALTER VIEW
和 DROP VIEW
)仅更改元数据。
语法
CREATE [ OR REPLACE ] [ [ GLOBAL ] TEMPORARY ] VIEW [ IF NOT EXISTS ] view_identifier
create_view_clauses AS query
参数
-
OR REPLACE
如果已存在同名视图,则将替换该视图。
-
[ GLOBAL ] TEMPORARY
TEMPORARY 视图是会话范围的,并且在会话结束时将被删除,因为它跳过了在底层元存储(如果有)中持久化定义。 GLOBAL TEMPORARY 视图绑定到系统保留的临时数据库
global_temp
。 -
IF NOT EXISTS
如果视图不存在,则创建该视图。
-
view_identifier
指定视图名称,可以选择使用数据库名称对其进行限定。
语法:
[ database_name. ] view_name
-
create_view_clauses
这些子句是可选的,并且顺序不敏感。它可以采用以下格式。
[ ( column_name [ COMMENT column_comment ], ... ) ]
指定列级注释。[ COMMENT view_comment ]
指定视图级注释。[ TBLPROPERTIES ( property_name = property_value [ , ... ] ) ]
添加元数据键值对。
-
query 一个 SELECT 语句,用于从基表或其他视图构造视图。
示例
-- Create or replace view for `experienced_employee` with comments.
CREATE OR REPLACE VIEW experienced_employee
(ID COMMENT 'Unique identification number', Name)
COMMENT 'View for experienced employees'
AS SELECT id, name FROM all_employee
WHERE working_years > 5;
-- Create a global temporary view `subscribed_movies` if it does not exist.
CREATE GLOBAL TEMPORARY VIEW IF NOT EXISTS subscribed_movies
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb
ON mo.member_id = mb.id;