在 MySQL 中可以使用 ALTER TABLE 语句来改变原有表的结构,例如增加或删减列、更改原有字段类型、设置或删除默认值、重新命名列或表等。

基本语法

修改表指的是修改数据库中已经存在的数据表的结构。MySQL使用ALTER TABLE语句修改表结构。常用的修改表的操作有增加字段、删除字段、修改字段名或字段类型或字段位置或字段默认值、修改表名等。

常用的语法格式如下:

ALTER TALE <表名> [修改选项];

修改选项的语法格式如下:

{ ADD [COLUMN] <列名> <类型>
| CHANGE [COLUMN] <旧列名> <新列名> <新列类型>
| ALTER [COLUMN] <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
| MODIFY [COLUMN] <列名> <类型>
| DROP [COLUMN] <列名>
| RENAME TO <新表名> }

添加字段

语法格式如下:

ALTER TABLE <表名> ADD [COLUMN] <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在的字段名];

【实例1】在教师表teacher中添加education字段,字段类型为varchar(10)。

ALTER TABLE teacher ADD education VARCHAR(10);

mysql表不能修改数据 mysql 修改表_mysql


【实例2】在教师表teacher中添加beizhu字段在sex字段后面,字段类型为varchar(20)。

ALTER TABLE teacher ADD beizhu VARCHAR(20) AFTER sex;

mysql表不能修改数据 mysql 修改表_字段_02

删除字段

语法格式如下:

ALTER TABLE <表名> DROP [COLUMN] <字段名>;

【实例3】将教师表teacher中beizhu字段删除。

ALTER TABLE teacher DROP beizhu;

mysql表不能修改数据 mysql 修改表_mysql表不能修改数据_03

修改字段名

语法格式如下:

ALTER TABLE <表名> CHANGE [COLUMN] <旧字段名> <新字段名> <新数据类型>;

【实例4】将学生表student的telephone字段名字改为phone,同时字段类型改为varchar(20)。

ALTER TABLE student CHANGE telephone phone VARCHAR(20);

mysql表不能修改数据 mysql 修改表_mysql表不能修改数据_04

修改字段类型

语法格式如下:

ALTER TABLE <表名> MODIFY [COLUMN] <列名> <类型> [约束条件] [FIRST|AFTER 列名];

ALTER TABLE <表名> CHANGE [COLUMN] <列名> <列名> <类型> [约束条件] [FIRST|AFTER 列名];

【实例5】将学生表student的address字段的字段长度改为100。

ALTER TABLE student MODIFY address VARCHAR(100);

ALTER TABLE student CHANGE address address VARCHAR(100);

mysql表不能修改数据 mysql 修改表_sql_05

修改字段位置

语法格式如下:

ALTER TABLE <表名> MODIFY [COLUMN] <列名> <类型> {FIRST|AFTER 列名};

ALTER TABLE <表名> CHANGE [COLUMN] <列名> <列名> <类型> {FIRST|AFTER 列名};

【实例6】将教师表teacher中education字段修改为表的第一个字段。

ALTER TABLE teacher MODIFY education VARCHAR(10) FIRST;

ALTER TABLE teacher CHANGE education education VARCHAR(10) FIRST;

mysql表不能修改数据 mysql 修改表_mysql_06


【实例7】将教师表teacher中education字段修改为profession字段后字段。

ALTER TABLE teacher MODIFY education VARCHAR(10) AFTER profession;

ALTER TABLE teacher CHANGE education education VARCHAR(10) AFTER profession;

mysql表不能修改数据 mysql 修改表_mysql表不能修改数据_07

修改字段默认值

语法格式如下:

ALTER TABLE <表名> ALTER [COLUMN] <列名> { SET DEFAULT <默认值> | DROP DEFAULT };

【实例8】为教师表teacher中sex字段设置默认值,默认值为男。

ALTER TABLE teacher ALTER sex SET DEFAULT '男';

mysql表不能修改数据 mysql 修改表_字段_08

修改表名

语法格式如下:

ALTER TABLE <旧表名> RENAME [TO] <新表名>;

【实例9】修改教师表teacher的表名为teachers。

ALTER TABLE teacher RENAME teachers;

mysql表不能修改数据 mysql 修改表_mysql表不能修改数据_09