如何从MySQL中的表中删除列

时间:2012-12-20 09:04:03

标签: mysql ddl alter-table

鉴于使用以下方式创建的表:

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

如何删除列IsDeleted

14 个答案:

答案 0 :(得分:679)

ALTER TABLE tbl_Country DROP COLUMN IsDeleted;

Here's一个有效的例子。

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

ALTER TABLE tbl_Country
  DROP COLUMN IsDeleted,
  DROP COLUMN CountryName;

这允许您在一个语句中的同一个表上的DROPADDALTER多个列。来自MySQL reference manual

  

您可以在单个ADD语句中发出多个ALTERDROPCHANGEALTER TABLE子句,以逗号分隔。这是标准SQL的MySQL扩展,每个ALTER TABLE语句只允许每个子句中的一个。

答案 1 :(得分:89)

使用ALTER TABLEDROP 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;

答案 2 :(得分:40)

要从表中删除单个列,您可以使用:

ALTER TABLE table_name DROP COLUMN Column_name;

要删除多个列,请执行以下操作:

ALTER TABLE table_name DROP COLUMN Column_name, DROP COLUMN Column_name;

答案 3 :(得分:26)

删除表格中的列。

ALTER TABLE tbl_Country DROP COLUMN IsDeleted1, DROP COLUMN IsDeleted2;

或者没有'COLUMN'字样

ALTER TABLE tbl_Country DROP IsDeleted1, DROP IsDeleted2;

答案 4 :(得分:24)

要删除列,请使用

ALTER TABLE `tbl_Country` DROP `your_col`

答案 5 :(得分:15)

您可以使用

alter table <tblname> drop column <colname>

答案 6 :(得分:11)

ALTER TABLE `tablename` DROP `columnname`;

或者,

ALTER TABLE `tablename` DROP COLUMN `columnname`;

答案 7 :(得分:7)

使用ALTER

ALTER TABLE `tbl_Country` DROP COLUMN `column_name`;

答案 8 :(得分:6)

ALTER TABLE tbl_Country DROP columnName;

答案 9 :(得分:6)

ALTER TABLE `tbl_Country` DROP `IsDeleted`;

答案 10 :(得分:6)

如果您正在运行MySQL 5.6,您可以在线执行此操作,允许其他会话在执行操作时读取和写入您的表:

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

答案 11 :(得分:3)

ALTER TABLE table_name DROP COLUMN column_name

答案 12 :(得分:0)

当我们执行从表中删除列的操作时,它会更改表的结构。为了执行这种操作,我们需要使用数据定义语言(DDL)语句。在这种情况下,我们必须使用ALTER语句。

ALTER - 改变数据库的结构

查询将是 -

alter table tbl_Country drop column IsDeleted;

答案 13 :(得分:0)

值得一提的是,MySQL 8.0.23 及以上版本支持Invisible Columns

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 demo

在需要暂时“隐藏”一列才能安全删除(例如返工相应的应用程序/报告等)的情况下,它可能很有用。