CREATE VIEW

最近更新时间:2026-05-20 14:11:22

我的收藏

描述

视图基于 SQL 查询的结果集。CREATE VIEW 构建一个没有物理数据的虚拟表,因此其他操作如 ALTER VIEWDROP 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 EXTERNAL TABLE base_emp_table (id INT, name STRING, working_years INT)
USING PARQUET LOCATION 'cosn://<your_bucket_name>/test_create_view/base_emp_table';
INSERT INTO base_emp_table VALUES (1, 'Alice', 8), (2, 'Bob', 3), (3, 'Charlie', 12);

-- 创建视图
CREATE VIEW test_view1 AS SELECT id, name FROM base_emp_table WHERE working_years > 5;

-- 创建或替换视图(带注释)
CREATE OR REPLACE VIEW test_view1
(ID COMMENT 'Unique ID', Name)
COMMENT 'Experienced employees'
AS SELECT id, name FROM base_emp_table WHERE working_years > 5;

-- IF NOT EXISTS
CREATE VIEW IF NOT EXISTS test_view2 AS SELECT * FROM base_emp_table;

-- TEMPORARY 视图
CREATE TEMPORARY VIEW test_view3 AS SELECT id, name FROM base_emp_table;

-- GLOBAL TEMPORARY 视图
CREATE GLOBAL TEMPORARY VIEW test_global_view AS SELECT * FROM base_emp_table;

-- 查询视图
SELECT * FROM test_view1;
SELECT * FROM global_temp.test_global_view;

-- 描述视图
DESCRIBE TABLE EXTENDED test_view1;