关于delete与 truncate 个人理解 001

TRUNCATE 与delete的看得见差别

本人新手小白一个,最近找工作的时候别人总是在问 truncate与delete的区别。什么是否去除高水位啊,日志记录多少啊,数据恢复难易程度啊,等等。网上很多。我在这说个我自己的发现。

一个没有用的想法

如果给你两张刚刚数据被删的表,一个用delete,有一个用truncate。你怎么才能分辨出哪张表是用delete,哪张表是truncate?
好像可以用视图看一下谁的水位高,我不知道怎么看。我自己用了一种比较麻烦的方法试验了一番。就是当一个表是truncate的时候,表自身原有的rowid会被释放掉。select * from 表 where rowid = '原有rowid ’ 时会报错,而 delete 不会,只会查不出数据。

场景再现

创建测试表 test1 ,test2


```sql
create  table test1 as select * from emp ;

create  table test2 as select * from emp ;

select rowid from test1 where rownum = 1;--AAAVGqAAEAACA8DAAA

select rowid from test2 where rownum = 1;--AAAVGrAAEAACA8LAAA

delete from test1;
truncate table test2;


select * from test1 where rowid = 'AAAVGqAAEAACA8DAAA'
--无数据  也不会报错


select * from test2 where rowid = 'AAAVGrAAEAACA8LAAA'
--报错   ora 01410 无效的rowid 

个人理解

个人觉得,truncate所谓的降低高水位,就是将之前的rowid释放掉了。之前rowid的定义是 数据存放的物理地址,释放掉物理地址 不就是降低高水位。而delete没有此功能,意味着整个表的数据都被至为空(至为空,可以看到rowid,而delete有rowid却看不到)。

个人情绪

我觉得工作中沟通是很重要的,而专有名词,或者英语简称是我们沟通的很大的敌人。有的时候总是听一些大佬口吐芬芳我却什么都听不懂,半天吐出个 买瓶,这边来个%¥&*¥。个人觉得沟通就是站在对方的立场上,将自己的意思表达清楚。如果只站在自己大佬的高度去说自己东西,而不管对方听没听明白,就不是抱着沟通的意愿去的。能把很虚很空的逻辑说的很明白,才是真大佬,才是真的理解。我相信计算机所有的逻辑都能通过生活中简单的例子找到原型,而不是遥不可及的大佬,用一堆专业术语去解释另外一个专业术语。
本人跨专业小白,对很多名词一脸懵逼。我希望所从事的行业能对小白温柔一点。
如果以上内容有任何不懂的,都可以问我,虽然可能不对,但是一定给你说明白。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值