PostgreSQL ALTER 表:添加列、重命名列/表示例

ALTER TABLE 命令用于改变 PostgreSQL 表。它是用于更改表列或表名称的命令。

句法

以下是 PostgreSQL ALTER TABLE 命令:

ALTER TABLE table-name action;

table-name参数是需要更改的表的名称。

action参数是您需要执行的操作,例如更改列的名称,更改列的数据类型等。

描述

ALTER TABLE 命令可更改现有表的定义。它采用以下子形式:

  • 添加列:这使用与 CREATE TABLE 命令类似的语法向表中添加新列。
  • 删除列:用于删除表列。列上施加的约束和索引也将被删除。
  • 设置/删除默认值:用于删除列的默认值。但是,更改仅适用于后续 INSERT 语句.
  • 设置/删除非空:更改列是否允许空值。
  • 设置统计数据: 用于设置 ANALYZE 操作的每一列的统计收集目标。
  • 设置存储:用于设置列的存储模式。这将决定列的保存位置,是内联的还是补充表中的。
  • 不含 OID 的设置:用于删除表的旧列。
  • 改名:用于更改表名或列名。
  • 添加表约束:用于向表添加新约束它使用与以下语法相同的语法 创建表 命令。
  • 下降约束:用于删除表约束。
  • 业主:用于将表、序列、索引或视图的所有者更改为特定用户。
  • 田字形:用于标记将来执行集群操作时要使用的表。

修改列

可以通过多种方式修改列。可以使用 ALTER TABLE 命令进行此类修改。让我们讨论一下这些:

添加新列

要将新列添加到 PostgreSQL 表,ALTER TABLE 命令使用以下语法:

ALTER TABLE table-name
  ADD new-column-name column-definition;

table-name 是要修改的表的名称。

new-column-name 是要添加的新列的名称。

列定义是 数据类型 新专栏的。

请参阅下面显示的 Book 表:

添加新列 PostgreSQL

该表有两列,id 和 name。我们需要向表中添加一个新列并将其命名为 author。只需运行以下命令:

ALTER TABLE Book
  ADD author VARCHAR(50);

运行上述命令后,Book表现在如下所示:

添加新列 PostgreSQL

新列已成功添加。

重命名表列

我们可以使用 ALTER TABLE 命令来更改列的名称。在这种情况下,该命令的语法如下:

ALTER TABLE table-name
  RENAME COLUMN old-name TO new-name;

table-name 是要重命名其列的表的名称。

旧名称是该列的旧名称/当前名称。

new-name 是列的新名称。考虑下面显示的表 Book:

书:

重命名表格列 PostgreSQL

我们需要将 author 列的名称添加到 book_author。命令如下:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

运行命令之后我们可以查看表的结构:

重命名表格列 PostgreSQL

列名已成功更改。

设置列的默认值

我们可以为列设置默认值,这样即使在 INSERT 操作期间没有为该列指定值,也会使用默认值。在这种情况下,可以使用以下语法使用 ALTER TABLE 命令:

ALTER TABLE table-name ALTER COLUMN column-name [SET DEFAULT value];

table-name 是要修改其列的表的名称。

column-name 是要设置默认值的名称。

该值是该列的默认值。

考虑下面给出的 Book 表:

设置列的默认值

我们需要为 book_author 列设置一个默认值。我们可以运行以下命令:

ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';		

现在,让我们在表中插入一行:

INSERT INTO Book (id, name)
 VALUES (6, 'PostgreSQL for Beginners');

请注意,我们只为 id 和 name 两列插入了值。但是,book_author 列已使用默认值:

设置列的默认值

添加检查约束

检查约束有助于验证插入表中的记录。我们可以通过将 ALTER TABLE 命令与 ADD CHECK 语句结合起来来实现这一点。语法:

ALTER TABLE table-name ADD CHECK expression;

table-name 是要改变的表的名称。

该表达式是对表列施加的约束。

让我们修改 Book 表的 book_author 列,以便它只接受值 Nicholas 和 Samuel:

ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'));

现在,让我们尝试在 Book 表的 book_author 列中插入除 Nicholas 或 Samuel 之外的值:

INSERT INTO Book
VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');

该语句将返回以下错误:

添加检查约束

由于违反了检查约束,插入操作失败。

重命名表

以下是重命名表的 ALTER TABLE 命令的语法:

ALTER TABLE table-name
  RENAME TO new-table-name;

表名是表的当前名称。

new-table-name 是要分配给表的新名称。

例如,让我们将 Book 表的名称更改为 Books:

ALTER TABLE Book
  RENAME TO Books;

使用 pgAdmin

现在让我们看看如何使用 pgAdmin 执行这些操作。

添加新列

要通过 pgAdmin 完成相同操作,请执行以下操作:

步骤1) 登录您的 pgAdmin 帐户。

步骤2)

  1. 从左侧导航栏中单击数据库。
  2. 单击“演示”。

使用 pgAdmin 添加新列

步骤3) 在查询编辑器中输入查询:

ALTER TABLE Book
  ADD author VARCHAR(50);

步骤4) 单击执行按钮。

使用 pgAdmin 添加新列

步骤5) 要检查该列是否已添加,请执行以下操作:

  1. 单击左侧导航中的数据库。
  2. 扩展演示。
  3. 展开架构。
  4. 展开公共。
  5. 展开表格。
  6. 導展書。
  7. 展开列。

使用 pgAdmin 添加新列

应该已经添加了该列,如下所示:

使用 pgAdmin 添加新列

重命名表列

要通过 pgAdmin 完成相同操作,请执行以下操作:

步骤1) 登录您的 pgAdmin 帐户。

步骤2)

  1. 从左侧导航栏中单击数据库。
  2. 单击“演示”。

使用 pgAdmin 重命名表列

步骤3) 在查询编辑器中输入查询:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

步骤4) 单击执行按钮。

使用 pgAdmin 重命名表列

步骤5) 要检查更改是否成功,请执行以下操作:

  1. 单击左侧导航中的数据库。
  2. 扩展演示。
  3. 展开架构。
  4. 展开公共。
  5. 展开表格。
  6. 導展書。
  7. 展开列。

使用 pgAdmin 重命名表列

各列现在应如下所示:

使用 pgAdmin 重命名表列

列更改成功。

设置列的默认值

要通过 pgAdmin 完成相同操作,请执行以下操作:

步骤1) 登录您的 pgAdmin 帐户。

步骤2)

  1. 从左侧导航栏中单击数据库。
  2. 单击“演示”。

设置列的默认值

步骤3) 在查询编辑器中输入查询:

ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';		

步骤4) 单击执行按钮。

设置列的默认值

步骤5) 为了测试,请在查询编辑器上运行以下命令:

INSERT INTO Book (id, name)
 VALUES (6, 'PostgreSQL for Beginners')

步骤6) 现在,我们可以查询表来检查默认值是否插入到 book_author 列中:

设置列的默认值

添加检查约束

要通过 pgAdmin 完成相同操作,请执行以下操作:

步骤1) 登录您的 pgAdmin 帐户。

步骤2)

  1. 从左侧导航栏中单击数据库。
  2. 单击“演示”。

使用 pgAdmin 添加检查约束

步骤3) 在查询编辑器中输入查询:

ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'))

步骤4) 单击执行按钮。

使用 pgAdmin 添加检查约束

步骤5) 要测试这一点,请执行以下操作:

  1. 在查询编辑器中输入以下查询:
    INSERT INTO Book
    VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');
    
  2. 单击执行按钮。

    使用 pgAdmin 添加检查约束

    它将返回以下内容:

使用 pgAdmin 添加检查约束

重命名表

要通过 pgAdmin 完成相同操作,请执行以下操作:

步骤1) 登录您的 pgAdmin 帐户。

步骤2)

  1. 从左侧导航栏中单击数据库。
  2. 单击“演示”。

使用 pgAdmin 重命名表

步骤3) 在查询编辑器中输入查询:

ALTER TABLE Book
  RENAME TO Books;

步骤4) 单击执行按钮。

使用 pgAdmin 重命名表

步骤5) 要检查表是否已重命名,请执行以下操作:

  1. 单击左侧导航中的数据库。
  2. 扩展演示。
  3. 展开架构。
  4. 展开公共。
  5. 展开表格。

使用 pgAdmin 重命名表

该表已成功重命名。

结语

  • ALTER TABLE 语句用于修改表的结构。
  • 根据您需要执行的任务,ALTER TABLE 命令有多种形式。
  • 该结构可以是表的列或表本身。
  • 我们可以使用此语句来改变表的名称。
  • ALTER TABLE 命令可用于设置列的默认值。
  • 该语句可用于验证输入到表列中的值。

下载本教程使用的数据库