ALTER命令
当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。
查看表字段和定义可以使用如下语法:
mysql> SHOW COLUMNS FROM `tpr_resource_attr`;
显示结果将表字段名,字段长度, 类型, 主键等信息都打印出来。
先创建表
mysql> CREATE TABLE testalter_tbl (i INT, c CHAR(1)) ;
1、删除表testalter_tbl的字段i
mysql> ALTER TABLE testalter_tbl DROP i;
2、添加字段字段i
mysql> ALTER TABLE testalter_tbl ADD i INT;
3、修改字段顺序1
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST; # 增加字段i并定位到第一列
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c; # AFTER 字段名(设定位于某个字段之后)
#结果通过show columns可以看出字段定义的列顺序变化。
#FIRST 和 AFTER 关键字只占用于 ADD 子句,所以如果你想重置数据表字段的位置就需要先使用 DROP 删除字段然后使用 ADD 来添加字段并设置位置。
4、修改字段顺序2 -- 在不需要add字段的情况下可以修改字段类型和顺序
mysql> ALTER TABLE alter_tbl MODIFY j INT AFTER i; # 将字段j从原来的bigint类型修改为int,顺序置于字段i之后
mysql> ALTER TABLE alter_tbl MODIFY j INT FIRST; # 将字段j
5、修改字段定义
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10); # 字段长度从1改为10
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT; # 将字段i改成j,并修改字段类型为bigint,长度默认为20
mysql> ALTER TABLE testalter_tbl CHANGE j j INT; # 将字段j的类型改为int,长度默认为11
ALTER TABLE 对 Null 值和默认值的影响
当你修改字段时,你可以指定是否包含只或者是否设置默认值。
以下实例,指定字段 j 为 NOT NULL 且默认值为100 。
mysql> ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100; # 修改字段j为bigint,非空,默认值为100
ps:如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; # 可空,默认值为1000
也可以使用 ALTER 命令及 DROP子句来删除字段的默认值
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT; # 删除字段i的默认值配置
修改存储引擎
可以使用 ALTER 命令及 TYPE 子句来完成。尝试以下实例,我们将表 testalter_tbl 的类型修改为 MYISAM :
注意:查看数据表类型可以使用 SHOW TABLE STATUS 语句。
默认的表存储引擎是Innodb,可以使用alter命令修改为myisam
实例:
mysql> ALTER TABLE testalter_tbl ENGINE = MYISAM;
mysql> SHOW TABLE STATUS LIKE 'testalter_tbl';
Name Engine
------------- ------
testalter_tbl MyISAM
修改表名
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl; # 将数据表 testalter_tbl 重命名为 alter_tbl,表数据不丢失
修改字段为自增序列
ALTER TABLE ratable_event_format_item_nx MODIFY COLUMN event_type_format_seq INT AUTO_INCREMENT;