清空表数据时,为什么有的人用 DELETE,有的人偏爱 TRUNCATE?看完你就明白了
做数据库开发也好,做安全运维也好,很多人都会碰到一个看似简单、实则很容易踩坑的问题:我只是想把表清空,到底该用DELETE,还是TRUNCATE?表面上看,这俩都能把数据删掉。但真正在项目里,它们的差别一点都不小:执行效率不一样事务行为不一样自增主键表现不一样使用场景也完全不同另外,很多人还不知道,MySQL 里还有一个特别实用的骚操作:用一条 SQL,快速复制一张表的结构和数据这招在做测试环境、日志分析、应急取证、漏洞复现时特别方便。今天这篇文章,就把这两个容易被忽略、但非常实用的知识点一次讲透:CREATE TABLE ... AS SELECT快速建表DELETE和TRUNCATE的核心区别照样是实战风格,带 SQL、带结果、带思维导图。一、先准备测试表:学生表 + 三条数据为了方便演示,我们先创建一张测试表t_student。DROPTABLEIFEXISTSt_student;CREATETABLEt_student(snoINT(6)PRIMARYKEYAUTO_INCREMENT,snameVARCHAR(5)NOTNULL,sexCHAR(1)DEFAULT'男',ageINT(3),enterdateDATE,classnameVARCHAR(10),emailVARCHAR(15)UNIQUE);插入三条测试数据:INSERTINTOt_studentVALUES(NULL,'张三','男',21,'2023-09-01','java01班','zs@126.com');INSERTINTOt_studentVALUES(NULL,'李四','男',21,'2023-09-01','java01班','ls@126.com');INSERTINTOt_studentVALUES(NULL,'露露','男',21,'2023-09-01','java01班'