0

数据表的基本操作——修改数据表2(十六)

4.3.4  添加字段

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

ALTER TABLE <表名> ADD <新字段名> <数据类型>

[约束条件] [FIRST | AFTER 已存在字段名];

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

 

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

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

ALTER TABLE tb_dept1 ADD managerId INT(10);

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

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添加有完整性约束条件的字段

【例4.18】在数据表tb_dept1中添加一个不能为空的VARCHAR(12)类型的字段column1SQL语句如下:

ALTER TABLE tb_dept1 ADD column1 VARCHAR(12) not  null;

使用DESC查看表tb_dept1,会发现在表的最后添加了一个名为column1VARCHAR(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在表的第一列添加一个字段

【例4.19】在数据表tb_dept1中添加一个INT类型的字段column2SQL语句如下:

ALTER TABLE tb_dept 1ADD column2 INT(11) FIRST;

使用DESC查看表tb_dept1,会发现在表第一列添加了一个名为column2INT(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在表的指定列之后添加一个字段

【例4.20】在数据表tb_dept1name列后添加一个INT类型的字段column3SQL语句如下:

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.03 sec)

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

4.3.5  删除字段

删除字段是将数据表中的某个字段从表中移除,语法格式如下:

ALTER TABLE <表名> DROP <字段名>;

“字段名”指需要从表中删除的字段的名称。

【例4.21】删除数据表tb_dept1表中的column2字段。

首先,执行删除字段之前,使用DESC查看tb_dept1表结构,结果如下:

mysql> DESC tb_dept1;

+-------------+-----------------+----------+--------+-------------+--------+

| Field     | Type        | Null    | Key  | Default   | Extr  |

+-------------+-----------------+----------+--------+-------------+--------+

| 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    |      |

+--------------+----------------+-----------+--------+-------------+--------+

6 rows in set (0.03 sec)

删除column2字段,SQL语句如下:

ALTER TABLE tb_dept1 DROP column2;

再次使用DESC查看表tb_dept1,结果如下:

mysql> DESC tb_dept1;

+-------------+-----------------+----------+--------+-------------+--------+

| Field     | Type        | Null    | Key  | Default   | Extr  |

+-------------+-----------------+----------+--------+-------------+--------+

| 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    |      |

+--------------+----------------+-----------+--------+-------------+--------+

6 rows in set (0.03 sec)

可以看到,tb_dept1表中已经不存在名称为column2的字段,删除字段成功。