PostgreSQL ALTER TABLE:添加和重命名列

什么是 ALTER TABLE 语句? PostgreSQL?
此 更改表 命令用于改变文件的结构 PostgreSQL 表。该命令用于更改表的列或表名本身,而无需删除表。ping 并重新创建该对象。
句法
以下是 PostgreSQL ALTER TABLE 命令:
ALTER TABLE table-name action;
表名参数是需要更改的表的名称。操作参数是需要执行的操作,例如更改列名或更改列的数据类型。
描述
ALTER TABLE 命令可更改现有表的定义。它采用以下子形式:
- 添加列:此命令使用与 CREATE TABLE 命令类似的语法向表中添加新列。
- 删除列:用于投放ping 表列。施加于这些列的约束和索引也将被删除。
- 设置/删除默认值用于设置或移除列的默认值。更改仅对后续的列生效。 INSERT 语句.
- 设置/删除非空:更改列是否允许空值。
- 设置统计信息:用于为 ANALYZE 操作的每一列设置统计信息收集目标。
- 设置存储:用于设置列的存储模式,是内联存储还是附加表中的存储。
- 不含 OID 的设置用于删除表中的旧 OID 列。
- 改名:用于更改表名或列名。
- 添加表约束用于向表中添加新约束。它使用与以下语法相同的语法: 创建表 命令。
- 下降约束用于滴落ping 表约束。
- 业主:用于将表、序列、索引或视图的所有者更改为特定用户。
- 田字形:用于将表标记为将来集群操作所用。
修改列
可以通过多种方式修改列。这些修改使用 ALTER TABLE 命令完成。下面我们将讨论这些方法。
添加新列
要将新列添加到 PostgreSQL 表,ALTER TABLE 命令使用以下语法:
ALTER TABLE table-name ADD new-column-name column-definition;
表名是要修改的表的名称。新列名是要添加的新列的名称。列定义是…… 数据类型 新增一列。请参见下方所示的“书籍”表格:
该表有两列,分别是 id 和 name。我们需要向表中添加一列,并将其命名为 author。只需运行以下命令:
ALTER TABLE Book ADD author VARCHAR(50);
运行上述命令后,Book表现在如下所示:
新列已成功添加。
重命名表列
我们可以使用 ALTER TABLE 命令来更改列的名称。在这种情况下,该命令的语法如下:
ALTER TABLE table-name RENAME COLUMN old-name TO new-name;
表名是要重命名列的表的名称。旧名称是列的当前名称,新名称是列的新名称。考虑下面所示的 Book 表:
书:
我们需要将“author”列的名称更改为“book_author”。以下是命令:
ALTER TABLE Book RENAME COLUMN author TO book_author;
运行命令之后我们可以查看表的结构:
列名已成功更改。
设置列的默认值
我们可以为列设置默认值,这样即使在 INSERT 操作期间未指定该列的值,也会使用默认值。在这种情况下,可以使用以下语法的 ALTER TABLE 命令:
ALTER TABLE table-name ALTER COLUMN column-name [SET DEFAULT value];
表名是要修改其列的表的名称。列名是要设置默认值的列的名称,值是该列的默认值。考虑以下 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;
表名是要修改的表的名称,表达式是要施加到表列上的约束。让我们修改 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;
table-name 是表的当前名称,new-table-name 是要分配给表的新名称。例如,让我们将 Book 表的名称更改为 Books:
ALTER TABLE Book RENAME TO Books;
使用 pgAdmin
到目前为止,所有操作都是通过 SQL shell 执行的。现在让我们看看如何使用 pgAdmin 以可视化的方式执行这些操作。
添加新列
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 在左侧的导航栏中,单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
ALTER TABLE Book ADD author VARCHAR(50);
步骤4) 单击执行按钮。
步骤5) 要检查该列是否已添加,请执行以下操作:
- 单击左侧导航中的数据库。
- 扩展演示。
- 展开架构。
- 展开公共。
- 展开表格。
- 導展書。
- 展开列。
应该已经添加了该列,如下所示:
重命名表列
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 在左侧的导航栏中,单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
ALTER TABLE Book RENAME COLUMN author TO book_author;
步骤4) 单击执行按钮。
步骤5) 要检查更改是否成功,请像以前一样展开书籍表格列:
各列现在应如下所示:
列更改成功。
设置列的默认值
步骤1) 登录您的 pgAdmin 帐户。
步骤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 列中:
添加检查约束
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 在左侧的导航栏中,单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'))
步骤4) 单击执行按钮。
步骤5) 要测试此功能,请在查询编辑器中输入以下查询,然后单击“执行”按钮:
INSERT INTO Book VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');
它将返回以下内容:
重命名表
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 在左侧的导航栏中,单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
ALTER TABLE Book RENAME TO Books;
步骤4) 单击执行按钮。
步骤5) 要检查表是否已重命名,请展开“数据库”>“演示”>“架构”>“公共”>“表”:
该表已成功重命名。

























