mysql5.1中delete和truncate的区别,实例如下
create table test_del(id int auto_increment,name varchar(10),primary key(id)); insert into test_del(name) values(‘xuhao‘),(‘fdsa‘),(‘fddsf‘); create table test_truc(id int auto_increment,name varchar(10),primary key(id)); insert into test_truc(name) values(‘xuhao‘),(‘fdsa‘),(‘fddsf‘);
mysql> select * from test_del; +----+-------+ | id | name | +----+-------+ | 1 | xuhao | | 2 | fdsa | | 3 | fddsf | +----+-------+ 3 rows in set mysql> select * from test_truc; +----+-------+ | id | name | +----+-------+ | 1 | xuhao | | 2 | fdsa | | 3 | fddsf | +----+-------+ 3 rows in set mysql> delete from test_del; Query OK, 3 rows affected mysql> delete from test_truc where true; Query OK, 3 rows affected mysql> insert into test_del(name) values(‘xuhao‘),(‘fdsa‘),(‘fddsf‘); Query OK, 3 rows affected Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into test_truc(name) values(‘xuhao‘),(‘fdsa‘),(‘fddsf‘); Query OK, 3 rows affected Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from test_del; +----+-------+ | id | name | +----+-------+ | 4 | xuhao | | 5 | fdsa | | 6 | fddsf | +----+-------+ 3 rows in set mysql> select * from test_truc; +----+-------+ | id | name | +----+-------+ | 4 | xuhao | | 5 | fdsa | | 6 | fddsf | +----+-------+ 3 rows in set mysql> truncate test_truc; Query OK, 0 rows affected mysql> insert into test_truc(name) values(‘xuhao‘),(‘fdsa‘),(‘fddsf‘); Query OK, 3 rows affected Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from test_truc; +----+-------+ | id | name | +----+-------+ | 1 | xuhao | | 2 | fdsa | | 3 | fddsf | +----+-------+ 3 rows in set
对于表中的自增id,delete和truncate的处理方式是不同,另外据说delete操作会写入日志,truncate不写入日志,言下之意,truncate慎用,不易恢复。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。