MySQL中列的增删改

2019-06-25  本文已影响0人  djz0306

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

增加列

先建一张表只有 id 列一列,如下所示:

m1 表结构.jpg

列的增加和新建差不多,关键都在于列名称、列类型、列参数,格式为:

alter table 表名 add 列名称 列类型 列参数;

例如:

alter table m1 add username char(20) not null default '';

结果如下:

增加 username 列.jpg

这样加的话会默认加在表的最后。如果要指定位置,可以增加 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;

结果如下:

将新列增加到指定的列后面.jpg

如果想把新列放在第一位,那就需要使用 first 例如:

alter table m1 add pid int not null default 0 first;

结果如下:

![删除 pid 列.jpg](https://img.haomeiwen.com/i18246544/26e48e25230be5d9.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

删除列

删除列相对简单,格式为:

alter table 表名 drop 列名;

例如删除 pid 列:

alter table m1 drop pid;

结果如下:

删除 pid 列.jpg

修改列

修改列类型

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

alter table 表名 modify 列名 新的类型 新参数;

例如:

修改列类型.jpg

修改列名及列类型

如果要改列名则需要用到 change ,格式为:

alter table 表名 change 旧列名 新列名 新类型 新参数

例如:

alter table m1 change id uid int unsigned;

改后列名变为 uid 且自增长就丢失了,不过主键索引还是在的,结果如下:

修改列名和列类型.jpg

主键的修改可以使用 drop primary key 和 add primary key,这个在后面和主键相关的内容中一起整理。

如果在修改列类型的时候,导致数据存不下,例如 int 改为 smallint 数据将会丢失,在 strict_mode 下会修改失败

上一篇 下一篇

猜你喜欢

热点阅读