![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=1739693221-hHAjpSROnUlODBwqx9VQJGeLzSe2xEfI-0-92a8543f9ccfd2348009b264bca583e1)
数据表创建完成后,还可以根据实际需要对数据表进行修改,例如修改表名、修改字段数据类型、修改字段名等。
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=1739693221-YCL089MzZ45v4YbogeiA0BjPvXA6VLYa-0-be242f9bef7eb50bc0d22726371f9060)
图4-6 查看数据表
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P87_3415.jpg?sign=1739693221-GaADmTXSB9KtYdKDWVtXnMr6IJbYdZ2b-0-1205ce3a37df5c4da3ccc4e422adc200)
图4-7 修改数据表的名称
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P87_3416.jpg?sign=1739693221-UynuTHbeWuefjSvpUwUaz7Bn0ZboY24r-0-5a4ba880a7552a3872be7c8275e9a1e5)
图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=1739693221-vsG7EewBKnKB5PIdfh6qEZq2gNvc4KkV-0-4cf1587a329abbf562073f867cc7be9a)
图4-9 查看数据表的结构
语句执行后,比较会发现表emp_01中name字段的数据类型已经修改成VARCHAR(28),name字段的数据类型修改成功。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P88_3447.jpg?sign=1739693221-UZ2Yqw9pH8LZ4IBqPEjELSZQoFTKAGCt-0-922e492dd1d3fdbacb08ef6228583eba)
图4-10 修改字段的数据类型
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P88_3476.jpg?sign=1739693221-h7qtl0At6yeHEA4xnSloDqbn1xP3haeL-0-64d80502db414ac8ef9eaaf2f7620908)
图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=1739693221-K95TJHdmpO0JhKkAsoU03VLQWVz5Welr-0-96c23c8af5e951da2ec4eaf6f6497c4a)
图4-12 修改数据表字段的名称
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P88_3470.jpg?sign=1739693221-2YabvGQECOjp5OvRLPg3YxNvPcoyWWc9-0-d6f2bc275ec70f6ac7bc10cbd1d7f2dd)
图4-13 查看修改后的字段名称
注意:由于不同类型的数据在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录。因此,当数据库中已经有数据时,不要轻易修改数据类型。
4.4.4 在数据表中添加字段
当数据表创建完成后,如果字段信息不能满足需要,可以根据需要在数据表中添加新的字段。在MySQL中,添加新字段的语法格式如下:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P89_23956.jpg?sign=1739693221-7xrcT9lcCClMkaSMkYZg9AA5ukAQ7KSC-0-b787f5a8e6aae37bb5df20c87d463b1e)
主要参数介绍如下。
- 表名:要添加新字段的数据表名称。
- 新字段名:需要添加的字段名称。
- 约束条件:设置新字段的完整约束条件。
- 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=1739693221-OKWybzGnoDEWpkBSUjCYEHXHG9LOWErd-0-aa21c5f6b4118f057a32d59c2a42c7f3)
图4-14 添加字段city
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P89_3503.jpg?sign=1739693221-We3xYIf4iFyMCS2luXYfrexuujpDcRus-0-335e49c063e08278d3f93655f0c1f31b)
图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=1739693221-7OCEmoYyosTkenyQKmveXLWbAm9bxspA-0-ccd2ed84e02b853f6d51bb61ebbe6a48)
图4-16 添加字段newid
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P89_3516.jpg?sign=1739693221-fq6A8KSODpZkFQqvqfcCYLaBcqyMf3B7-0-9ac22c1cdc135d296200898465e1072c)
图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=1739693221-SJJM6WP4ZNAzkpLTe7j8tEG2JdJ3zs7g-0-72b666ce4fe6fbdfd80244ffcbdd5af6)
图4-18 添加字段age
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P90_3530.jpg?sign=1739693221-2Vn6Gsq1fLc2669zqEsMGlOxIZBy1L7X-0-25532c459c432e707e56736a7f875a98)
图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=1739693221-dXv49zFxwGKSDiiIKphAMc10u9O9q8gq-0-b8da87cfd820e66bfb3c96390d5a7d1f)
图4-20 修改字段id的位置
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P90_3551.jpg?sign=1739693221-Pe5LWKhmlLwpgOFaTk7OydO7inJy9w27-0-5fe0c5e7a2e0bd2afc02a50fa8cce5e0)
图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=1739693221-7b26k3z5RJf94LP61Yh6w4MG6Ra3oDTC-0-d00ebbd14d6639daf530ec1da8a21867)
图4-22 修改name字段的位置
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P91_3566.jpg?sign=1739693221-YP3r29BPz0cLprrV2xp8fJeF3iclyO2M-0-c789a948b39f093481c0a23c14417424)
图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=1739693221-IgkC9tSzbc9VFtozI8cxEnfZG21bHQDn-0-8fa4fe0144433c1b9f38aa998500e7e6)
图4-24 删除字段newid
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P91_3588.jpg?sign=1739693221-UDEJKk1tOEmQRsjC7HIHn4dFYpC6YeJJ-0-c9aa2e7b5fa30be6744792d2f75eef81)
图4-25 查看删除字段后的表结构