MySQL 中使用 ALTER TABLE 命令可以改变已有表的结构。可以通过 ALTER TABLE 命令来添加、修改或删除表的列、修改表的名称或者修改表的存储引擎。在下面的攻略中,我们将主要关注如何修改表结构中的多列/多字段。
1. 添加列
添加列使用 ALTER TABLE 命令加上 ADD COLUMN 子句。如下所示:
ALTER TABLE `table_name`
ADD COLUMN `column_name1` INT(11),
ADD COLUMN `column_name2` VARCHAR(255);
上面的例子中,我们在 table_name
表中添加了两个新列:一个整数类型 column_name1
,长度为11;一个字符串类型 column_name2
,长度为255。
2. 修改列
修改列可以使用 ALTER TABLE 命令加上 MODIFY COLUMN 子句。可以修改列的数据类型、长度以及列名。例如,将表 table_name
中的列 column_name1
修改为 VARCHAR(45),列名修改为new_column_name
:
ALTER TABLE `table_name`
MODIFY COLUMN `column_name1` VARCHAR(45) NOT NULL COMMENT '新的列注释',
CHANGE COLUMN `column_name1` `new_column_name` VARCHAR(45) NOT NULL COMMENT '新的列注释';
上述语句以逗号分隔了两条 SQL 语句。第一条使用 MODIFY COLUMN 子句将数据类型改为 VARCHAR (45)
,同时添加了 NOT NULL 约束和 COMMENT 注释。第二条使用了 CHANGE COLUMN 子句将列名column_name1
修改为 new_column_name
。
3. 删除列
删除列使用 ALTER TABLE 命令加上 DROP COLUMN 子句。例如,将表 table_name
中的 column_name1
和 column_name2
删除:
ALTER TABLE `table_name`
DROP COLUMN `column_name1`,
DROP COLUMN `column_name2`;
上述 SQL 语句会删除表 table_name
中的 column_name1
和 column_name2
两列。
除了以上三种常见的修改表结构的方式之外,还有其他的方式,比如重命名表列、修改列顺序等等。需要注意的是,修改表结构的操作可能会影响到表中已有的数据,因此必须谨慎操作。建议在修改表结构之前备份数据。
附上一个修改表结构的完整示例:
-- 创建表
CREATE TABLE `test_table` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(255) NOT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='测试表';
-- 添加新的列
ALTER TABLE `test_table`
ADD COLUMN `gender` VARCHAR(4) NOT NULL DEFAULT '男' COMMENT '性别'
AFTER `name`;
-- 修改列
ALTER TABLE `test_table`
MODIFY COLUMN `age` TEXT COMMENT '年级',
CHANGE COLUMN `name` `username` VARCHAR(255) COMMENT '用户名';
-- 删除列
ALTER TABLE `test_table`
DROP COLUMN `gender`;
-- 清空表
TRUNCATE TABLE `test_table`;
上述代码示例中创建了一个表 test_table
,然后添加了一个新的列 gender
,修改了原有的 age
列的 COMMENT 注释和 name
列的列名,并删除了 gender
列,最后清空了表中的所有数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql如何修改表结构(alter table),多列/多字段 - Python技术站