mysql alter 最佳实践总结

目录

字段相关

如何添加字段?

如何在指定字段后面添加字段?

如何给字段设置默认值呢?

如何给字段添加注释?

如何在指定字段后面添加字段,同时设置默认值且添加注释?

如何删除字段?

如何修改字段名?

索引相关

如何给字段添加索引?

如何给字段设置特定长度索引?

如何给多个字段添加联合索引?

如何给字段添加唯一索引?

如何删除索引?


本文主要总结工作这些年来,mysql alter 的实践经验。

以 user 表为例,来说明添加字段、添加索引的语法和示例。

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(50) NOT NULL COMMENT '用户名',
  `create_datetime` datetime NOT NULL COMMENT '创建时间',
  `update_datetime` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

字段相关

如何添加字段?

ALTER table 表名 ADD COLUMN 字段名 字段类型;

举例说明:给 user 表添加 age 字段 。

ALTER table user ADD COLUMN age int(11);

tipsmysql 默认将新增字段添加到最后一列。如果说将 age 字段添加在 update_datetime 字段后面,是不是很难看?为了看起来优雅,我们可以在指定字段后面添加字段。

如何在指定字段后面添加字段?

ALTER table 表名 ADD COLUMN 字段名 字段类型 after 指定字段;

举例说明:为了看起来优雅,我们在 name 字段后面添加 age 。

ALTER table user ADD COLUMN age int(11) after name;

字段看起来优雅了,但是我们这块假设有一个需求给字段设置默认值,如何操作呢?

如何给字段设置默认值呢?

ALTER table 表名 ALTER COLUMN 字段 set default 默认值;

举例说明:假设给年龄设置默认值0。

ALTER table user ALTER COLUMN age set default 0;

字段优雅了,也有了默认值,但是后来者如何知道该字段是什么意思呢?我们这块可以给字段添加注释。

如何给字段添加注释?

ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 COMMENT 注释;

举例说明:给年龄字段添加注释。

ALTER TABLE user MODIFY COLUMN age int(11) COMMENT '年龄';

前面只是添加字段、在指定字段后面添加字段、给字段设置默认值、给字段添加注释四个基本操作,为了得到优雅、完善、利他的结果,我们可以将基本操作组合起来使用。

如何在指定字段后面添加字段,同时设置默认值且添加注释?

ALTER TABLE 表名 ADD COLUMN 字段名 字段类型 default 默认值 COMMENT 注释 after 指定字段;​

举例说明:在 name 字段后面添加 age 字段,设置默认值 0,且添加年龄注释。

ALTER TABLE user ADD COLUMN age int(11) default 0 COMMENT '年龄' after name;

如果有一天因为业务需求,某一个字段不在需要了,我们这块需要将字段删除。

如何删除字段?

ALTER table 表名 DROP COLUMN 字段名;

举例说明:删除 age 字段。

ALTER table user DROP COLUMN age;

突然有一天在创建字段的时候,字段拼错了,需要修改字段名。

如何修改字段名?

ALTER table 表名 CHANGE 原字段名 新字段名 字段类型;

举例说明:name nick_name

ALTER table user CHANGE name nick_name varchar(50);

索引相关

为了加快对数据的读写,需要对字段添加索引。

如何给字段添加索引?

ALTER table 表名 ADD key 索引名(字段名);

举例说明:给 name 字段添加索引。

ALTER table user ADD key idx_name(name);

假设表中的一个字段特长,给字段添加索引后,索引特别大,为了使得索引小点,我们发现给字段设置特定长度也能满足需求,解决问题。

如何给字段设置特定长度索引?

ALTER table 表名 ADD key 索引名(字段名(长度));

举例说明:给 name 设置长度为10的索引 

ALTER table user ADD key idx_name(name(10));

由于业务上的需求,需要对多个字段加索引。

如何给多个字段添加联合索引?

ALTER table 表名 ADD key 索引名(字段名1,字段名2...);

举例说明:给 name 和 age 添加联合索引 

ALTER table user ADD key idx_name_age(name, age);

业务上有时候为了保证唯一性,需要添加唯一约束条件。

如何给字段添加唯一索引?

ALTER table 表名 ADD unique 索引名(字段名);

举例说明:给 name 字段添加唯一索引 

ALTER table user ADD unique idx_name(name);

当索引不在需要的时候,可以将索引删除。

如何删除索引?

ALTER table 表名 DROP index 索引名;

举例说明:删除 name 索引 

ALTER table user DROP index idx_name;

猜你喜欢

转载自blog.csdn.net/jack1liu/article/details/110678755