ALTER VIEW

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

我的收藏

描述

ALTER VIEW 语句可以修改与视图关联的元数据。它可以更改视图的定义、将视图名称更改为不同的名称,以及通过设置 TBLPROPERTIES 来设置和取消设置视图的元数据。

重命名视图(RENAME View)

重命名现有视图。如果新视图名称在源数据库中已存在,将抛出 TableAlreadyExistsException。此操作不支持跨数据库移动视图。
如果视图已被缓存,该命令会清除视图及其所有引用依赖项的缓存数据。视图的缓存将在下次访问时延迟填充。该命令会将视图的依赖项置为未缓存状态。

语法

ALTER VIEW view_identifier RENAME TO view_identifier

参数

参数
说明
语法
view_identifier
指定视图名称,可以选择性地用数据库名进行限定
[ database_name. ] view_name

设置视图属性(SET View Properties)

设置现有视图的一个或多个属性。属性是键值对。如果属性的键已存在,值将被新值替换。如果属性的键不存在,键值对将被添加到属性中。

语法

ALTER VIEW view_identifier SET TBLPROPERTIES ( property_key = property_val [ , ... ] )

取消设置视图属性(UNSET View Properties)

删除现有视图的一个或多个属性。如果指定的键不存在,将抛出异常。使用 IF EXISTS 可避免异常。

语法

ALTER VIEW view_identifier UNSET TBLPROPERTIES [ IF EXISTS ] ( property_key [ , ... ] )

修改视图定义(ALTER View AS SELECT)

ALTER VIEW view_identifier AS SELECT 语句用于更改视图的定义。SELECT 语句必须有效,且 view_identifier 必须存在。
注意:
ALTER VIEW 语句不支持 SET SERDESET SERDEPROPERTIES 属性。

语法

ALTER VIEW view_identifier AS select_statement

示例

-- 创建独立数据库和基础表
CREATE DATABASE tempdb_view_test;
USE tempdb_view_test;

CREATE EXTERNAL TABLE base_table (c1 INT, c2 STRING)
USING PARQUET LOCATION 'cosn://<your_bucket_name>/test_alter_view/base_table';
CREATE VIEW v1 AS SELECT c1, c2 FROM base_table;

-- 重命名视图
ALTER VIEW v1 RENAME TO v2;

-- 验证视图
DESCRIBE TABLE EXTENDED v2;

-- 设置视图属性
ALTER VIEW v2 SET TBLPROPERTIES ('created.by.user' = 'John', 'created.date' = '01-01-2001');

-- 验证属性
DESCRIBE TABLE EXTENDED v2;

-- 取消设置视图属性
ALTER VIEW v2 UNSET TBLPROPERTIES ('created.by.user', 'created.date');
ALTER VIEW v2 UNSET TBLPROPERTIES IF EXISTS ('nonexistent_key');

-- 修改视图定义
ALTER VIEW v2 AS SELECT c1 FROM base_table WHERE c1 > 0;

-- 验证新定义
DESCRIBE TABLE EXTENDED v2;

-- 切回默认数据库
USE default;