首页 > 试题广场 >

下面有关sql 语句中 delete truncate的说法

[不定项选择题]
下面有关sql 语句中 delete、truncate的说法正确的是?()
  • 论清理表数据的速度,truncate一般比delete更快
  • truncate命令可以用来删除部分数据。
  • truncate只删除表的数据不删除表的结构
  • delete能够回收高水位(自增ID值)
1、处理效率:drop>trustcate>delete
2、drop删除整个表;trustcate删除全部记录,但不删除表;delete删除部分记录
3、delete不影响所用extent,高水线保持原位置不动;trustcate会将高水线复位。
发表于 2020-03-26 22:30:47 回复(8)
truncate删除分区数据,不就是部分数据吗?只不过不能用where条件。
发表于 2021-12-25 15:19:40 回复(0)
数据库结构
发表于 2019-09-03 16:28:38 回复(0)
truncate将直接删除原来的表, 并重新创建一个表, 因此执行速度比delete快
发表于 2020-02-25 11:32:59 回复(2)

在使用truncate时一定要注意,虽然可以恢复,但为了减少麻烦,还是要慎重。

如果想删除部分数据用delete,注意带上where子句,回滚段要足够大;

如果想保留表而将所有数据删除,如果和事务无关,用truncate即可;

如果和事务有关,或者想触发trigger,还是用delete;

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

发表于 2020-03-04 10:43:11 回复(0)
truncate之所以快是因为,truncate不删除数据,只是将当前表重新映射一段存储空间,并把旧空间标记为可用,并未覆盖数据。
发表于 2019-09-04 15:14:54 回复(1)
oracle数据库中高水位的概念,通俗的讲就是将存储空间想象成水库,插入数据水位线就会上升,但是删除操作并不会造成最高水位线下降。 参考 https://blog.csdn.net/heqiyu34/article/details/8129673?utm_medium=distribute.wap_relevant.none-task-blog-BlogCommendFromBaidu-3.nonecase&depth_1-utm_source=distribute.wap_relevant.none-task-blog-BlogCommendFromBaidu-3.nonecase
编辑于 2020-07-16 21:46:49 回复(0)
在Oracle中执行delete删除操作不会降低高水位。执行truncate 操作可以降低高水位,通常能把高水位降到0. 【解析】简单的说就像水库里的历史最高水位。 就如刚挖的水库一样里面没有一滴水,那么它的最高水位为0.同理在刚建的新表中  由于没有一条数据,所以的高水位是0,随着不断的往里面添加数据,进行增删操作,那么它的高水位就会上涨。 当然也不是  说你把表的数据删掉一半,它的高水位就会下降,因为高水位代表历史最高水位。  在Oracle中执行delete删除操作不会降低高水位。执行truncate 操作可以降低高水位,通常能把高水位降到0.  所以为了降低高水位,能尽量使用truncate的就不使用delete操作。  ---------也就是说进行增删操作只会上涨,不会下跌!!!  
发表于 2020-09-06 03:39:28 回复(0)
什么叫回收高水位线?
发表于 2020-03-05 12:32:36 回复(2)
这篇简书详细介绍和对比了truncate 和 delete 的区别:MYSQL中TRUNCATE和DELETE的区别 - 简书 (jianshu.com)
发表于 2021-06-22 01:02:36 回复(1)
delete并不能回收高水位线
发表于 2020-01-26 09:36:27 回复(0)
truncate table命令将快速删除数据表中的所有记录,但保留数据表结构。 这种快速删除与delete from 数据表的删除全部数据表记录不一样,delete命令删除的数据将存储在系统回滚段中,需要的时候,数据可以回滚恢复,而truncate命令删除的数据是不可以恢复的
发表于 2020-07-07 17:00:22 回复(0)
ddl:drop删除表结构,truncaye删除全部数据不删除表结构 dml:delete删除部分数据同where
发表于 2020-04-24 22:26:08 回复(0)
1.truncate删除后,如果再插入,标识列从1开始
  delete删除后,如果再插入,标识列从断点开始
2.delete可以添加筛选条件
 truncate不可以添加筛选条件
3.truncate效率较高
4.truncate没有返回值
delete可以返回受影响的行数
5.truncate不可以回滚
delete可以回滚
发表于 2022-04-12 15:29:39 回复(0)
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。
TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。 TRUNCATE,DELETE,DROP 放在一起比较:
TRUNCATE TABLE :删除内容、释放空间但不删除定义。
DELETE TABLE: 删除内容不删除定义,不释放空间。
DROP TABLE :删除内容和定义,释放空间。
发表于 2022-01-11 17:31:36 回复(0)
处理效率:drop>truncate>delete
drop会删除整个表;truncate删除全部记录,不会删除表结构;delete删除部分记录。
delete不会回收高水位;truncate会将高水线复位。
编辑于 2021-10-06 11:24:34 回复(0)
1.delete 可以加where 条件,truncate不能加
2.truncate删除,效率高一丢丢
3.假如要删除的表中有自增长列,
如果用delete删除后,再插入数据,自增长列的值从断点开始,
而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate删除没有返回值【直接全部删除数据】,delete删除有返回值【返回受影响的行数!!】
5.truncate删除不能回滚,delete删除可以回滚.

最好自己去实操一遍!!!
发表于 2021-09-07 09:44:02 回复(0)

truncate tbl_name 。

执行truncate语句需要拥有表的drop权限,从逻辑上讲,truncate table类似于delete删除所有行的语句或drop table然后再create table语句的组合。为了实现高性能,它绕过了删除数据的DML方法,因此,它不能回滚。尽管truncate table与delete相似,但它被分类为DDL语句而不是DML语句

发表于 2020-09-20 16:50:21 回复(0)

truncate命令只能用于删除表中的全部数据

发表于 2020-04-06 11:36:59 回复(0)

A. 论清理表数据的速度,truncate一般比delete更快。

C. truncate只删除表的数据不删除表的结构。

这是因为:

  • TRUNCATE命令通常比DELETE命令更快,因为它不是逐行删除数据,而是直接将表的数据文件截断,使其为空。这使得TRUNCATE更适合用于快速清空整个表的数据。

  • TRUNCATE命令只删除表的数据行,不删除表的结构,索引、触发器等仍然保留在表中。

B. "truncate命令可以用来删除部分数据" 这一说法不正确。TRUNCATE命令会删除整个表的数据,不能用来删除部分数据。

D. "delete能够回收高水位(自增ID值)" 这一说法也不正确。DELETE命令删除数据时,不会自动回收自增 ID 值(如果有的话)。自增 ID 值的管理通常是由数据库引擎自动处理的,而不是由DELETE命令负责的。

发表于 2023-10-13 09:43:24 回复(0)