给定使用以下代码创建的表格:
CREATE TABLE tbl_Country
(
CountryId INT NOT NULL AUTO_INCREMENT,
IsDeleted bit,
PRIMARY KEY (CountryId)
)
我该如何删除列IsDeleted
?
给定使用以下代码创建的表格:
CREATE TABLE tbl_Country
(
CountryId INT NOT NULL AUTO_INCREMENT,
IsDeleted bit,
PRIMARY KEY (CountryId)
)
我该如何删除列IsDeleted
?
ALTER TABLE tbl_Country DROP COLUMN IsDeleted;
这里有一个可运行的示例。
请注意,COLUMN
关键字是可选的,因为MySQL将接受只有DROP IsDeleted
。此外,要删除多个列,您必须用逗号分隔它们,并包括每个列的DROP
。
ALTER TABLE tbl_Country
DROP COLUMN IsDeleted,
DROP COLUMN CountryName;
根据MySQL参考手册,您可以在一条语句中使用DROP
、ADD
和ALTER
等多个列对同一张表进行操作。
您可以在单个
ALTER TABLE
语句中使用多个ADD
、ALTER
、DROP
和CHANGE
子句(用逗号分隔)。这是 MySQL 对标准 SQL 的扩展,标准 SQL 只允许每个ALTER TABLE
语句中包含每个子句的一个实例。
使用 ALTER TABLE
命令和 DROP COLUMN
子句来删除表中的列,并使用 CHANGE
或 MODIFY
子句来更改列。
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 `table1` DROP `column1`;
要删除多个列:
ALTER TABLE `table1`
DROP `column1`,
DROP `column2`,
DROP `column3`;
您可以使用
alter table <tblname> drop column <colname>
ALTER TABLE `tablename` DROP `columnname`;
或者,
ALTER TABLE `tablename` DROP COLUMN `columnname`;
如果您使用的是 MySQL 5.6 及以上版本,您可以在线执行此操作,允许其他会话在操作进行时读写您的表:
ALTER TABLE tbl_Country DROP COLUMN IsDeleted, ALGORITHM=INPLACE, LOCK=NONE;
使用ALTER
命令:
ALTER TABLE `tbl_Country` DROP COLUMN `column_name`;
ALTER TABLE tbl_Country DROP columnName;
值得一提的是,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;
在需要安全删除某列之前,将该列“隐藏”一段时间可能是很有用的场景,例如重新设计相应的应用程序/报告等。