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字段后面,添加字段成功。