鉴于使用创建的表:
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 参考手册:
您可以在单个语句中发出多个
ADD
、ALTER
、DROP
和子句,用逗号分隔。这是标准 SQL 的 MySQL 扩展,每条语句只允许每个子句中的一个。CHANGE
ALTER TABLE
ALTER TABLE
使用ALTER TABLE
withDROP 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 及以上版本支持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;
在需要暂时“隐藏”列才能安全删除它的情况下(例如重新处理相应的应用程序/报告等),它可能很有用。