同点,使用drop delete truncate 都会删除表中的内容
drop table 表名
delete from 表名(后面不跟where语句,则也删除表中所有的数据)
truncate table 表名
区别
首先delete 属于DML,当不commit时时不生效的
而truncate 和 drop 则是直接生效的,不能回滚。
truncate 和 delete 不删除表的结构,只是针对表中的内容删除
drop语句将删除表的结构,被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
truncate 会释放占用空间,而drop 和 delete不会。
速度:drop>truncate>dalete
综上所述,可以得到一个问题,使用drop 和 truncate相对delete是危险的,当使用drop 和 truncate 时不能回滚。delete相对安全,可以回滚,并且commit以后才会提交,并且不会删除表结构,也不会释放表所占用的空间。
上文来自: http://zhengweiit.blog.51cto.com/1109863/514860
分享到:
相关推荐
SQL语句中----删除表数据drop、truncate和delete的用法,对你爱不完
Delete 语句和 Truncate 语句都是 Oracle 数据库中删除数据的方法,但是它们之间存在着明显的差异。在删除大量数据时,Truncate 语句的速度较快,但是 Delete 语句可以根据条件删除数据,并且可以回退删除操作。因此...
### 利用Oracle系统触发器防止误删除表操作 #### 背景介绍 在企业级应用中,数据库的安全性和稳定性至关重要。Oracle作为一款广泛使用的数据库管理系统,提供了丰富的功能来保障数据安全。其中,系统触发器是Oracle...
详细阐述了Oracle中三种删除的方式truncate,drop和delete三者的区别和联系.
"Oracle定时删除表空间的数据并释放表空间" Oracle数据库定时删除表空间的数据并释放表空间是通过创建存储过程和定时任务来实现的。下面详细讲解该知识点: 一、创建存储过程 首先,需要创建一个存储过程来删除...
尽管`drop`、`truncate`和`delete`都是DDL或DML操作,但在Oracle中,仍有可能恢复已删除的数据或表: - **drop操作**:如果Oracle的回收站功能被启用,则可以通过回收站恢复已删除的表。需要注意的是,这取决于表...
在Oracle数据库中,删除表中数据有两种主要方式:Delete语句和Truncate语句。两者在功能上相似,但有着显著的区别,适用于不同的场景。 **Delete语句** Delete语句是一种灵活的数据删除方式,它可以有条件地删除...
### Oracle数据库删除表中重复记录的方法 在Oracle数据库管理中,经常会遇到需要处理表中的重复数据的情况。重复数据不仅会占用不必要的存储空间,还可能导致数据统计错误或业务逻辑混乱等问题。因此,掌握如何有效...
根据提供的文件信息,本文将详细解释Oracle数据库中的删除操作,包括DELETE、DROP以及TRUNCATE三个主要命令。这些命令在数据库管理中极为重要,能够帮助我们有效地管理数据表中的记录或整个表结构。 ### Oracle删除...
然而,Oracle不支持直接为用户授予针对单个表的`TRUNCATE`权限,而是通常将更广泛的`DROP ANY TABLE`权限赋予用户,但这可能会带来安全隐患。本文将探讨两种实现为用户授权`TRUNCATE TABLE`的方案,以确保安全性和可...
Oracle 在删除表时,没有直接清空表所占的块,而是把这些已删除的表的信息放到了一个虚拟容器“回收站”中,而只是对该表的数据块做了可以被覆写的标志。 可以直接查询这个“回收站”或者查询 user_table 视图来...
- **原理**:当使用`DROP`命令删除表后,Oracle并没有立即清除表占用的空间,而是将其放入了一个特殊的区域——回收站中,直到这些空间被新的数据覆盖。 - **查询回收站**:可以通过查询`USER_TABLES`视图或`USER_...
当表被DROP后,如果没有立即被其他数据覆盖,Oracle会将其放置在**回收站**(Recycle Bin)中,这使得用户可以在一定时间内恢复被删除的表。 #### 三、误删除数据的具体恢复方法 ##### 3.1 DELETE误删除的恢复方法 ...
- **TRUNCATE TABLE**:与`DELETE`不同,`TRUNCATE`命令会删除表中的所有数据,但保留表结构。此操作不支持回滚,且速度更快。然而,它不会释放表空间,除非使用`ALTER TABLE ... DEALLOCATE UNUSED`命令。 2. **...
Oracle 10g还支持使用`TRUNCATE TABLE`语句,它用于删除表中的所有数据,但保留表结构。与`DELETE`不同,`TRUNCATE`不记录任何删除操作,因此速度更快,但同样不可逆。若需删除表而保留其结构,可以使用`TRUNCATE ...
如果你只是想删除表中的所有数据但保留表结构,可以使用`TRUNCATE TABLE`命令。这比`DELETE`命令更快,因为`TRUNCATE`不记录任何删除操作,但请注意,`TRUNCATE`不支持事务回滚,且无法用于有外键约束的表。要释放表...
以上介绍了两种在Oracle数据库中删除重复记录的方法。第一种方法适用于数据量较小的情况,第二种方法则更适合处理大数据量的场景。实际应用时,可以根据具体情况选择合适的方法。需要注意的是,在进行删除操作之前...