JAVA数据库mysql面试题——delete 和 truncate 的区别?

delete 和 truncate 的区别?

 delete 用来删除数据库表中的信息:  delete from 表名 [where 条件].
  truncate 它也可删除表中的数据.    truncate table 表名 ;
  
  delete 只删除数据,不会删除表中的索引值. 如果自动增长目前是100 , 删除掉后,下次添加会从101开始.
  truncate 会删除对应的索引, 把表删除,重新创建一个表.

演示如下:

查询表中数据:SELECT * FROM customer;

JAVA数据库mysql面试题——delete 和 truncate 的区别?

开始是空表,我们插入数据:

INSERT INTO customer VALUES(NULL,'赵敏','神龙教');
INSERT INTO customer VALUES(NULL,'张无忌','无党派');

JAVA数据库mysql面试题——delete 和 truncate 的区别?

#先使用delete 删除所有数据.

DELETE FROM customer WHERE username='赵敏';

JAVA数据库mysql面试题——delete 和 truncate 的区别?

然后添加一条数据:

INSERT INTO customer VALUES(NULL,'令狐冲','华山派');

JAVA数据库mysql面试题——delete 和 truncate 的区别?

#使用truncate删除表中数据

执行语句:

TRUNCATE TABLE customer;

JAVA数据库mysql面试题——delete 和 truncate 的区别?

总结:

           delete 只删除数据,不会删除表中的索引值. 
           truncate 会删除对应的索引, 把表删除,重新创建一个表.