首页 > 编程笔记

MySQL添加字段(附带示例)

随着业务需求的变化,可能需要在已经存在的表中添加新的字段。一个完整字段包括字段名、数据类型、完整性约束。

MySQL 添加字段的语法格式如下:

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

细节说明:

提示:“FIRST”或“AFTER已存在字段名”用于指定新增字段在表中的位置,如果 SQL 语句中没有这两个参数,则默认将新添加的字段设置为数据表的最后一列。

1) 添加无完整性约束条件的字段

【示例1】在数据表 tb_dept1 中添加一个没有完整性约束的 INT 类型的字段 managerId(部门经理编号),SQL 语句如下:
ALTER TABLE tb_dept1 ADD managerId INT;
使用 DESC 查看表 tb_dept1,会发现在表的最后添加了一个名为 managerId 的 INT类型的字段,结果如下:
mysql> DESC tb_dept1;
+-------------+---------------+----------+--------+-----------+-------+
| Field       | Type          | Null     | Key    | Default   | Extra |
+-------------+---------------+----------+--------+-----------+-------+
| id          | int           | NO       | PRI    | NULL      |       |
| name        | varchar(30)   | YES      |        | NULL      |       |
| location    | varchar(60)   | YES      |        | NULL      |       |
| managerId   | int           | YES      |        | NULL      |       |
+-------------+---------------+----------+--------+-----------+-------+

2) 添加有完整性约束条件的字段

【示例2】在数据表 tb_dept1 中添加一个不能为空的 VARCHAR(12) 类型的字段 column1,SQL 语句如下:
ALTER TABLE tb_dept1 ADD column1 VARCHAR(12) not null;
使用 DESC 查看表 tb_dept1,会发现在表的最后添加了一个名为 column1 的 VARCHAR(12) 类型且不为空的字段,结果如下:
mysql> DESC tb_dept1;
+-----------+-------------+------+------+---------+-------+
| Field     | Type        | Null | Key  | Default | Extra |
+-----------+-------------+------+------+---------+-------+
| id        | int         | NO   | PRI  | NULL    |       |
| name      | varchar(30) | YES  |      | NULL    |       |
| location  | varchar(60) | YES  |      | NULL    |       |
| managerId | int         | YES  |      | NULL    |       |
| column1   | varchar(12) | NO   |      | NULL    |       |
+-----------+-------------+------+------+---------+-------+

3) 在表的第一列添加一个字段

【示例3】在数据表 tb_dept1 中添加一个 INT 类型的字段 column2,SQL 语句如下:
ALTER TABLE tb_dept1 ADD column2 INT FIRST;
使用 DESC 查看表 tb_dept1,会发现在表第一列添加了一个名为 column2 的 INT 类型字段,结果如下:
mysql> DESC tb_dept1;
+-------------+---------------+----------+--------+-------------+--------+
| Field       | Type          | Null     | Key    | Default     | Extra  |
+-------------+---------------+----------+--------+-------------+--------+
| column2     | int           | YES      |        | NULL        |        |
| id          | int           | NO       | PRI    | NULL        |        |
| name        | varchar(30)   | YES      |        | NULL        |        |
| location    | varchar(60)   | YES      |        | NULL        |        |
| managerId   | int           | YES      |        | NULL        |        |
| column1     | varchar(12)   | NO       |        | NULL        |        |
+-------------+---------------+----------+--------+-------------+--------+

4) 在表的指定列之后添加一个字段

【示例4】在数据表 tb_dept1 中 name 列后添加一个 INT 类型的字段 column3,SQL 语句如下:
ALTER TABLE tb_dept1 ADD column3 INT AFTER name;
使用 DESC 查看表 tb_dept1,结果如下:
mysql> DESC tb_dept1;
+------------+----------------+----------+--------+------------+--------+
| Field      | Type           | Null     | Key    | Default    | Extra  |
+------------+----------------+----------+--------+------------+--------+
| column2    | int            | YES      |        | NULL       |        |
| id         | int            | NO       | PRI    | NULL       |        |
| name       | varchar(30)    | YES      |        | NULL       |        |
| column3    | int            | YES      |        | NULL       |        |
| location   | varchar(60)    | YES      |        | NULL       |        |
| managerId  | int            | YES      |        | NULL       |        |
| column1    | varchar(12)    | NO       |        | NULL       |        |
+------------+----------------+----------+--------+------------+--------+
可以看到,tb_dept1 表中增加了一个名称为 column3 的字段,其位置在指定的 name 字段后面,添加字段成功。

推荐阅读