拓展阅读

MySQL 00 View

MySQL 01 Ruler mysql 日常开发规范

MySQL 02 truncate table 与 delete 清空表的区别和坑

MySQL 03 Expression 1 of ORDER BY clause is not in SELECT list,references column

MySQL 04 EMOJI 表情与 UTF8MB4 的故事

MySQL 05 MySQL入门教程(MySQL tutorial book)

MySQL 06 mysql 如何实现类似 oracle 的 merge into

MySQL 07 timeout 超时异常

MySQL 08 datetime timestamp 以及如何自动更新,如何实现范围查询

MySQL 09 MySQL-09-SP mysql 存储过程

MySQL 09 MySQL-group by 分组

场景

如果我们希望对一些历史的脏数据之类的做清理,那么步骤应该是什么?

直接写一个 delete 语句,一把结束吗?

千万别。

删除的步骤

备份表+数据

CREATE TABLE 新表名 LIKE 原表名;
INSERT INTO 新表名 SELECT * FROM 原表名;

避免错删除。

如果有成熟的备份工具,导出之类的也可以

最好提前准备好 roll-back 语句。

确认删除数据

删除之前,首先确认数据数量。

写一个 count 语句

执行删除

删除之后,确认一下对应的数据,随时做好准备。

确认数据是否正确。

chat

如何创建表+备份数据

要在 MySQL 中通过 SQL 创建一张结构相同的表,并且将数据备份到新表中,你可以按照以下步骤操作:

1. 创建结构相同的表

使用 CREATE TABLE ... LIKE ... 语句来创建一个与现有表结构相同的新表。

CREATE TABLE 新表名 LIKE 原表名;

2. 备份数据到新表中

使用 INSERT INTO ... SELECT ... 语句将原表中的数据复制到新表中。

INSERT INTO 新表名 SELECT * FROM 原表名;

例子

假设你有一张名为 employees 的表,现在你想创建一张名为 employees_backup 的新表,并将 employees 表中的数据备份到 employees_backup 中。

-- 1. 创建结构相同的表
CREATE TABLE employees_backup LIKE employees;

-- 2. 备份数据到新表中
INSERT INTO employees_backup SELECT * FROM employees;

这样就会创建一张与 employees 表结构相同的 employees_backup 表,并且将 employees 表中的所有数据复制到 employees_backup 表中。