PostgreSQL 教程: 重命名表

九月 11, 2023

摘要:本教程向您展示如何使用ALTER TABLE 语句的RENAME TO子句重命名表。

PostgreSQL 重命名表语句概述

要重命名现有表,请使用ALTER TABLE语句,如下:

ALTER TABLE table_name
RENAME TO new_table_name;

在这个语句中:

  • 首先,在ALTER TABLE子句后指定要重命名的表的名称。
  • 其次,在RENAME TO子句后给出新的表名称。

如果您尝试重命名不存在的表,PostgreSQL 将发出错误。为了避免这种情况,您可以添加IF EXISTS选项,如下:

ALTER TABLE IF EXISTS table_name
RENAME TO new_table_name;

在这种情况下,如果table_name不存在,PostgreSQL 将发出通知。

要重命名多个表,您必须执行多个ALTER TABLE RENAME TO语句。不可能使用单个ALTER TABLE语句重命名多个表。

PostgreSQL 重命名表示例

以下语句创建一个新表,名为vendors

DROP TABLE IF EXISTS vendors;
CREATE TABLE vendors (
    id serial PRIMARY KEY,
    name VARCHAR NOT NULL
);

要将vendors表重命名为suppliers,请使用以下ALTER TABLE RENAME TO语句:

ALTER TABLE vendors RENAME TO suppliers;

假设每个发行商或供应商都属于一个组。要管理这种关系,您需要添加supplier_groups表,如下所示:

CREATE TABLE supplier_groups (
    id serial PRIMARY KEY,
    name VARCHAR NOT NULL
);

您还需要向suppliers表添加一个新列group_id。该列是链接到supplier_groups表的id列的外键列:

ALTER TABLE suppliers 
ADD COLUMN group_id INT NOT NULL;

ALTER TABLE suppliers 
ADD FOREIGN KEY (group_id) REFERENCES supplier_groups (id);

为了节省查询完整供应商数据的时间,您可以针对supplierssupplier_groups创建一个视图,如下所示:

CREATE VIEW supplier_data 
AS SELECT
    s.id,
    s.name,
    g.name  supply_group
FROM
    suppliers s
INNER JOIN supplier_groups g ON g.id = s.group_id;

当您将一张表重命名为新表时,PostgreSQL 将自动更新其依赖对象,例如外键约束视图索引

我们先查一下suppliers表:

\d suppliers

img

输出显示suppliers表具有引用supplier_groups表的外键约束。

现在,您可以将supplier_groups表重命名为groups,如下:

ALTER TABLE supplier_groups RENAME TO groups;

您可以通过描述suppliers表来验证suppliers表中的外键约束,如下:

\d suppliers

img

从输出中可以清楚看到,外键约束已更新并引用了groups表。

以下语句显示了supplier_data视图:

\d+ supplier_data

img

输出显示视图的SELECT语句中的supplier_groups表也更新为groups表。

在本教程中,您学习了如何使用ALTER TABLE语句的RENAME TO子句重命名表。