MySQL修改表结构

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;

文章评论

0条评论