
3.6 修改数据表
在创建表后,有时会发现字段信息有误,或者应用的需求发生变化,表的信息需要随之更改。当然,可以将表删除后再重新创建。但是,如果当一个表已经保存着数据,或者被其他表引用,则删除表、重建表的方式代价就会很高。用户可以通过ALTER TABLE命令修改表定义、表结构。本节介绍对表的修改,这不同于对表中数据的修改。
3.6.1 实例9:修改表名
可以使用如下命令修改表名:

修改表名前后对比如下。
修改表名前:

修改表名后:

从上面的结果可以看出,除表的名称发生改变外,其他都没有改变。
3.6.2 实例10:修改字段名
可以使用如下命令修改字段名:

修改后的表结构信息如下:

3.6.3 实例11:添加字段
1.添加一个简单的字段
在一个表中添加一个字段,代码如下:

修改后的表结构信息如下:

2.在添加字段时设置约束条件
在添加字段时,可以同时设置约束条件。CREATE TABLE命令对应的约束条件,都可以在添加字段时设置。增加parentid字段并设定其取值范围,代码如下:


3.在添加字段时指定默认值
在添加字段时,还可以指定默认值。
● 如果没有给字段指定默认值,字段的类型可以为NULL,则自动将NULL作为其默认值。
● 如果表中已经有数据,将新添加字段设置为NOT NULL,但是没有指定默认值,则此时执行命令会报错,代码如下:

提示:
增加一个带有默认值的字段,会更新表中全部数据。如果没有带默认值,则不需要进行物理数据的更新操作。
如果待添加字段的理想取值在大部分情况下都不是默认值,则最佳的办法是,通过SET命令添加不带默认值的字段,这样可以减少不必要的I/O操作。
3.6.4 实例12:删除字段
可以使用如下命令删除字段:

3.6.5 实例13:删除表的外键约束
如果需要删除表之间的关联关系,则删除在表上定义的外键即可。在删除表的约束之前,可以通过“\d表名”命令查看约束的名称。
查看department表的约束的名称,代码如下:


查看excellent_employee表的约束的名称,代码如下:

删除外键约束的命令如下:

在删除外键约束后,department的表定义如下:

在删除外键约束后,excellent_employee的表定义如下:
