当前位置:嗨网首页>书籍在线阅读

17-添加字段

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.3.4 添加字段

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

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

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

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

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

【范例5-17】

在数据表tb_dept1中添加一个没有完整性约束的INT类型的字段managerId(部门经理编号),SQL语句如下。

ALTER TABLE tb_dept1 ADD managerId INT(10);

使用DESC查看表tb_dept1,会发现在表的最后添加了一个名为managerId的INT类型的字段,结果如下。

mysql> DESC tb_dept1; +-----------+-------------+------+-----+---------+-------+ |Field |Type |Null|Key|Default|Extra| +-----------+-------------+------+-----+---------+-------+ |id |int(11) |NO |PRI|NULL | | |name |varchar(30)|YES | |NULL | | |location |varchar(60)|YES | |NULL | | |managerId|int(10) |YES | |NULL | | +-----------+-------------+------+-----+---------+-------+ 4 rows in set (0.03 sec)

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

【范例5-18】

在数据表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(11) |NO |PRI|NULL | | |name |varchar(30)|YES | |NULL | | |location |varchar(60)|YES | |NULL | | |managerId|int(10) |YES | |NULL | | |column1 |varchar(12)|NO | |NULL | | +-----------+-------------+------+-----+---------+-------+ 5 rows in set (0.00 sec)

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

【范例5-19】

在数据表tb_dept1中添加一个INT类型的的字段column2,SQL语句如下。

ALTER TABLE tb_dept1 ADD column2 INT(11) FIRST;

使用DESC查看表tb_dept1,会发现在表第一列添加了一个名为column2的INT(11)类型字段,结果如下。

mysql> DESC tb_dept1; +-----------+-------------+------+-----+---------+-------+ |Field |Type |Null|Key|Default|Extra| +-----------+-------------+------+-----+---------+-------+ |column2 |int(11) |YES | |NULL | | |id |int(11) |NO |PRI|NULL | | |name |varchar(30)|YES | |NULL | | |location |varchar(60)|YES | |NULL | | |managerId|int(10) |YES | |NULL | | |column1 |varchar(12)|NO | |NULL | | +-----------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)

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

【范例5-20】

在数据表tb_dept1中name列后添加一个INT类型的字段column3,SQL语句如下。

ALTER TABLE tb_dept1 ADD column3 INT(11) AFTER name;

使用DESC查看表tb_dept1,结果如下。

mysql> DESC tb_dept1; +-----------+-------------+------+-----+---------+-------+ |Field |Type |Null|Key|Default|Extra| +-----------+-------------+------+-----+---------+-------+ |column2 |int(11) |YES | |NULL | | |id |int(11) |NO |PRI|NULL | | |name |varchar(30)|YES | |NULL | | |column3 |int(11) |YES | |NULL | | |location |varchar(60)|YES | |NULL | | |managerId|int(10) |YES | |NULL | | |column1 |varchar(12)|NO | |NULL | | +-----------+-------------+------+-----+---------+-------+ 7 rows in set (0.00 sec)

可以看到,tb_dept1表中增加了一个名称为column3的字段,其位置在指定的name字段后面,添加字段成功。