MySQL学习——delete(truncate)
Posted ferryboat-huan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL学习——delete(truncate)相关的知识,希望对你有一定的参考价值。
3.5、删除
/*********************************************************
第三章 mysql数据管理
3.5 删除
p15:Delete和Truncate详解
time:12:05
*********************************************************/
delete命令
语法:delete from 表名 [where 条件]
-- 删除数据
DELETE FROM student -- 不要这么写,这样做会删掉所有的数据
-- 1:删除指定数据
DELETE FROM student WHERE id = 1
TRUNCATE命令(专门清空数据库的命令)
作用:完全清空一个数据库表,表的结构和索引约束不会变!
-- 2:清空student表
TRUNCATE `student`
delete命令与TRUNCATE命令的区别
- 相同点:都能删除数据,都不会删除表结构
- 不同点:
- TRUNCATE 重新设置自增列,计数器会归零
- TRUNCATE 不会影响事务
CREATE TABLE IF NOT EXISTS `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删除的问题==,重启数据库(net start mysql),出现以下现象
- InnoDB 自增列会从1开始(数据是存在内存当中的,断点即失)
- MyISAM 继续从上一个自增量开始(数据存在文件中的,不会丢失)
-- 3:测试delete与truncate的区别
CREATE TABLE IF NOT EXISTS `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` -- 自增会归零
-------------------------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `test_MyISAM`(
id INT(4) NOT NULL AUTO_INCREMENT,
coll VARCHAR(20) NOT NULL,
PRIMARY KEY(id)
)ENGINE=MYISAM DEFAULT CHARSET=utf8
INSERT INTO `test_MyISAM`(`coll`) VALUES('1'),('2'),('3');
DELETE FROM `test_MyISAM` -- 不会影响自增
DROP TABLE IF EXISTS `test_myisam`
以上是关于MySQL学习——delete(truncate)的主要内容,如果未能解决你的问题,请参考以下文章
Linux学习-MySQL中truncate和delete清除表数据区别
MySQL——delete 和 truncate 以及 drop 区别
MYSQL:如何清空表中的数据 truncate delete