MySQL入门很轻松(微课超值版)
上QQ阅读APP看书,第一时间看更新

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 查看删除字段后的表结构