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》