MySQL清空数据表的方法实例与分析

从地方操作进程和结果简单看出,它们最大的分别便是delete在不限量where规范化下清空表的话,不会重新载入参数auto_increment的值,新插入的会趁机上次的值接着增添;而truncate则不然,他会一直重新恢复生机设置为1

5、正是由于
truncate操作不会记录到日志中,所以它不会激活触发器。所以对于由
foreign封锁引用的表,不可能应用 truncate table,而应利用不带
where子句的 delete语句。

3、truncate必须要做清空表使用,而 delete能够协作
where,order by,limit等字句使用,所以在灵活方面,delete完胜。

2、在事物管理方面,truncate或然不会那么安全。因为
delete言语是数据库操作语言(dml卡塔尔国,这几个操作会放到 rollback segement
中,事务提交之后才生效;假设有相应的 trigger,实行的时候将被触发。而
truncate是数据库定义语言(ddl卡塔尔国,操作立刻生效,原数据不松开
rollback segment中,不可能回滚,操作不触发 trigger

truncate table table_n;delete from table_n;

MySQL数据库中,假如大家想清空数据表的话,能够经过下边五个语句来贯彻:

#delete演示mysql create table testforde( - number int not null auto_increment, - name varchar(20) not null, - primary key(number) - );Query OK, 0 rows affected (0.05 sec)#truncate演示mysql create table testfortr( - number int not null auto_increment, - name varchar(20) not null, - primary key(number) - );Query OK, 0 rows affected (0.04 sec)

实例

上述是两张同样布局的数据表,上面我们先插入数据,然后再分别用 delete
truncate操作它们,看下结果什么

咱俩先经过实例看下通过那三种方法清空数据库的长河和结果

4、truncate操作不会记录到日志中,而delete则是记录的。

那便是说除了上面能鲜明看出来的区分之外,他们还留存以下几点差异:

1、truncate是一切清空的,而delete是逐行删除的。相较来说,truncate频率较高。

mysql insert into testforde(name) values('zhagnsan'),('lisi'),('wanger'),('zhaoliu'),('xiaosan'),('qiqi'),('hanba');Query OK, 7 rows affected (0.04 sec)Records: 7 Duplicates: 0 Warnings: 0mysql insert into testfortr(name) values('zhagnsan'),('lisi'),('wanger'),('zhaoliu'),('xiaosan'),('qiqi'),('hanba');Query OK, 7 rows affected (0.00 sec)Records: 7 Duplicates: 0 Warnings: 0mysql select * from testforde;+--------+----------+| number | name |+--------+----------+| 1 | zhagnsan || 2 | lisi || 3 | wanger || 4 | zhaoliu || 5 | xiaosan || 6 | qiqi || 7 | hanba |+--------+----------+7 rows in set (0.01 sec)mysql select * from testfortr;+--------+----------+| number | name |+--------+----------+| 1 | zhagnsan || 2 | lisi || 3 | wanger || 4 | zhaoliu || 5 | xiaosan || 6 | qiqi || 7 | hanba |+--------+----------+7 rows in set (0.00 sec)mysql delete from testforde;Query OK, 7 rows affected (0.02 sec)mysql truncate table testfortr;Query OK, 0 rows affected (0.02 sec)mysql insert into testforde(name) values('zhagnsan'),('lisi'),('wanger'),('zhaoliu'),('xiaosan'),('qiqi'),('hanba');Query OK, 7 rows affected (0.00 sec)Records: 7 Duplicates: 0 Warnings: 0mysql insert into testfortr(name) values('zhagnsan'),('lisi'),('wanger'),('zhaoliu'),('xiaosan'),('qiqi'),('hanba');Query OK, 7 rows affected (0.00 sec)Records: 7 Duplicates: 0 Warnings: 0mysql select * from testforde;+--------+----------+| number | name |+--------+----------+| 8 | zhagnsan || 9 | lisi || 10 | wanger || 11 | zhaoliu || 12 | xiaosan || 13 | qiqi || 14 | hanba |+--------+----------+7 rows in set (0.00 sec)mysql select * from testfortr;+--------+----------+| number | name |+--------+----------+| 1 | zhagnsan || 2 | lisi || 3 | wanger || 4 | zhaoliu || 5 | xiaosan || 6 | qiqi || 7 | hanba |+--------+----------+7 rows in set (0.00 sec)

如上正是MySQL清空数据表的全体内容了,希望这篇小说的从头到尾的经过对我们的就学或然工作能具有助于,如若有疑问我们能够留言调换。

6、truncate不能够用于参预了索引视图的表

总结

发表评论

电子邮件地址不会被公开。 必填项已用*标注