delete与truncate的区别

-- 第15节 Delete和Truncate
-- 删除数据库(避免这样写)
-- 语法:delete from 表名 where 条件
-- 删除的是表中的内容,但表头,也就是表结构还在
DELETE FROM `student1` WHERE id=1;

-- truncate命令表示清空某一张表:truncate 表名;
TRUNCATE `student1`;

-- 以下是为了测试delete和truncate的区别代码
CREATE TABLE `test`(
   `id` INT(4) NOT NULL AUTO_INCREMENT,
   `coll` VARCHAR(20) NOT NULL,
   PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO `test`(`coll`) VALUE('1'),('2'),('3');

DELETE FROM test;-- delete 语句删除不会影响自增

TRUNCATE TABLE `test`;-- truncate 语句删除自增会归零
/*

1、delete与truncate的区别


  • 相同点:都能删除数据,但不会删除表结构

  • 不同点:

    • truncate:会重新设置自增列,计数器会归零,而且不会影响事务

    • delete删除的问题,重启数据库后有以下现象

      • 用 INNODB引擎:自增列会从1开始(存在内存中的,断电即失)

      • 用 MYISAM引擎:继续从上一个自增量开始(存在文件中,不会断电失去)


*/

 

posted @ 2022-03-27 21:42  狂神大鑫  阅读(186)  评论(0)    收藏  举报