DELETE 和 TRUNCATE 的区别

目录

背景 (纪要背景)

问题 (要解决的问题)

说明 (问题对应的说明及补充)

Demo(用例)

操作

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


背景

        : 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: 之后在此回滚的数据此时是无法恢复的.

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值