delete、truncate、drop的区别

delete、truncate、drop的区别

delete:

1、可以删除整张表的数据:delete from table_name,也可以添加where子句控制要删除的数据:delete  from table_name where . . .,同时可以操作view、

2、属于DML语言,每次删除一行,都在事务日志中为所删除的每行记录一项。产生rollback,事务提交之后才生效;如果有相应的    trigger,执行的时候将被触发

如果删除大数据量的表速度会很慢

3、删除内容不删除表的结构(定义),不释放空间

truncate:

1、truncate table table_name,只能操作table,在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行,但truncate比delete速度快,

由于默认情况下truncate通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

所以使用的系统和事务日志资源少,可以使用reuse storage; truncate会将高水线复位(回到最开始).  

2、 truncate是DDL语言, 操作立即生效,自动提交,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. 

3、删除内容、释放空间但不删除表的结构(定义)。

drop:

1、drop table table_name,drop语句将删除表的结构,以及被依赖的约束(constrain),触发器(trigger),索引(index);

依赖于该表的存储过程/函数将保留,但是变为invalid状态.  

2、drop也属于DDL语言,立即执行,执行速度最快

3、删除内容和定义,释放空间

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: deletetruncatedrop都是数据库中用于删除数据的关键字,但它们的作用和使用方法有所不同。 1. delete:用于删除表中的数据,但不会删除表本身。delete语句可以带有where子句,用于指定删除哪些数据。删除的数据可以通过rollback操作进行撤销。 2. truncate:用于删除表中的所有数据,但不会删除表本身。truncate语句不能带有where子句,一旦执行就会删除整个表的数据,且无法通过rollback操作进行撤销。 3. drop:用于删除表本身,包括表中的所有数据。drop语句不能带有where子句,一旦执行就会删除整个表,且无法通过rollback操作进行撤销。 因此,deletetruncatedrop区别在于它们的作用对象和删除范围不同。在使用时需要根据具体情况选择合适的关键字。 ### 回答2: deletetruncatedrop都是用来删除数据库中的数据或对象的SQL语句,但它们之间有一些区别delete是用来删除表中的数据,只删除数据行而不删除表本身。delete语句可以根据指定的条件来删除满足条件的数据行,也可以不带条件地删除表中的所有数据行。delete语句在删除数据行时会将操作记录保存在事务日志中,因此可以通过回滚操作将删除的数据恢复回来。 truncate是用来删除表中的所有数据,但保留表的结构和定义。truncate语句会直接删除表中的所有数据行,而不像delete语句那样将每一行的操作记录保存在事务日志中,从而在删除大量数据时可以提高效率。但是,truncate语句不可回滚,删除后的数据无法恢复。 drop是用来删除数据库中的表、视图、函数等对象。drop语句可以删除整个表或某个指定的对象,同时也将对象的定义、结构和数据一并删除。drop语句删除的操作是不可逆的,一旦执行删除操作后,被删除的对象无法恢复。 总结起来,delete是用来删除表中的数据行,truncate是用来删除表中的所有数据行并保留表结构,drop是用来删除表或其他数据库对象。同时,delete语句可以回滚操作,而truncatedrop语句的删除操作是不可恢复的。 ### 回答3: deletetruncatedrop是数据库中常用的用来删除数据或对象的操作命令,它们在功能上有一些区别。 首先,delete是一种用于删除数据的操作。它是一条DML(数据操纵语言)命令,通常用于删除表中的一部分或全部数据。delete语句需要明确指定删去哪些数据,可以使用where子句来限定删除的范围。delete只删除数据,不删除表对象或表结构。 其次,truncate也是一种用于删除数据的操作。它是一条DDL(数据定义语言)命令,用于删除表中的所有数据。与delete不同的是,truncate命令直接删除表中的数据,而不记录在日志中,因此执行速度较快。truncate删除数据时不返回被删除的数据,并且无法恢复被删除的数据。同时,truncate还会释放表所占用的空间,重置表的自增ID等。因此,truncate命令更适合在需要清空表中所有数据的情况下使用。 最后,drop是一种用于删除对象的操作。它是一条DDL命令,常常用于删除表、视图、索引、触发器等数据库对象。drop会直接删除整个对象,并且无法恢复。与deletetruncate不同,drop不仅删除数据,还会连同对象本身一起删除。 总结起来,delete适用于删除表中的特定数据或按条件删除数据,truncate适用于删除表中所有数据且不需要回滚的情况,drop适用于删除表或其他数据库对象。需要注意的是,这些操作都是不可逆的,执行前需谨慎考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值