使用 ALTER TABLE DROP COLUMN 语句可删除表的列以及在该列上创建的现有数据、索引和约束。

ALTER TABLE <table_name>
DROP COLUMN [IF EXISTS] <column_name> [CASCADE | RESTRICT]; 

假设您已经有以下 employee 表。

以下 ALTER TABLE 语句将删除 employee 表的 email 列及其所有数据。

ALTER TABLE employee
DROP COLUMN email; 

注意:如果您尝试删除不存在的列,请使用IF EXISTS子句。仅当列存在时它才会删除列,否则 PostgreSQL 将仅给出警告并忽略删除命令。

删除依赖对象

如果您尝试删除的列正在任何其他数据库对象(如视图、触发器、过程、函数等)中使用,则 PostgreSQL 将引发错误并且不会删除列。 将 CASCADE 子句与 DROP COLUMN 语句结合使用可从表中删除列以及使用该列的依赖数据库对象。

例如,在 employee 表上创建以下 employee_view 视图,如下所示。

CREATE OR REPLACE VIEW employee_dtl
AS SELECT * FROM employee; 

现在,如果您尝试删除 employee 表的 email 列,那么 PostgreSQL 将引发错误,如下所示。

PostgreSQL 删除字段

要删除其他数据库对象中正在使用的列,请使用 CASCADE 子句和 DROP 命令,如下所示。

ALTER TABLE employee
DROP COLUMN email CASCADE; 

PostgreSQL 删除字段

CASCADE 子句也将删除依赖对象。上述语句还删除了 employee_dtl 视图。

删除多列

使用多个 DROP COLUMN 子句删除表中的多个列。

ALTER TABLE employee
DROP COLUMN email CASCADE,
DROP COLUMN gender; 

使用 pgAdmin 删除列

您可以通过右键单击表名称并选择"属性"来删除 pgAdmin 中的一列或多列。 在弹出窗口中,转到"列"选项卡,您可以单击列前面的删除图标将其删除,如下所示。

PostgreSQL 删除字段

单击"保存"按钮保存更改。