MySQL 8.x从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

2.5.4 添加字段

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

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

新字段名为需要添加的字段的名称;“FIRST”为可选参数,其作用是将新添加的字段设置为表的第一个字段;“AFTER”为可选参数,其作用是将新添加的字段添加到指定的“已存在字段名”的后面。

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

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

【例2.20】在数据表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.21】在数据表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.在表的第一列添加一个字段

【例2.22】在数据表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.在表的指定列之后添加一个字段

【例2.23】在数据表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字段后面,添加字段成功。