修改数据表结构

课后整理 2021-1-7

修改数据表结构可以使用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  修改数据表结构

注意,在修改数据表结构之前,应提前把数据表中的数据全部删除,然后才能够进行修改操作。