目录
背景 (纪要背景)
问题 (要解决的问题)
说明 (问题对应的说明及补充)
背景
: sql处理过程中,特此纪要!
问题
: DELETE 和 TRUNCATE 的区别是什么?
说明
:DELETE(DML - Data Manipulation Language)是数据库操作语言, 被操作的数据可以有事件标记, 可以被恢复回滚.
:TRUNCATE(DDL - Data Definition Language)是数据库定义语言, 因此被操作的数据一般不能恢复.
Demo(用例)
:下面示例一则DELETE对应的数据恢复处理:
-- create table
CREATE TABLE t4(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
target CHAR(4)
)ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
-- insert data
INSERT INTO t4(id, target) VALUES(1, '中铁'), (NULL, '四局'), (NULL, '七分局'), (NULL, '704');
INSERT INTO t4(id, target) VALUES(NULL, '黑求黑求'), (NULL, 'pool'), (NULL, 'lay'), (NULL, 'huuk');
-- search data
SELECT * FROM t4;
-- open transaction
START TRANSACTION;
-- delete data all
DELETE FROM t4;
-- search data
SELECT * FROM t4;
-- roll back
ROLLBACK;
-- delete data all
TRUNCATE TABLE t4;
操作
1> insert data
2> search data
3> open transaction
4> delete data all
5> search data
6> roll back
7> second search data
8> truncate data
explain: 之后在此回滚的数据此时是无法恢复的.