PostgreSQL 删除列17 Mar 2025 | 4 分钟阅读 在本节中,我们将讨论如何使用 ALTER TABLE 命令删除列。 PostgreSQL DROP COLUMN 命令我们将使用 ALTER TABLE 命令中的 DROP COLUMN 条件来删除表的列 PostgreSQL 会自动删除其所有约束和索引,包括从表中删除列时该列,并且每个删除列条件都用逗号 (,) 分隔。 我们不能删除其他对象依赖的列,也不能删除其他数据库对象(如触发器、视图、存储过程等)中使用的列。 因此,为了删除这些列及其所有连接的对象,我们将在 drop column 命令中使用 CASCADE 选项,如下所示 如果我们想删除一个不存在的列,PostgreSQL 会引发一个问题。我们将在 drop column 命令中添加 IF EXISTS 条件来克服这个错误,如下面的命令所示 在上面的命令中,如果我们删除一个不存在的列,PostgreSQL 将引发一个通知而不是一个错误。 如果我们需要在单个命令中删除表的多个列,我们将使用以下命令 PostgreSQL DROP COLUMN 命令示例让我们看一些例子来理解 ALTER TABLE DROP COLUMN 命令的工作原理。 因此,我们将创建三个不同的表,例如 Product、Categories 和 Brand。 ![]() 在上面的图中,每个 Product 仅包含一个 brand,每个 brand 可以有多个产品。每个产品都分配给一个 category,每个 category 可以有多个产品。 以下命令用于创建三个表 (Categories, Product, and Brand) 使用以下命令创建 Categories 表 输出 执行上述命令后,我们将收到以下消息;Categories 表已创建。 ![]() 使用以下语句创建 Product 表 输出 执行上述命令后,我们将收到以下消息;Product 表已创建。 ![]() 使用以下命令创建 Brand 表 输出 执行上述命令后,我们将收到以下消息;Brand 表已创建。 ![]() 此外,我们基于 Product 和 Brand 表创建一个视图,如下所示 输出 执行上述命令后,我们将收到以下消息;Product_info 视图已创建。 ![]() 如果我们想删除 Product 表的 cate_id 列,我们将使用以下命令 输出 执行上述命令后,我们将收到以下消息;cate_id 列已从 Product 表中删除。 ![]() 如果我们想在 psql 中查看表,我们将使用以下命令 ![]() 正如我们在上面的屏幕截图中所看到的,上面的命令删除了 Cate_id 列,并将 Cate_id 列包含到外键约束中。 现在我们将尝试从 Product 表中删除 Brand_id 列。 一旦我们执行上面的命令,PostgreSQL 将引发以下错误 ![]() 它表明 product_info 视图正在使用 Product 表的 Brand_id 列。 因此,我们将使用 cascade 选项来删除 Brand_id 列和 Product_info 视图,使用以下命令 一旦我们执行上面的命令,它将引发以下 notice 并删除特定的列。 ![]() 在这里,我们将在一个命令中删除 list_price 和 Model_year 列,我们需要使用 multiple DROP COLUMN 条件,如下所示 输出 执行上述命令后,我们将获得以下消息窗口:List_price 和 Model_year 列已从 Product 表中删除。 ![]() 如果我们想查看上述操作是否正常工作,我们将使用 Select 命令 输出 在执行上述命令后,我们将获得以下输出 ![]() 下一个主题PostgreSQL 更改列类型 |
我们请求您订阅我们的新闻通讯以获取最新更新。