1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > oracle中删除yuj_oracle中可以使用drop delete和truncate三个命令来删除数据库中的表...

oracle中删除yuj_oracle中可以使用drop delete和truncate三个命令来删除数据库中的表...

时间:2019-06-14 20:52:59

相关推荐

oracle中删除yuj_oracle中可以使用drop delete和truncate三个命令来删除数据库中的表...

oracle中经常用到的删除语句主要有三种,分别是delete,truncate,drop。

1. delete和truncate都是删除表中的内容而不能删除表的结构,而drop则是删除表的结构和内容(表将不复存在);

2. delete可以删除整个表的数据也可以有选择性地删除某一条或多条数据,而truncate则是一次性删除整个表的数据;

3. 使用delete删除的表数据并没有真正被删掉,数据占用的表空间还存在,相当于Windows中将数据删除到回收站中,日后有需要还可以恢复;

4. 使用truncate删除的表数据会连同其占用的表空间一起直接被删掉,相当于Windows中使用del+shift键直接删除文件一样,无法恢复。

相同点:

1、truncate和不带where字句的delete以及drop都会删除表内数据

2、truncate和drop都是ddl语句(数据定义语句),执行后会自动提交。

不同点:

1、truncate和delete都不删除表结构,只删除表数据。drop语句会将表结构、被依赖的关系、触发器、索引都删除,保留依赖于该表的存储过程和函数,但是变为invalid状态。

2、delete是dml(数据库操作语言),这个操作会放到rollback segment中,会记录日志,可以通过回滚操作撤销删除的数据,必须通过提交才会真的删除数据。如果有相应的触发器trigger,则会触发。

truncate、drop都是ddl(数据库定义语言),操作不能回滚,不会记录到日志中。且不会触发trigger。

3、delete不影响表占用的表空间extent,高水线(high watermark)保持不动,即删除内容后,在插入别的语句时,表中的开始位置为删除前的最高位置。如删除前表中有三条数据,删除后插入新数据时,会从第四条开始插入。

drop 将表所占用的表空间全部释放。

truncate语句缺省情况下会将表空间释放到最小表空间minextents个extents,除非使用reuse storage;

truncate语句会将高水位线复位。

4、速度上,一般来说drop>truncate >delete。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。