上一篇分析了如何更好地建立一张表,一张表中放哪些列更合适。但是建表过程中难免会建错,或者在开发过程中需求变化,业务变化,难免需要对表的结构进行修改。本篇就整理一下如何对表的结构进行修改。
增加列
先建一张表只有 id 列一列,如下所示:

列的增加和新建差不多,关键都在于列名称、列类型、列参数,格式为:
alter table 表名 add 列名称 列类型 列参数;
例如:
alter table m1 add username char(20) not null default '';
结果如下:

这样加的话会默认加在表的最后。如果要指定位置,可以增加 after 列名
,这样能把新列指定加在某列后面。例如:
alter table m1 add birth date not null default "0000-00-00";
alter table m1 add gender char(1) not null default '' after username;
结果如下:

如果想把新列放在第一位,那就需要使用 first 例如:
alter table m1 add pid int not null default 0 first;
结果如下:

删除列
删除列相对简单,格式为:
alter table 表名 drop 列名;
例如删除 pid 列:
alter table m1 drop pid;
结果如下:

修改列
修改列类型
如果要修改列的类型,例如顺应时代潮流,除了男女还有了双性,则需要将 gender 列改为 char(2),格式为:
alter table 表名 modify 列名 新的类型 新参数;
例如:

修改列名及列类型
如果要改列名则需要用到 change ,格式为:
alter table 表名 change 旧列名 新列名 新类型 新参数
例如:
alter table m1 change id uid int unsigned;
改后列名变为 uid 且自增长就丢失了,不过主键索引还是在的,结果如下:

主键的修改可以使用 drop primary key 和 add primary key,这个在后面和主键相关的内容中一起整理。
如果在修改列类型的时候,导致数据存不下,例如 int 改为 smallint 数据将会丢失,在 strict_mode 下会修改失败
网友评论