MySQL 删除列
简介:在本教程中,您将学习如何使用MySQL DROP COLUMN语句从表中删除列。
MySQL DROP COLUMN语句简介
在某些情况下,您想要从表中删除一个或多个列。
在这种情况下,请使用以下ALTER TABLE DROP COLUMN语句:
ALTER TABLE table_name DROP COLUMN column_name;
使用以下语法:
首先,在ALTER TABLE关键字之后指定包含要删除的列的表的名称。
其次,在DROP COLUMN子句中指定要删除的列的名称。
请注意,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 DROP COLUMN示例
首先,为演示创建一个名为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;
然后,使用DESCRIBE语句查看表结构:
DESCRIBE posts;
之后,使用ALTER TABLE DROP COLUMN语句删除created_at和updated_at列:
ALTER TABLE posts DROP COLUMN created_at, DROP COLUMN updated_at;
最后,使用DESCRIBE语句验证删除:
DESCRIBE posts;
MySQL删除了一个外键示例列
如果删除作为外键的列,MySQL将发出错误。
考虑以下示例。
首先,创建一个名为category的表:
CREATE TABLE categories ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) );
其次,在posts表中添加一个名为category_id的列。
ALTER TABLE posts ADD COLUMN category_id INT NOT NULL;
第三,使category_id列作为对该类别表的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语句从表中删除一个或多个列。