如何从MySQL表中删除一列

512

给定使用以下代码创建的表格:

CREATE TABLE tbl_Country
(
  CountryId INT NOT NULL AUTO_INCREMENT,
  IsDeleted bit,
  PRIMARY KEY (CountryId) 
)

我该如何删除列IsDeleted

9个回答

798
ALTER TABLE tbl_Country DROP COLUMN IsDeleted;

这里有一个可运行的示例。

请注意,COLUMN关键字是可选的,因为MySQL将接受只有DROP IsDeleted。此外,要删除多个列,您必须用逗号分隔它们,并包括每个列的DROP

ALTER TABLE tbl_Country
  DROP COLUMN IsDeleted,
  DROP COLUMN CountryName;

根据MySQL参考手册,您可以在一条语句中使用DROPADDALTER等多个列对同一张表进行操作。

您可以在单个ALTER TABLE语句中使用多个ADDALTERDROPCHANGE子句(用逗号分隔)。这是 MySQL 对标准 SQL 的扩展,标准 SQL 只允许每个ALTER TABLE语句中包含每个子句的一个实例。


99

使用 ALTER TABLE 命令和 DROP COLUMN 子句来删除表中的列,并使用 CHANGEMODIFY 子句来更改列。

ALTER TABLE tbl_Country DROP COLUMN IsDeleted;
ALTER TABLE tbl_Country MODIFY IsDeleted tinyint(1) NOT NULL;
ALTER TABLE tbl_Country CHANGE IsDeleted IsDeleted tinyint(1) NOT NULL;

你可以使用“Change”或“Modify”列来完成相同的操作。查看链接,了解使用ALTER TABLE更新列的方法。 - Saharsh Shah

42
删除单个列:

要删除单个列:

ALTER TABLE `table1` DROP `column1`;

要删除多个列:

ALTER TABLE `table1`
DROP `column1`,
DROP `column2`,
DROP `column3`;

它也适用于包含“保留字”(如“order”)的列。 - Andre Pereira

16

您可以使用

alter table <tblname> drop column <colname>

15
ALTER TABLE `tablename` DROP `columnname`;

或者,

ALTER TABLE `tablename` DROP COLUMN `columnname`;

13

如果您使用的是 MySQL 5.6 及以上版本,您可以在线执行此操作,允许其他会话在操作进行时读写您的表:

ALTER TABLE tbl_Country DROP COLUMN IsDeleted, ALGORITHM=INPLACE, LOCK=NONE;

10

使用ALTER命令:

ALTER TABLE `tbl_Country` DROP COLUMN `column_name`;

8
ALTER TABLE tbl_Country DROP columnName;

3

值得一提的是,MySQL 8.0.23及以上版本支持隐藏列

CREATE TABLE tbl_Country(
  CountryId INT NOT NULL AUTO_INCREMENT,
  IsDeleted bit,
  PRIMARY KEY (CountryId) 
);

INSERT INTO tbl_Country VALUES (1, 1), (2,0);

ALTER TABLE tbl_Country ALTER COLUMN IsDeleted SET INVISIBLE;

SELECT * FROM tbl_Country;
CountryId
1
2

ALTER TABLE tbl_Country DROP COLUMN IsDeleted;

db<>fiddle演示

在需要安全删除某列之前,将该列“隐藏”一段时间可能是很有用的场景,例如重新设计相应的应用程序/报告等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接