4.4 修改数据表
数据表创建完成后,还可以根据实际需要对数据表进行修改,例如修改表名、修改字段数据类型、修改字段名等。
4.4.1 修改数据表的名称
表名可以在一个数据库中唯一的确定一张表,数据库系统通过表名来区分不同的表。例如,在公司管理系统数据库company中,员工信息表emp是唯一的。在MySQL中,修改表名是通过SQL语句ALTER TABLE来实现的,具体语法格式如下:
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
主要参数介绍如下。
- 旧表名:表示修改前的数据表名称。
- 新表名:表示修改后的数据表名称。
- TO:可选参数,其是否在语句中出现,不会影响执行结果。
【实例4】修改数据表emp的名称为emp_01。
执行修改数据表名称操作之前,使用SHOW TABLES查看数据库中所有的表。
SHOW TABLES;
查询结果如图4-6所示。
使用ALTER TABLE将表emp改名为emp_01,SQL语句如下:
ALTER TABLE emp RENAME emp_01;
语句执行结果如图4-7所示。
检验表emp是否改名成功。使用SHOW TABLES;查看数据库中的表,结果如图4-8所示。经比较可以看到,数据表列表中已经显示表名为emp_01。
图4-6 查看数据表
图4-7 修改数据表的名称
图4-8 查看改名后的数据表
4.4.2 修改字段数据类型
修改字段的数据类型,就是把字段的数据类型转换成另一种数据类型。在MySQL中修改字段数据类型的语法格式如下:
ALTER TABLE <表名>MODIFY<字段名> <数据类型>;
主要参数介绍如下。
- 表名:指要修改数据类型的字段所在表的名称。
- 字段名:指需要修改的字段。
- 数据类型:指修改后字段的新数据类型。
【实例5】将数据表emp_01中name字段的数据类型由VARCHAR(25)修改成VARCHAR(28)。
执行修改字段数据类型操作之前,使用DESC查看emp_01表结构,输入如下语句:
DESC emp_01;
执行结果如图4-9所示。
可以看到现在name字段的数据类型为VARCHAR(25),下面修改其数据类型。输入如下SQL语句:
ALTER TABLE emp_01 MODIFY name VARCHAR(28);
执行结果如图4-10所示。
再次使用DESC查看表,结果如图4-11所示。
图4-9 查看数据表的结构
语句执行后,比较会发现表emp_01中name字段的数据类型已经修改成VARCHAR(28),name字段的数据类型修改成功。
图4-10 修改字段的数据类型
图4-11 查看修改后的字段数据类型
4.4.3 修改数据表的字段名
数据表中的字段名称定好之后,它不是一成不变的,可以根据需要对字段名称进行修改。MySQL中修改表字段名的语法格式如下:
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
主要参数介绍如下。
- 表名:要修改的字段名所在的数据表。
- 旧字段名:指修改前的字段名。
- 新字段名:指修改后的字段名。
- 新数据类型:指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样即可,但数据类型不能为空。
【实例6】将数据表emp_01中的name字段名称改为newname,输入如下语句:
ALTER TABLE emp_01 CHANGE name newname VARCHAR(28);
执行结果如图4-12所示。
使用DESC查看表emp_01,会发现字段名称已经修改成功,结果如图4-13所示,从结果可以看出,name字段的名称已经修改为newname。
图4-12 修改数据表字段的名称
图4-13 查看修改后的字段名称
注意:由于不同类型的数据在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录。因此,当数据库中已经有数据时,不要轻易修改数据类型。
4.4.4 在数据表中添加字段
当数据表创建完成后,如果字段信息不能满足需要,可以根据需要在数据表中添加新的字段。在MySQL中,添加新字段的语法格式如下:
主要参数介绍如下。
- 表名:要添加新字段的数据表名称。
- 新字段名:需要添加的字段名称。
- 约束条件:设置新字段的完整约束条件。
- FIRST:可选参数,其作用是将新添加的字段设置为表的第一个字段。
- AFTER:可选参数,其作用是将新添加的字段添加到指定的“已存在字段名”的后面。
【实例7】在数据表emp_01中添加一个字段city,输入如下语句:
ALTER TABLE emp_01 ADD city VARCHAR(20);
执行结果如图4-14所示。
使用DESC查看表emp_01,会发现在数据表的最后添加了一个名为city的字段,结果如图4-15所示,默认情况下,该字段放在最后一行。
图4-14 添加字段city
图4-15 查看添加的字段city
【实例8】在数据表emp_01中添加一个INT类型的字段newid,SQL语句如下:
ALTER TABLE emp_01 ADD newid INT FIRST;
执行结果如图4-16所示。
使用DESC查看表emp_01,会发现在表的第一列添加了一个名为newid的INT(11)类型字段,结果如图4-17所示。
除了在数据表最后或第一行添加字段外,还可以在表的指定列之后添加一个字段。
图4-16 添加字段newid
图4-17 查看添加的字段newid
【实例9】在数据表emp_01中sex行下添加一个INT类型的字段age,SQL语句如下:
ALTER TABLE emp_01 ADD age INT AFTER sex;
执行结果如图4-18所示。
使用DESC查看表emp_01,结果如图4-19所示。从结果可以看出,emp_01表中增加了一个名称为age的字段,其位置在指定的sex字段后面,添加字段成功。
图4-18 添加字段age
图4-19 查看添加的字段age
4.4.5 修改字段的排序方式
对于已经创建好的数据表,用户可以根据实际需要,来修改字段的排列顺序。在MySQL中,可以通过ALTER TABLE来改变表中字段的相对位置。语法格式如下:
ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;
主要参数介绍如下。
- 字段1:指要修改位置的字段。
- 数据类型:指“字段1”的数据类型。
- FIRST:为可选参数,指将“字段1”修改为表的第一个字段。
- AFTER字段2:指将“字段1”插入到“字段2”后面。
【实例10】将数据表emp_01中的id字段修改为表的第一个字段,SQL语句如下:
ALTER TABLE emp_01 MODIFY id int FIRST;
执行结果如图4-20所示。
使用DESC查看表emp_01,发现字段id已经被移至表的第一行,结果如图4-21所示。
图4-20 修改字段id的位置
图4-21 查看字段id的顺序
另外,还可以根据需要修改字段到数据表的指定字段之后。
【实例11】将数据表emp_01中的name字段插入到salary字段后面,输入语句如下:
ALTER TABLE emp_01 MODIFY name VARCHAR(28) AFTER salary;
执行结果如图4-22所示。
使用DESC查看表emp_01,执行结果如图4-23所示。从结果可以看到,emp_01表中的字段name已经被移至salary字段之后。
图4-22 修改name字段的位置
图4-23 移动了字段name的位置
4.4.6 删除不需要的字段
当数据表中的字段不需要时,可以将其从数据表中删除。在MySQL中,删除字段是将数据表中的某一个字段从表中移除,语法格式如下:
ALTER TABLE <表名> DROP <字段名>;
主要参数介绍如下。
- 表名:需要删除的字段所在的数据表。
- 字段名:指需要从表中删除的字段的名称。
【实例12】删除数据表emp_01表中的newid字段。输入的语句如下:
ALTER TABLE emp_01 DROP newid;
执行结果如图4-24所示。
使用DESC查看表emp_01,结果如图4-25所示。从结果可以看出,emp_01表中已经不存在名称为newid的字段,删除字段成功。
图4-24 删除字段newid
图4-25 查看删除字段后的表结构