Amazon Redshift
数据库开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

ALTER TABLE 示例

以下示例演示了 ALTER TABLE 命令的基本用法。

重命名表

以下命令将 USERS 表重命名为 USERS_BKUP:

alter table users rename to users_bkup;

您还可以使用此类型的命令来重命名视图。

更改表或视图的所有者

以下命令将 VENUE 表所有者更改为用户 DWUSER:

alter table venue owner to dwuser;

以下命令创建一个视图,然后更改其所有者:

create view vdate as select * from date; alter table vdate owner to vuser;

重命名列

以下命令将 VENUE 表中的 VENUESEATS 列重命名为 VENUESIZE:

alter table venue rename column venueseats to venuesize;

删除表约束

要删除表约束(例如主键、外键或唯一约束),请先查找约束的内部名称。然后在 ALTER TABLE 命令中指定约束名称。以下示例查找 CATEGORY 表的约束,然后删除名为 category_pkey 的主键。

select constraint_name, constraint_type from information_schema.table_constraints where constraint_schema ='public' and table_name = 'category'; constraint_name | constraint_type ----------------+---------------- category_pkey | PRIMARY KEY alter table category drop constraint category_pkey;

更改 VARCHAR 列

为了节省存储空间,您最初可以使用 VARCHAR 列定义一个表,这些列具有满足当前数据要求所需的最小大小。以后,要容纳更长的字符串,您可以更改表以增加列大小。

以下示例将 EVENTNAME 列大小增加到 VARCHAR(300)。

alter table event alter column eventname type varchar(300);

更改 DISTSTYLE KEY DISTKEY 列

以下示例显示如何更改表的 DISTSTYLE 和 DISTKEY。

使用 EVEN 分配样式创建表SVV_TABLE_INFO 视图显示 DISTSTYLE 为 EVEN。

create table inventory( inv_date_sk int4 not null , inv_item_sk int4 not null , inv_warehouse_sk int4 not null , inv_quantity_on_hand int4 ) diststyle even; Insert into inventory values(1,1,1,1); select "table", "diststyle" from svv_table_info; table | diststyle -----------+---------------- inventory | EVEN (1 row)

将表 DISTKEY 更改为 inv_item_sk,然后在 BEGIN…COMMIT 块内更改为 inv_warehouse_sk。SVV_TABLE_INFO 视图将 inv_warehouse_sk 列显示为结果分配密钥。

begin; alter table inventory alter distkey inv_item_sk; alter table inventory alter distkey inv_warehouse_sk; commit; select "table", "diststyle" from svv_table_info; table | diststyle -----------+----------------------- inventory | KEY(inv_warehouse_sk) (1 row)

更改表的 DISTKEY 并中止事务。分配密钥不发生变化。

begin; alter table inventory alter distkey inv_item_sk; abort; select "table", "diststyle" from svv_table_info; table | diststyle -----------+---------------------- inventory | KEY(inv_warehouse_sk) (1 row)