oracle笔记整理5——delete与truncate,rowid与rownum,删除重复记录

本文详细探讨了Oracle数据库中delete和truncate的区别,包括它们对日志的影响、锁定机制以及空间管理。同时,深入解析了rowid和rownum的概念,解释了rownum在查询中的应用和限制。此外,还提供了删除重复记录的策略。
摘要由CSDN通过智能技术生成

1) delete与truncate

a) delete一行一行删除,并且记录日志,truncate释放用于存储表数据的数据页(extent)来删除数据,在日志中只记录页的释放,故无法rollback,也无法flashback,从物理结构上来说,truncate之后,表所在的段头信息(segment header)被摧毁,导致段-区-数据块之间的路径被截断,无法查询到数据块上的数据,感觉就跟删除了一样。

b) delete时锁定行来删除,truncate时锁定表来删除。

c) delete删除数据后,表的高水平线不变,而truncate之后,表的高水平线重置为0,因此delete之后表所占空间不释放,而truncate之后表所占表空间释放。

d) truncate恢复
反向构造段头块→修改数据字典→修改段头块上的高水平线值。
http://www.aiweibang.com/yuedu/70298231.html

2) rowid与rownum

a) rowid是物理存在,表示记录在表空间中的唯一位置ID。

b) rownum是在已查询出的结果集上加的一个伪列(强调:先要有结果集),简单的说,rownum是符合条件的结果的序列号。它总是从1开始排起的,所以你选出的结果不可能没有1,而有比1大的值,任何时候想把rownum=1这条记录抛弃是不对的,它在结果集中是不可或缺的。例如 rownum &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值