6.3修改表
修改表是指修改数据库中已存在的表的定义。修改表比重新定义表简单,不需要重新加载数据,也不会影响正在进行的服务。MySQL中通过ALTER TABLE语句来修改表。 修改表包括修改表名、修改字段数据类型、修改字段名、增加字段、删除字段、修改字段 的排列位置、更改默认存储引擎和删除表的外键约朿等。本节将详细讲解上述几种修改表 的方式。
6.3.1修改表名
表名可以在一个数据库中唯一的确定一张表。数据库系统通过表名来区分不同的表。 例如,数据库school中有student表。那么,student表就是唯一的。在数据库school中不可能存在另一个名为student的表。MySQL中,修改表名是通过SQL语句ALTER TABLE 实现的。其语法形式如下:
ALTER TABLE 旧表名 RENAME [TO]新表名;
其中,“旧表名”参数表示修改前的表名;“新表名”参数表示修改后的新表名;TO参数是可选参数,其是否在语句中出现不会影响语句的执行。
6.3.2修改字段的数据类型
字段的数据类型包括整数型、浮点数型、字符串型、二进制类型、日期和时间类型等。 数据类型决定了数据的存储格式、约束条件和有效范围。表中的每个字段都有数据类型。有关数据类型的详细内容见第4章。MySQL中,ALERT TABLE语句也可以修改字段的数据类型。其基本语法如下:
ALTER TABLE表名MODIFY属性名数据类型;
其中,“表名”参数指所要修改的表的名称;“属性名”参数指需要修改的字段的名 称;“数据类型”参数指修改后的新数据类型。
6.3.3修改字段名
字段名可以在一张表中唯一的确定一个字段。数据库系统通过字段名来区分表中的不同字段。例如,student表中包含id字段。那么,id字段在student表中是唯一的。student表中不可能存在另一个名为“id”的字段。MySQL中, ALERT TABLE语句也可以修改表 的字段名。其基本语法如下:
ALTER TABLE表名CHANGE旧属性名新属性名新数据类型;
其中,“旧属性名”参数指修改前的字段名;“新属性名”参数指修改后的字段名; “新数据类型”参数修改后的数据类型,如不需要修改,则将新数据类型设置成与原来一样。
6.3.4增加字段
在创建表时,表中的字段就已经定义完成。如果要增加新的字段,可以通过ALTER TABLE语句进行增加。在MySQL中,ALTER TABLE语句增加字段的基本语法如下:
ALTER TABLE 表名 ADD 属性名1 数据类型[完整性约束条件][FIRST| AFTER属性名2];
其中,“属性名1”参数指需要增加的字段的名称;“数据类型”参数指新增加字段 的数据类型;“完整性约束条件”是可选参数,用来设置新增字段的完整性约朿条件; “FIRST”参数也是可选参数,其作用是将新增字段设置为表的第一个字段;“AFTER属 性名2”参数也是可选参数,其作用是将新增字段添加到“属性名2”所指的字段后。如果 执行的SQL语句中没有“FIRST” “AFTER属性名2”参数指定新增字段的位置,新增 的字段默认为表的最后一个字段。
1.増加无完整性约束条件的字段
一个完整的字段包括字段名、数据类型和完整性约束条件。增加字段一般包括上述内 容。根据实际情况,一些字段可以不用完整性约束条件进行约束。
2.增加有完整性约束条件的字段
增加字段时可以设置该字段的完整性约束条件,如设置字段是否为空(Null)、是否 为主外键(Key)、默认值(Default)和是否为自增类型等约束条件。
3.表的第_个位置增加字段
默认情况下,新增字段为表的最后一个字段。如果加上FIRST参数,则可以将新增字 段设置为表的第一个字段。
4.表的指定位置之后增加字段
在增加字段时,由于特殊原因需要在表的指定位置增加字段。如果加上“AFTER 属性名2”参数,那么新增的字段插入在“属性名2”后面。
6.3.5删除字段
删除字段是指删除已经定义好的表中的某个字段。在表创建完之后,如果发现某个字段需要删除,可以采用将整个表都删除,然后重新创建一张表的做法。这样做是可以达到目的,但必然会影响到表中的数据。而且,操作比较麻烦。MySQL中,ALTER TABLE 语句也可以删除表中的字段。其基本语法如下:
ALTER TABLE表名DROP属性名;
其中,“属性名”参数指需要从表中删除的字段的名称。
6.3.6修改字段的排列位置
创建表的时候,字段在表中的排列位置就已经确定了。如果要改变字段在表中的排列位置,则需要ALTER TABLE语句来处理.MySQL中,修改字段排列位置的ALTER TABLE 语句的基本语法如下:
ALTER TABLE表名MODIFY属性名1数据类型FIRST | AFTER属性名2;
其中,“属性名1”参数指需要修改位置的字段的名称;“数据类型”参数指“属性名1”的数据类型;“FIRST”参数指定位置为表的第一个位置;“AFTER属性名2”参 数指定“属性名1 ”插入在“属性名2”之后。
1.字段修改到第一个位置
FIRST参数可以指定字段为表的第一个字段。
2.字段修改到指定位置
"ALERT"参数可以将字段排在表中指定的字段之后。
例如:
ALERT TABLE user MODIFY sex TINYINT(1) AFTER age;
6.3.7更改表的存储引擎
MySQL存储引擎是指MySQL数据库中表的存储类型。MySQL存储引擎包括lnnoDB、MyISAM、MEMORY等。不同的表类型有着不同的优缺点,在第5章有详细的介绍。在创建表时,存储引擎就已经设定好了。如果要改变,可以通过重新创建一张表来实现。这样做是可以达到目的,但必然会影响到表中的数据。而且,操作比较麻烦。MySQL中, ALTER TABLE语句也可以更改表的存储引擎的类型。其基本语法如下:
ALTER TABLE表名 ENGINE=存储引擎名;
其中,“存储引擎名”参数指设置的新存储引擎的名称。
6.3.8删除表的外键约束
外键是一个特殊字段,其将某一表与其父表建立关联关系。在创建表的时候,外键约束就已经设定好了。由于特殊需要,与父表之间的关联关系需要去除,要求删除外键约朿。 MySQL中,ALERT TABLE语句也可以删除表的外键约束。其基本语法如下:
ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;
其中,“外键別名”参数指创建表时设置的外键的代号。