日期:2014-05-16  浏览次数:20683 次

MySQL修改表结构

在MySQL v5.1和v5.5下测试部分方法不起作用。

?

数据表改名

?

ALTER TABLE `x_table` RENAME TO `y_table`;

字段改名

ALTER TABLE `x_table` RENAME `a_field` TO `b_field`;

修改字段

?

ALTER TABLE `x_table` CHANGE `a_field` `a_field` varchar(40) NOT NULL DEFAULT '' COMMENT '密码';

部分修改字段

?

ALTER TABLE `x_table` CHANGE `a_field` SET NULL DEFAULT NULL; -- 这两个方法不正确

ALTER TABLE `x_table` CHANGE `a_field` DROP DEFAULT;

增加字段

?

ALTER TABLE `x_table` ADD `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID' FIRST;

ALTER TABLE `x_table` ADD `b_field` varchar(40) NOT NULL DEFAULT '' COMMENT '密码' AFTER `a_field`;

删除字段

?

ALTER TABLE `x_table` DROP `a_field`;

修改主键自增值

?

ALTER TABLE `x_table` AUTO_INCREMENT=1;

或者另一个方法

?

OPTIMIZE TABLE `x_table`; ?-- 此方法无效

AUTO_INCREMENT 的值只会大于或等于 最大id + 1

当设置的AUTO_INCREMENT比上面值还小时,会自动被设置为 最大id + 1

更改主键或索引

?

ALTER TABLE `x_table` DROP PRIMARY KEY (`id`);

ALTER TABLE `x_table` ADD KEY `m_index` (`m_field`) USING BTREE; -- Unique index