![MySQL入门很轻松(微课超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/406/32858406/b_32858406.jpg)
4.4 修改数据表
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P86_23947.jpg?sign=1739279234-JWu9gIjg2RfUMP1EzIK4wpMTAohPVj9b-0-93b9ab879b3bcedf352815c6fda5c015)
数据表创建完成后,还可以根据实际需要对数据表进行修改,例如修改表名、修改字段数据类型、修改字段名等。
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。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P87_3414.jpg?sign=1739279234-QUSYerlX8FkoPOJRZkRjx76eQ8T6HVkV-0-b9b60a3ad29714e020439ba862ec3dc3)
图4-6 查看数据表
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P87_3415.jpg?sign=1739279234-W93F1goae8sA1gZlJfAsDG6KWItpC9ak-0-483a11d853b55fa073912d181172535e)
图4-7 修改数据表的名称
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P87_3416.jpg?sign=1739279234-HTyxKEjmhUW4oAogKxLUufTGbveOvW0f-0-80b68f3cd53dac614f8c8aaf65787932)
图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所示。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P88_3446.jpg?sign=1739279234-dVJxgpDSBPwXcwwVyl9XCA4ewUJTM5Z8-0-9bf7189eccc76a0cd2e3c0ebffb5f2a4)
图4-9 查看数据表的结构
语句执行后,比较会发现表emp_01中name字段的数据类型已经修改成VARCHAR(28),name字段的数据类型修改成功。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P88_3447.jpg?sign=1739279234-YMl9jFdxZsnzqeFLGrRkJCdIG58gRh1t-0-8debc6af6c0bbd8a8033459faec2174c)
图4-10 修改字段的数据类型
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P88_3476.jpg?sign=1739279234-83tQjfBbDsLpuelW0cVg3LoLXpw6JNrJ-0-f9206129ae69f37d72e69da1a581c858)
图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。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P88_3469.jpg?sign=1739279234-q7E99axgXVjV18FjTnkrmiSqRRgwM11C-0-9e81c09c97e8d7fc4b60ec9ddc9d4c6f)
图4-12 修改数据表字段的名称
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P88_3470.jpg?sign=1739279234-TYcXzNoR8z7pnWFpz5ZE2ymDZV4oMUvJ-0-888af5c588ea38a167bd4c4369a951ae)
图4-13 查看修改后的字段名称
注意:由于不同类型的数据在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录。因此,当数据库中已经有数据时,不要轻易修改数据类型。
4.4.4 在数据表中添加字段
当数据表创建完成后,如果字段信息不能满足需要,可以根据需要在数据表中添加新的字段。在MySQL中,添加新字段的语法格式如下:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P89_23956.jpg?sign=1739279234-SMenODNvtkYYMYEOpz6BsLoCZCgm0Psg-0-9052353fec15a2392b7995137409d797)
主要参数介绍如下。
- 表名:要添加新字段的数据表名称。
- 新字段名:需要添加的字段名称。
- 约束条件:设置新字段的完整约束条件。
- FIRST:可选参数,其作用是将新添加的字段设置为表的第一个字段。
- AFTER:可选参数,其作用是将新添加的字段添加到指定的“已存在字段名”的后面。
【实例7】在数据表emp_01中添加一个字段city,输入如下语句:
ALTER TABLE emp_01 ADD city VARCHAR(20);
执行结果如图4-14所示。
使用DESC查看表emp_01,会发现在数据表的最后添加了一个名为city的字段,结果如图4-15所示,默认情况下,该字段放在最后一行。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P89_3502.jpg?sign=1739279234-spyhMZhJqhoBxBNlRctMWCuFAj34ir7k-0-4af6dc569a0de078e25d2d050e312b7e)
图4-14 添加字段city
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P89_3503.jpg?sign=1739279234-EIMQA9Ps2wIeM70mZONgCGhhJOVUTuNL-0-184bd5145ba33976b827a5f82d88c051)
图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所示。
除了在数据表最后或第一行添加字段外,还可以在表的指定列之后添加一个字段。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P89_3515.jpg?sign=1739279234-a5QG9Kxg89ETB1ySROxR5ps4lpAgVNX6-0-38f42d0ca5db400731c2942f494f7303)
图4-16 添加字段newid
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P89_3516.jpg?sign=1739279234-s6OhAz33GpMdmLNtroGqmZFhdtszoEZp-0-b7c90a1d9a057b8c1ea3ac50787d8009)
图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字段后面,添加字段成功。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P90_3529.jpg?sign=1739279234-6YPNSv1sOuFp8sMwtFpKMy8Q1VIDHMot-0-7b060c9e9848498b29f758fb45f9e977)
图4-18 添加字段age
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P90_3530.jpg?sign=1739279234-O5mZZG1rz74tFlXUzBGJDSoAs87K8aEc-0-9b31e5211c4621bcd5f66eeff8f0df5b)
图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所示。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P90_3550.jpg?sign=1739279234-XQEsKWonZNNKQLOI9lwvjhlrxJVmm3KX-0-cb36e7ecf311304425e46d5bc98265bb)
图4-20 修改字段id的位置
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P90_3551.jpg?sign=1739279234-shLnGtLqo3jotEaIKAaJJknqMima942X-0-6be0f2df8de7909ae0198721a467345f)
图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字段之后。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P91_3565.jpg?sign=1739279234-612XoOCj4c2u7lLVAiGfuxy9WSCly15m-0-eef467b4f8ab14bbee630218aa5bfc64)
图4-22 修改name字段的位置
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P91_3566.jpg?sign=1739279234-TYjbsVscZnjtHf3eaL1373r96ecnHd7U-0-e7539933b9f01772cafad15eaac409b4)
图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的字段,删除字段成功。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P91_3587.jpg?sign=1739279234-AvnDO21xPSQQO7x5bqk3BwyzoCKp8nxO-0-28e3968ab949b6cf04900f0eaedf8e02)
图4-24 删除字段newid
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P91_3588.jpg?sign=1739279234-fbqu5o0lyDbgG2I6YUuIxySOI1HJXaDt-0-17d20159618ef194f61158b61dc218b5)
图4-25 查看删除字段后的表结构