数据库中drop和delete的区别

 我来答
仁昌爱娱乐
高粉答主

2020-01-16 · 专注关心娱乐
仁昌爱娱乐
采纳数:760 获赞数:459866

向TA提问 私信TA
展开全部

数据库中drop和delete的区别为:删除不同、操作不同、操作对象不同。

一、删除不同

1、drop:drop主要用于删除数据结构,包括内部的数据内容。

2、delete:delete主要用于删除数据内容,不删除数据结构。

二、操作不同

1、drop:drop操作不放到rollbacksegment中,不能回滚,操作不触发trigger。

2、delete:delete操作会放到rollbacksegement中,在事务提交后生效,执行时触发相应的trigger。

三、操作对象不同

1、drop:drop的操作对象可以是数据库,也可以是数据库中的数据表。

2、delete:delete的操作对象只能是数据库中的数据表。

伪墨墨墨墨墨
2017-09-15 · TA获得超过2210个赞
知道大有可为答主
回答量:1678
采纳率:85%
帮助的人:947万
展开全部
1. truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的
存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,
执行的时候将被触发.
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发
trigger.
3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate
会将高水线复位(回到最开始).
4.速度,一般来说: drop> truncate > delete
5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及.
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还
是用delete.

如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据/

总结:
DROP用于删除表,数据库等.
TRUNCATE和DELETE都是删除表数据.
但是TRUNCATE相当于初始化,比如如果有自增长ID,用TRUNCATE删除后,自增长Id会从1开始,(truncat会释放表所占的空间)
而delete则不会.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linchen447
2017-09-16 · TA获得超过541个赞
知道小有建树答主
回答量:347
采纳率:0%
帮助的人:237万
展开全部
sql中delete,drop ,truncate都代表删除,但3者又有一些区别
1. truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始).
4.速度,一般来说: drop>; truncate >; delete
5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据

在实际应用中,三者的区别是明确的。
当你不再需要该表时, 用 drop;
当你仍要保留该表,但要删除所有记录时, 用 truncate;
当你要删除部分记录时(always with a WHERE clause), 用 delete.

而alter是对表结构的修改.
希望对你理解有帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
micro0369
2017-09-15 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4080万
展开全部
drop 是删除表定义,包括依附于此表的索引、外键等等,当然表的数据无处可存了。对应的是create table
delete 是删除数据,可以增加where条件,按条件删除,而不动表结构。对应的操作是insert(插入数据)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
9316叫你学习数据库
2020-10-21 · 贡献了超过189个回答
知道答主
回答量:189
采纳率:0%
帮助的人:10.2万
展开全部

208_9316讲授数据库基础_110delete、truncate、drop的区别

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式