Oralce删除数据

删除数据

delete from student;(速度慢)
删除所有的记录,表结构还在,写日志,可以恢复的

数据(通过delete删除的数据)的恢复


数据的恢复有个前提:在删除数据之前需要设置回滚点
sql>savepoint a;


数据的恢复
sql>rollback to a;//数据回滚即数据回滚到回滚点前

如果直接就是sql>rollback;
就要看用户有没有在删除用户以后进行了commit操作,如果有则恢复不了
如果没有则可以恢复到用户上一次commit操作和rollback操作的数据

为什么会这样?
是因为:如果数据库执行了DML语句(insert select update delete),执行完之后,处理的数据,都会回滚到回滚段中(除了select语句),等待用户进行提交(commit)或者回滚(rollback),当用户执行commit和rollback后,放在回滚段中的数据就会被删除。
可以形象的理解成
commit就是将数据库中的数据提交到回滚段中,会覆盖原先数据
rollback就是将回滚段中的数据回滚到数据库中,不会覆盖数据,回滚段中还是上一个commit提交到回滚段中的数据


drop table student; 删除表的结构和数据

delete from student where xh='A001';删除一条记录

truncate table student;(速度快)
删除表中所有的记录,表结构还在,不写日志,无法找回删除的记录

猜你喜欢

转载自1124117571.iteye.com/blog/2284837