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

mysql的alter用法总结

ALTER TABLE简介

当表被创建后,在使用过程中可能会有一些新的需求,这时候可能需要修改表的结构。如果表中已经填充了数据,重新建表会造成现有数据的丢失,为此可以用ALTER TABLE对表结构进行修改

为表添加新列


前提

向表中添加列的前提是所添加的列允许使用NULL值或者对该列使用DEFAULT约数指定了默认的值。

命令格式

ALTER TABLE $tablename ADD  $column_name $object_type [NULL|NOT NULL DEFAULT "默认值"];

参数解释:
tablename:需要添加字段的表名称
column_name:添加的列名
object_type:添加列的数据类型
[]:添加列的默认值

说明

向一个表添加新列时,数据库引擎会在该列中为表中的每个现有数据行插入一个值。因此,在向表中添加列时为指定DEFAULT定义会很有用。如果新列没有DEFAULT定义,则必须指定该列允许NULL值,数据库引擎将NULL值插入该列。如果不允许NULL值,则返回错误。

示例操作



删除表中的列


前提

在删除一列之前,必须先删除任何引用该列的约束、默认表达式、计算列表达式或索引

命令

ALTER TABLE $tablename DROP COLUMN $column_name;

示例操作




修改表中的列

修改主要操作

  • 修改列的名称
  • 修改列的数据类型

命令

ALTER TABLE $tablename CHANGE $old_column_name $new_column_name $column_type;

示例操作

修改列名



截图中的错误是因为修改列明是没有指定数据类型,所以$column_type是必须参数

修改列的数据类型




重命名表

命令

ALTER TABLE $table_name1 RENAME $table_name2;

示例




简单的[创建|删除]索引字段


创建索引

命令

ALTER TABLE $table_name ADD INDEX $index_name($column_name1,$colunm_name2)

参数解释:
$index_name:建立索引的名称
$column_name[1|2]:需要建立索引的字段名

示例操作



删除索引

命令

ALTER TABLE $table_name DROP INDEX $index_name;

示例操作




参考书籍

《锋利的SQL》
1楼zinss26914昨天 17:46
总结了一些常用的alter table操作,因为线下调试的过程中老有同事需要有各种字段名或者修改字段类型的要求,快速修改测试就需要熟记一些指令