给定使用以下方法创建的表:
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;
这允许您在一条语句中DROP, ADD和ALTER同一个表上的多个列。MySQL参考手册:
您可以在一个ALTER TABLE语句中发出多个ADD、ALTER、DROP和CHANGE子句,用逗号分隔。这是一个标准SQL的MySQL扩展,每个ALTER TABLE语句只允许每个子句中的一个。
删除单个列:
ALTER TABLE `table1` DROP `column1`;
删除多个列。
ALTER TABLE `table1`
DROP `column1`,
DROP `column2`,
DROP `column3`;
ALTER TABLE `tablename` DROP `columnname`;
Or,
ALTER TABLE `tablename` DROP COLUMN `columnname`;
使用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;
如果你运行的是MySQL 5.6以后的版本,你可以让这个操作在线,允许其他会话在执行这个操作时读写你的表:
ALTER TABLE tbl_Country DROP COLUMN IsDeleted, ALGORITHM=INPLACE, LOCK=NONE;
值得一提的是,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演示
当需要暂时“隐藏”一列,然后才能安全地删除它时(如重做相应的应用程序/报告等),它可能很有用。