Skip to main content

如何使用MySQL drop column从表中删除列

MySQL DROP-COLUMN语句简介

在某些情况下,需要从表中删除一列或多列。在这种情况下,可以使用以下ALTER TABLE DROP COLUMN语句:

ALTER TABLE table_name
DROP COLUMN column_name;

在这种语法中:

请注意,DROP COLUMN子句中的关键字COLUMN关键字是可选的,因此您可以使用更短的语句,如下所示:

ALTER TABLE table_name
DROP column_name;

要使用单个ALTER table语句从表中删除多个列,请使用以下语法:

ALTER TABLE table_name
DROP COLUMN column_name_1,
DROP COLUMN column_name_2,
...;

在从表中删除列之前,您应该记住以下几点:

MySQL下拉列表示例

首先,为演示创建一个名为posts的表。

CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
excerpt VARCHAR(400),
content TEXT,
created_at DATETIME,
updated_at DATETIME
);

接下来,使用ALTER TABLE DROP COLUMN语句删除摘录列:

ALTER TABLE posts
DROP COLUMN excerpt;

然后,使用descripe语句查看表结构:

DESCRIBE posts;

MySQL DROP COLUMN example

之后,使用ALTER TABLE DROP COLUMN语句删除创建的_at和更新的_at列:

ALTER TABLE posts
DROP COLUMN created_at,
DROP COLUMN updated_at;

最后,使用描述语句验证删除:

DESCRIBE posts;

MySQL删除一列,这是一个外键示例

如果删除作为外键的列,MySQL将发出一个错误。考虑下面的例子。

首先,创建一个名为categories的表:

CREATE TABLE categories (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
);

其次,将名为category_id的列添加到posts表中。

ALTER TABLE posts 
ADD COLUMN category_id INT NOT NULL;

第三,将category_id列作为引用categories表的id列的外键列。

ALTER TABLE posts 
ADD CONSTRAINT fk_cat
FOREIGN KEY (category_id)
REFERENCES categories(id);

第四,从posts表中删除category_id列。

ALTER TABLE posts
DROP COLUMN category_id;

MySQL发出了一条错误消息:

Error Code: 1553. Cannot drop index 'fk_cat': needed in a foreign key constraint

要避免此错误,必须在删除列之前删除外键约束。

在本教程中,我们向您展示了如何使用MySQL DROP COLUMN语句从表中删除一个或多个列。