如何在MySQL中从表中删除列

如何在MySQL中从表中删除列,mysql,ddl,alter-table,Mysql,Ddl,Alter Table,给定使用以下方法创建的表: CREATE TABLE tbl_Country ( CountryId INT NOT NULL AUTO_INCREMENT, IsDeleted bit, PRIMARY KEY (CountryId) ) 如何删除列IsDeleted ALTER TABLE tbl_Country DROP COLUMN IsDeleted; 一个有效的例子 请注意,列关键字是可选的,因为MySQL只接受DROP-IsDeleted。此外,要删除多个列,您必

给定使用以下方法创建的表:

CREATE TABLE tbl_Country
(
  CountryId INT NOT NULL AUTO_INCREMENT,
  IsDeleted bit,
  PRIMARY KEY (CountryId) 
)
如何删除列
IsDeleted

ALTER TABLE tbl_Country DROP COLUMN IsDeleted;
一个有效的例子

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

ALTER TABLE tbl_Country
  DROP COLUMN IsDeleted,
  DROP COLUMN CountryName;
这允许您在一条语句中
删除
添加
更改
同一表中的多个列。从:

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


要删除列,请使用此

ALTER TABLE `tbl_Country` DROP `your_col`

使用
ALTER

ALTER TABLE`tbl\u Country`DROP COLUMN`COLUMN\u name`;
或者

你可以用

alter table <tblname> drop column <colname>
altertabledrop列
删除列
一起使用可从表中删除列,与
更改
修改
一起使用可更改列

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;

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

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

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


在需要暂时“隐藏”某个列才能安全删除(如重新编写相应的应用程序/报告等)的情况下,它可能很有用。

您可以使用“更改”或“修改”列来执行相同的操作。检查该链接,该链接将为您提供使用ALTER TABLE更新列的想法。它也适用于带有
保留字的列,如
顺序
alter table <tblname> drop column <colname>
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;
ALTER TABLE tbl_Country DROP COLUMN IsDeleted, ALGORITHM=INPLACE, LOCK=NONE;
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;