描述
视图基于 SQL 查询的结果集。
CREATE VIEW 构建一个没有物理数据的虚拟表,因此其他操作如 ALTER VIEW 和 DROP VIEW 仅更改元数据。语法
CREATE [ OR REPLACE ] [ [ GLOBAL ] TEMPORARY ] VIEW [ IF NOT EXISTS ] view_identifiercreate_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 EXISTSCREATE 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;