MySQL使用alter table语法对表结构进行修改,比如添加字段,修改字段类型,删除字段,添加索引,删除索引,修改字符集等等,下面总结了一些常用的修改表结构示例。
一、修改字段
1、增加字段
alter table tb add column age int default 0 comment ‘age’;
2、在某个字段之后增加字段
alter table tb add column name varchar(50) default null comment ‘name’ after id;
3、增加字段,放在表字段的开头
alter table tb add column type varchar(50) default null comment ‘type’ first;
4、删除字段
alter table tb drop column type;
5、修改字段名称或者类型
alter table tb change age age_new int default 10 comment ‘age_new’;
6、修改字段类型
alter table tb modify age varchar(50);
change 与 modify区别在于change可以修改字段名称,也可以修改字段类型,而modify只能修改字段类型,不能修改名称。
二、修改索引
1、增加单列索引
alter table tb add index idx_name(name);
2、增加联合索引
alter table tb add index idx_name_age(name,age);
3、增加唯一索引
alter table tb add unique key uk_name(name);
4、增加主键
alter table tb add primary key(id);
5、删除主键
alter table tb drop primary key;
6、删除索引
alter table tb drop index idx_name;
7、修改索引名称
alter table tb rename index idx_name_age to idx_name_age_new;
三、修改字符集
1、修改数据库字符集
alter database db_new charset utf8mb4;
2、修改表字符集
alter table tb charset=utf8mb4;
3、修改表字符集和校验规则
alter table tb charset=utf8mb4 collate=utf8mb4_general_ci;
4、修改表字段的字符集和校验规则
alter table tb modify name varchar(50) character set utf8 collate utf8_general_ci;
注意:
对同一个表的多处表结构进行修改,可放到一个SQL里执行,避免在表数据量非常大的情况下,多次执行改表SQL,耗时长,影响正常数据库服务。
比如:增加两个字段
alter table tb add column c1 int;
alter table tb add column c2 int;
合并成一个SQL:
alter table tb add column c1 int, add column c2 int;