mysql 快速备份表数据 20253926编辑

Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注

mysql 快速备份表数据

Created by Marydon on 2022-02-18 18:44

1.情景展示

在工作过程中,我们往往会有对表数据进行备份的需求,比如说:对表数据进行大量操作时,为了以防万一,最好是将数据进行备份,以免操作不当,导致无法恢复原有的数据。

2.解决方案

和Oracle的用法一模一样,语法如下:

CREATE TABLE NEW_TALBE_NAME AS SELECT * FROM OLD_TABLE_NAME;

3.实战演练

对表cz_jkdic进行备份。

此时,表的数据已经完成了备份,已经产生了一张新表:cz_jkdic_bak;

下面,我们一起来看一下两表的区别:

查看建表语句:SHOW CREATE TABLE TABLE_NAME。

create table列展示的就是对应表的建表语句

将cz_jkdic表和cz_jkdic_bak表的建表语句拿出来,进行对比:

我们会发现备份表发生了以下变化:

第一,主键消失(备份表没有指定哪一列是主键);

第二,索引消失(备份表已经不存在索引);

第三,自增消失(因为mysql的自增属性只能和主键绑定)。

第四:字段的非空属性会保留。

如果原表有触发器的话,触发器应该也不会复制过来的;

外键约束同样不会复制。

由此,我们可以下这样的结论:

使用create table 新表名 as select * from 旧表名的方式,能实现的功能:

第一,建表(表的字段列和原表一模一样)(可以理解为:没有指定主键和索引的普通建表语句);

第二,复制数据(将原表数据塞进新表当中)。

仅仅只有这两个作用,一定不要忘了,归根结底是因为:我们用的建表语句没有定义其它内容。

所以说,当我们后续需要对备份表进行复用的时候,需要:

第一,重新指定表主键,避免与原有数据造成主键冲突,导致后续数据插入失败(如果使用自增属性的话,mysql会自动将现有主键列的最大值+1,当作自增的起始值)。

第二,重新建立表索引。

4.另一种实现方式

如果数据量不大的话,可以使用Navicat来实现;

切换到表视图;

选中要复制的表,按Ctrl+C进行复制,再按Ctrl+V进行粘贴,就会快速完成表及数据的复制;

而且,复制后的表和原表一模一样,不会造成主键和索引的丢失。

2022年5月23日21:01:21

5.清空表数据

只是清空表数据,原有表结构不受影响。

以truncate为例进行说明

第一:表的数据被清空后,表的主键依然存在;

第二:表自增值不受影响(也就是说:不会被重置为0);

第三:索引、外键、触发器等均不受影响。

第四:字段的非空属性会保留。

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。

您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!

↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓

posted @   Marydon  阅读(3926)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示
sorry,本博客所有代码禁止复制,原创代码需扫码支付方可获取!
关闭

1、先加好友再付费,点我加好友;

2、代码不能满足你的需求?加好友付费定制你的专属代码!

3、付费标准及方式,点我查看详情。