Delete和Truncate详解

发布时间 2023-12-11 19:25:05作者: 同学?

-- delete命令
-- 语法:delete from 表名[where条件]
-- 删除数据(避免这样写,会全部删除)
DELETE FROM `student2`
-- 删除指定数据
DELETE FROM `student2`WHERE id=1;
-- truncate命令
-- 作用:完全清空一个数据库表,表的结构和索引,约束不会变
TRUNCATE `student2`
/*delete与truncate的区别
相同点:都能删除数据,都不会删除表的结构
不同:truncate 不影响事务*/
-- 测试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)VALUES('1'),('2'),('3')
DELETE FROM `test`-- 不会影响自增
TRUNCATE TABLE `test`-- 自增会归零
/*delete删除问题
重启数据库会有两种现象
innodb 自增列会从1开始(存在内存当中的,断电即失)
MySAM 继续从上一个自增量开始(存在文件中的,不会)