如何修改表结构_mysql alter table用法

来源:这里教程网 时间:2026-02-28 20:42:06 作者:

修改 MySQL 表结构主要通过

ALTER TABLE
语句实现,它支持添加、删除、修改字段,调整主键/索引,更改表名和存储引擎等操作。关键在于语法准确、注意数据影响,并在生产环境操作前务必备份。

添加字段(ADD COLUMN)

在表末尾或指定位置插入新列:

基础写法:
ALTER TABLE 表名 ADD COLUMN 字段名 数据类型 [约束];
指定位置:
ADD COLUMN 字段名 INT AFTER 已有字段名;
FIRST
放最前
示例:
ALTER TABLE users ADD COLUMN phone VARCHAR(20) NOT NULL DEFAULT '';

修改字段定义(MODIFY / CHANGE)

MODIFY
仅改类型和约束,不改名;
CHANGE
可同时改名和定义:

改类型(不重命名):
ALTER TABLE users MODIFY email VARCHAR(100) NOT NULL;
改名+改类型:
ALTER TABLE users CHANGE old_name new_name INT UNSIGNED;
注意:
CHANGE
必须写两次字段名,大小写敏感,且会重建字段

删除与重命名字段(DROP / RENAME COLUMN)

MySQL 8.0+ 支持标准

DROP COLUMN
RENAME COLUMN

删除字段:
ALTER TABLE users DROP COLUMN temp_flag;
重命名字段:
ALTER TABLE users RENAME COLUMN old_col TO new_col;
旧版本(CHANGE 实现重命名(类型保持一致即可)

管理索引与主键

常用操作包括增删主键、唯一索引、普通索引:

添加主键:
ALTER TABLE users ADD PRIMARY KEY (id);
(要求字段非空且无重复)
删除主键:
ALTER TABLE users DROP PRIMARY KEY;
(若为自增字段,可能需先删 AUTO_INCREMENT)
建索引:
ALTER TABLE users ADD INDEX idx_name (name);
删索引:
ALTER TABLE users DROP INDEX idx_name;

操作前建议用

SHOW CREATE TABLE 表名;
查看当前结构,执行后可用
DESC 表名;
验证。大表修改可能锁表或耗时较长,线上环境优先考虑 pt-online-schema-change 等工具。

相关推荐