注:二者都不会清空表的结构
delete:根据条件删除一条或多条语句
truncate:完全清空表
二者最大的区别在于:
delete:
删除数据时,下一条语句的自增序列会继续跟从上一个刚删除的自增量开始,数据如下:
删除第4行数据
DELETE FROM test_02 WHERE id=4 -- 我这里的表时test_02
可以发现这里的自动增量是5
而truncate的功能就在于它能完全清空表数据并将自增量重新设为从1开始。
执行以下SQL命令:
TRUNCATE TABLE test_02
此时表的数据已经清空,这里的数据是我创建表时的默认值,不用在意
此时的自动增量变为了1
二者区别大概就如上述所示,如果想清空表的话就用truncate,想要删几条语句的话就用delete,当然使用delete命令删除数据后也未尝不能把自动增量设置为重1开始,设置为1的前提是使用InnoDB引擎
解决方法:
还是之前的delete数据
这里的自增量是5,经过以上重启mysql服务后,自增量又重新变为了4
删除第四条后的数据
重启下数据库就行了
我的电脑—>右键单击管理---->服务和应用程序—>服务
右击,然后在点击重新启动就行了
再重新插入一条数据:
INSERT INTO test_02(`name`,`pwd`,`sex`) VALUES('曹植','456','男')
结果如下:
而使用MyISAM引擎的话,经过重启服务之后,不会改变自增量从当前最后一条数据开始的增量,还是继承了从上次删除的那条数据之后开始。