《MySQL 5.5从零开始学》(5)之修改数据表

《MySQL 5.5从零开始学》(5)之修改数据表

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:

本部分内容参考自《MySQL 5.5从零开始学》。

修改表指的是修改数据库中已经存在的数据表的结构。MySQL 使用 ALTER TABLE 语句修改表。常用的修改表的操作有:修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置,更改表的存储引擎,删除表的外键约束等。本节将对和修改表有关的操作进行讲解。

修改表名

MySQL 是通过 ALTER TABLE 语句来实现表名的修改的,具体的语法规则如下:

ALTER TABLE <旧表名> RENAME [TO] <新表名>;

其中 TO 为可选参数,使用与否均不影响结果。
例 1:将数据表 tb_dept3 改名为 tb_deptment3

ALTER TABLE tb_dept3 RENAME TO tb_deptment3;

可以在修改表名称时使用 DESC 命令查看修改前后两个表的结构,修改表名并不修改表的结构,因此修改名称后的表和修改名称前的表的结构必然是相同的。

修改字段的数据类型

修改字段的数据类型,就是把字段的数据类型转换成另一种数据类型。在 MySQL 中修改字段数据类型的语法规则如下:

ALTER TABLE <表名> MODIFY <字段名> <数据类型>;

其中表名指要修改数据类型的字段所在表的名称,字段名指需要修改的字段,数据类型指修改后字段的新数据类型。
例 2:将数据表 tb_dept1name 字段的数据类型由 VARCHAR(22) 修改成 VARCHAR(30)

ALTER TABLE tb_dept1 MODIFY name VARCHAR(30);

修改字段名

MySQL 中修改表字段名的语法规则如下:

ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

其中,旧字段名 指修改前的字段名;新字段名指修改后的字段名;新数据类型指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样即可,但数据类型不能为空。
例 3:将数据表 tb_dept1 中的 location 字段名称改为 loc,数据类型保持不变,SQL 语句如下:

ALTER TABLE tb_dept1 CHANGE location loc VARCHAR(50);

例 4:将数据表 tb_dept1 中的 loc 字段名称改为 location,同时将数据类型变为 VARCHAR(60),SQL 语句如下:

ALTER TABLE tb_dept1 CHANGE loc location VARCHAR(60);

CHANGE 也可以只修改数据类型,实现和 MODIFY 同样的效果,方法是将 SQL 语句中的新字段名旧字段名设置为相同的名称,只改变数据类型
由于不同类型的数据在机器中存储的方式及长度并不相同,修改数据类型可能会影响到数据表中已有的数据记录。因此,当数据库表中已经有数据时,不要轻易修改数据类型。

添加字段

随着业务需求的变化,可能需要在已经存在的表中添加新的字段。一个完整字段包括字段名、数据类型、完整性约束。添加字段的语法格式如下:

ALTER TABLE <表名> ADD <新字段名> <数据类型>
    [约束条件] [FIRST|AFTER 已存在字段名];

新字段名为需要添加的字段的名称,FIRST 为可选参数,其作用是将新添加的字段设置为表的第一个字段,AFTER为可选参数,其作用是将新添加的字段添加到指定的已存在字段名的后面。

FIRSTAFTER 已存在字段名 用于指定新增字段在表中的位置,如果 SQL 语句中没有这两个参数,则默认将新添加的字段设置为数据表的最后列。

添加无完整性约束条件的字段

例 5:在数据表 tb_dept1 中添加一个没有完整性约束的 INT 类型的字段 managerId (部门经理编号),SQL 语句如下:、

ALTER TABLE tb_dept1 ADD managerld INT(10);

添加有完整性约束条件的字段

例 6:在数据表 tb_dept1 中添加一个不能为空的 VARCHAR(12) 类型的字段 column1,SQL 语句如下:

ALTER TABLE tb_dept1 ADD column1 VARCHAR(12) NOT NULL;

在表的第一列添加一个字段

例 7:在数据表 tb_dept1 中添加一个 INT 类型的字段 column2,SQL 语句如下:

ALTER TABLE tb_dept1 ADD column2 INT(11) FIRST;

使用 DESC 查看表 tb_dept1,会发现在表第一列添加了一个名为 column2INT(11) 类型字段。

在表的指定列之后添加一个字段

例 8:在数据表 tb_ dept1name 列后添加一个 INT 类型的字段 column3,SQL 语句如下:

ALTER TABLE tb_dept1 ADD column3 INT(11) AFTER name;

删除字段

删除字段是将数据表中的某个字段从表中移除,语法格式如下:

ALTER TABLE <表名> DROP <字段名>;

字段名指需要从表中删除的字段的名称。
例 9:删除数据表 tb_dept1 表中的 column2 字段。

ALTER TABLE tb_dept1 DROP column2;

修改字段的排列位置

对于一个数据表来说,在创建的时候,字段在表中的排列顺序就已经确定了。但表的结构并不是完全不可以改变的,可以通过 ALTER TABLE 来改变表中字段的相对位置。语法格式如下:

ALTER TABLE <表名> MODIFY <字段 1> <数据类型> FIRST | AFTER <字段 2>;

字段 1指要修改位置的字段,数据类型字段 1的数据类型,FIRST 为可选参数,指将字段 1修改为表的第一个字段,AFTER 字段 2 指将字段 1 插入到字段 2 后面。

修改字段为表的第一个字段

例 10:将数据表 tb_dept 中的 column1 字段修改为表的第一个字段,SQL 语句如下:

ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) FIRST;

修改字段到表的指定列之后

例 11:将数据表 tb_dept1 中的 column1 字段插入到 location 字段后面,SQL 语句如下:

ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) AFTER location;

删除表的外键约束

对于数据库中定义的外键,如果不再需要,可以将其删除。外键一旦删除, 就会解除主表和从表间的关联关系,MySQL 中删除外键的语法格式如下:

ALTER TABLE <表名> DROP FOREIGNKEY <外键约束名>;

“外键约束名”指在定义表时 CONSTRAINT 关键字后面的参数。
例 12:删除数据表 tb_emp8 中的外键约束。

ALTER TABLE tb_emp8 DROP FOREIGN KEY fk_emp_dept5;

更改表的存储引擎

通过前面章节的学习,知道存储引擎是 MySQL 中的数据存储在文件或者内存中时采用的不同技术实现。可以根据自己的需要,选择不同的引擎,甚至可以为每一-张表选择不同的存储引擎。MySQL 中主要存储引擎有:MyISAMInnoDBMEMORY (HEAP)BDBFEDERATED 等。可以使用 SHOW ENGINES; 语句查看系统支持的存储引擎。下表列出了 5.5.13 版本的 MySQL 所支持的存储引擎。

引擎名是否支持
FEDERATED
MRG_MYISAM
MYISAM
BLACKHOLE
CSV
MEMORY
ARCHIVE
InnoDB默认
PERFORMENCE_SCHEMA

更改表的存储引擎的语法格式如下:

ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>

例 13:将数据表 tb_dept1 的存储引擎修改为 MyISAM

ALTER TABLE tb_dept1 ENGINE=MyISAM

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.zze.xyz/archives/mysql55-5.html

Buy me a cup of coffee ☕.