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》