mysql怎么批量删除表中的数据和怎么删除表数据之后让主键值连续

首先是怎么批量删除表中的数据

下面是在mysql中创建的表格t_user

CREATE TABLE t_user(
	id INT PRIMARY KEY AUTO_INCREMENT,
	username VARCHAR(20) NOT NULL UNIQUE,
	`password` VARCHAR(32) NOT NULL,
	email VARCHAR(200)
);

mysql delete根据主键删除大量数据缓慢的优化 mysql主键怎么删除_android

先在其中插入几条数据

INSERT INTO t_user(username,`password`,email) VALUES('admin1','admin1','admin1@fan.com'),
	                                                   ('admin','admin','admin@fan.com')

mysql delete根据主键删除大量数据缓慢的优化 mysql主键怎么删除_mysql_02

通过主键批量删除数据

DELETE FROM t_user WHERE KEY IN(2,3)
//或者DELETE FROM t_user WHERE id IN(2,3)

通过其他键批量删除数据

DELETE FROM t_user WHERE username IN("admin1","admin")

然后是如何删除表数据之后让主键值连续

我们可以看到删除表中数据之后再插入,主键id的值没有从1开始,但是是在之前id=(2,3)的基础上累加

mysql delete根据主键删除大量数据缓慢的优化 mysql主键怎么删除_数据库_03

如果想要删除表中所有数据之后,增加数据从1开始,可以在mysql中增加以下代码(注意:如果数据没有完全删除,下面方法无效)

ALTER TABLE t_user AUTO_INCREMENT = 1

先将所有数据删除之后,执行上面的代码,那么就会得到结果如下

mysql delete根据主键删除大量数据缓慢的优化 mysql主键怎么删除_mysql_04

如果想要从任意位置删除数据之后或者数据没有完全删除之后插入主键有序

先把id弄乱

mysql delete根据主键删除大量数据缓慢的优化 mysql主键怎么删除_数据库_05

接着删除主键列,得到下面的结果

ALTER TABLE t_user DROP id

mysql delete根据主键删除大量数据缓慢的优化 mysql主键怎么删除_android_06

然后再执行新增id列,并设置为主键,然后让其自增

ALTER TABLE t_user ADD id INT NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST

得到如下结果

mysql delete根据主键删除大量数据缓慢的优化 mysql主键怎么删除_mysql_07

注意:我们现在删除数据,尝试再插入

mysql delete根据主键删除大量数据缓慢的优化 mysql主键怎么删除_主键_08

这说明:这种方法不是永久的,每次如果主键被弄乱,就要重新执行上面两句代码,才能恢复连续

最后说明

mysql的主键是不能保持永久连续自增的,所以只能采取类似上面的办法进行手动自增。

参考资源:

mysql数据库删除一条数据之后,主键id不连续的问题解决_mysql删除表中某一行数据 id为什么不变化

MySQL:自增主键为什么不能保证连续递增_mysql自增id冲突