修改数据表结构可以使用ALTER TABLE语句。修改数据表结构包括增加、删除字段、修改字段名称或者字段类型,设置取消主键外键、设置取消索引以及修改表的注释等。该语句的语法格式如下:
ALTER [IGNORE] TABLE 数据表名 alter_spec[,alter_spec]…
当指定IGNORE时,如果出现重复关键的行,则只执行一行,其他重复的行被删除。
其中alter_spec子句可以定义要修改的内容,其语法格式如下:
alter_specification: ADD [COLUMN] column_definition [FIRST | AFTER col_name ] //添加新字段 | ADD [COLUMN] (column_definition,...) //添加新字段 | ADD INDEX [index_name] [index_type] (index_col_name,...) //添加索引名称 | ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) //添加主键名 | ADD [CONSTRAINT [symbol]] UNIQUE [index_name] [index_type] (index_col_name,...) //添加唯一索引 | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} //修改字段名称 | CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name] //修改字段类型 | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name] //修改子句定义字段 | DROP [COLUMN] col_name //删除字段名称 | DROP PRIMARY KEY //删除主键名称 | DROP INDEX index_name //删除索引名称 | RENAME [TO] new_tbl_name //更改表名
ALTER TABLE语句允许指定多个动作,其动作之间可以使用逗号进行分隔,每个动作表示对表进行一次操作。例如,在上面示例中,为tb_user数据表添加email字段,类型为varchar(50) not null,将字段name类型改为varchar(50),则代码如下:
ALTER TABLE tb_user ADD email varchar(50) NOT NULL, MODIFY name varchar(50);
在命令行模式下运行情况,如图13.17所示。为了检验修改是否成功,可以使用desc tb_user;命令查看修改的结果。
图13.17 修改数据表结构
注意,在修改数据表结构之前,应提前把数据表中的数据全部删除,然后才能够进行修改操作。