在我们创建好表之后,并不是不能再次对表的结构进行相应修改了,可以通过 DDL 语句对其进行相应的维护,进行适当的修改。 但老蝴蝶仍然建议,在设计表的时候,尽量将表设计的合理一些,避免后期对其进行修改。
老蝴蝶这一章所使用的表,用的是第四章的表,数据库仍然是yuejl 数据库。
一. 维护表
对表 table 的整体信息进行相应的维护。
一.一 修改表名
1 . 第一种方式
所用命令:
alter table 旧表名 rename [to] 新表名
其中, to 可以省略。 但不建议省略。
演示修改表名:
如 将 表名为 t2 的修改成 yjlt2;
alter table t2 rename to yjlt2;
再次查询: show tables;
2 . 第二种方式
所用命令:
rename table 旧表名 to 新表名
演示修改表名:
如将表名 为t 的修改成 yjlt;
rename table t to yjlt;
一.二 修改表的编码格式
所用命令:
alter table 表名 character set 新的编码方式
演示 修改表的编码格式。 如将t3的编码格式修改成 latin1
1 . 原先的t3 表的样式
2 . 将t3的编码样式修改成 latin1
alter table t3 character set latin1;
3 . 再次查看样式
一.三 修改表的存储引擎
MySQL中不同的存储引擎,支持不同的功能。 5.5 之后的存储引擎 默认为 InnoDB, 之前的是 MyISAM.
支持的存储引擎有:
关于存储引擎,老蝴蝶后面再详细讲解。
所用命令:
alter tabel 表名 engine= 新的存储引擎
演示 修改表的存储引擎。 仍然以t3 表为便。 原先的是 engine=InnoDB, 现在改成 MyISAM.
alter table t3 engine=MyISAM;
再次查看:
一.四 删除表
所用命令:
drop table [if exists] 表名1,表名2,表名3
删除表的时候, 可以删除一个,也可以一次删除多个。
一.四.一 删除单个表
演示删除表: 如 删除表 yjlt;
drop table yjlt;
再次查询: show tables;
发现,记录变成了13行,已经没有 yjlt 这个表了。
一.四.二 删除多个表
如同时删除 a12,d10,d11 三个表。
drop table a12,d10,d11;
一.四.三 删除一个不存在的表
如 删除表 yuea, 这个表不存在于这个数据库 yuejl 里面。
删除:
drop table yuea;
一.四.四 删除有外键关联的主表
user 表和 dept 表存在着外键关联信息, 即user 表里面的deptId 引用于 dept 表中的 id主键。 当想直接删除 dept表时,会报错。
drop table dept;
需要先解除 user 表与 dept 表的外键关联信息,才能进行删除。
关于如何删除外键约束, 会在下面内容进行讲解。
一.五 清空表
所用命令:
truncate table 表名
清空表演示: 用自动增长的 a12 表。
1 . 原先的表 a12 的信息
下一条记录 id=3.
truncate table a12;
3 . 再次查询数据
发现,数据是空的了。
4 . 查询一下 ,现在表a12 的信息
发现,表的信息a12 没有任何改变。
5 .再次插入一条数据,不指定id, 让其自动增长, 再次查询
insert into a12(name) values('两个蝴蝶飞');
发现,编号仍然是从 id=1 开始。
truncate 清空表,就相当于快速创建一个 与原来结构一模一样的表, 序列,自动增长等,均是最开始的模样。