语法:
delete from 表名 [where? 条件]
-- 删除数据(避免这样写,会全部删除)
DELETE FROM `student`
-- 删除指定数据
DELETE FROM `student` WHERE id='2'
TRUNCATE命令
作用:完全清空一个数据库表,表的结构和索引约束不会变!
代码案例:
-- 清空student表
TRUNCATE `student`
delete 和 truncate 区别:
1.相同点:都能删除数据,都不会删除表的结构?
2.不同点:
(1)truncate 会重新设置自增列,计数器会归零
(2)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=utf8mb4
INSERT INTO `test`(coll) VALUES ('1'),('2'),('3')
DELETE FROM `test` -- 不会影响自增
TRUNCATE TABLE `test` -- 自增会归零
了解即可:delete删除问题,重启数据库,现象
1.INNODB? ? 自增列会从1开始(存在内存中,断电即失)
2.MyISAM? ? 继续从上一个自增量开始(存在文件中的,不会丢失)