![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=1739521616-xuqnS8PT419KRCLrYdmmeiRqZVopBRBm-0-1549de6e79d092706ed6799987605149)
数据表创建完成后,还可以根据实际需要对数据表进行修改,例如修改表名、修改字段数据类型、修改字段名等。
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=1739521616-NJPJ5ImhwCVD5WhMlKRYZETkkbVMYcgp-0-327d78d6a4b238cbffbac7192c164009)
图4-6 查看数据表
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P87_3415.jpg?sign=1739521616-pvzKg1LAK6hEjwPKk4Db6mCOj7VGmtqS-0-d99ca34a5bb42464211faf22bbca7c71)
图4-7 修改数据表的名称
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P87_3416.jpg?sign=1739521616-RnRdFDBOBBG8pTJNM6jwVyU7m0tjqHBR-0-d0a0800f92eb0e732ea27ed8fcbc48c5)
图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=1739521616-Mv6cAOX4NJTTJUDxEdbX7Gg0jtHjea2d-0-dc9b048741c9b36dc73f3e405d6054d0)
图4-9 查看数据表的结构
语句执行后,比较会发现表emp_01中name字段的数据类型已经修改成VARCHAR(28),name字段的数据类型修改成功。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P88_3447.jpg?sign=1739521616-1oTy8g4VO6suX82U6SWA48LszNVIusqs-0-29abbb3bf1c3dbdeecaa2f66658705fc)
图4-10 修改字段的数据类型
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P88_3476.jpg?sign=1739521616-dSTPKIKqaTvhiq1XpXz2yNzyd4cO2Sjw-0-1c08a4beb26c131106446bc02e435c70)
图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=1739521616-v7xQfvNREX4BtKfJnQfgf89achhNSFYY-0-04770d431f54b91180a40f6391f81174)
图4-12 修改数据表字段的名称
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P88_3470.jpg?sign=1739521616-5iHCp0K2xi1RCDMk15EBNXAwq6JsIjGU-0-31530720a68b00411dcab275f165ef3a)
图4-13 查看修改后的字段名称
注意:由于不同类型的数据在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录。因此,当数据库中已经有数据时,不要轻易修改数据类型。
4.4.4 在数据表中添加字段
当数据表创建完成后,如果字段信息不能满足需要,可以根据需要在数据表中添加新的字段。在MySQL中,添加新字段的语法格式如下:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P89_23956.jpg?sign=1739521616-gdwxXN2CjBrYiYs6UlfpZ4vDuidlWXJ0-0-fd58f5209b079eacaffd42b01347e993)
主要参数介绍如下。
- 表名:要添加新字段的数据表名称。
- 新字段名:需要添加的字段名称。
- 约束条件:设置新字段的完整约束条件。
- 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=1739521616-pT4psihMitE6R33e5lg44nieDbkStUb3-0-e83cca403b0f6d5ca82f0015ed2fdb13)
图4-14 添加字段city
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P89_3503.jpg?sign=1739521616-yzsxMuMjxAPhbEflBH0TZvtgRYEW04Gb-0-d9c3f0bbc9db8b8ca9c218f5fee8390b)
图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=1739521616-64uEUbP1u6RId5xwgNUC3nZZFnlD1olB-0-fded8b02d7b97350fb4ac99a2eb97253)
图4-16 添加字段newid
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P89_3516.jpg?sign=1739521616-j2LRy6twoaUbta7TEht92WUULYwqjwfl-0-f74633a65fd72794a3792e55a00666f7)
图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=1739521616-4tBlCK6QuRj8Fg8DaHsFikMCtp4kGe52-0-1e4e1dd91ab962ce6fc0b0d5a5559ab7)
图4-18 添加字段age
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P90_3530.jpg?sign=1739521616-fZ9RZ1hNaRFPlvAr5YOOF7manlvIIP9i-0-f562c97bc90661775a691055d7e355f8)
图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=1739521616-stQg3anuqTpPuhoRX0KERrz2meowTcg3-0-46df3b3d8172b414e225cd4c8a3c1251)
图4-20 修改字段id的位置
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P90_3551.jpg?sign=1739521616-SzixIug6axSRqa6lb6YkhtN9AurFIzfM-0-a7005b0a89224a950da31f1dd430427c)
图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=1739521616-uAihXMv858ZzyvYn6iKmnxSFQOAzYrQU-0-2ab220fd2d031d7aaf6fcb02af922858)
图4-22 修改name字段的位置
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P91_3566.jpg?sign=1739521616-KvjXK3HH6QWxhI27wwuaqy2rC0ICqVhY-0-3efd428da4d4ce0e7c292ab93908886b)
图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=1739521616-q5VnFimhBt5Ic00QseFO33DEiGUfvc5K-0-20c6e92c9b55cc4c83462c77aec5d6f6)
图4-24 删除字段newid
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P91_3588.jpg?sign=1739521616-FrjBZxxzwqutA78insxHtfUgwxBU6wbF-0-6e40733aa2f4b5e6d556079c45f57209)
图4-25 查看删除字段后的表结构