TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。

DELETE 删除表,可以回退。可以带where 条件。建议使用delete。但是TRUNCATE 删除表数据比delete要快。

使用TRUNCATE TABLE语句

TRUNCATE TABLE语句提供了一种删除表中所有记录的快速方法。因为TRUNCATE TABLE语句不记录日志,只记录整个数据页的释放操作,而DELETE语句对每一行修改都记录日志,所以使用TRUNCATE TABLE语句进行删除操作总是比没有指定条件的DELETE语句效率高。TRUNCATE TABLE立即释放了表中数据及索引所占用的全部空间,同时也释放了分配给所有索引的空间。其语法格式如下:

TRUNCATE TABLE [ [database.] owner.] table_name

与DELETE语句相比,TRUNCATE TABLE具有以下优点:

l   所用的事务日志空间较少  DELETE语句每次删除一行,并在事务日志中为所删除的每行记录一个项。TRUNCATE TABLE通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。

l   使用的锁通常较少  当使用行锁执行DELETE语句时,将会锁定表中各行以便删除。TRUNCATE TABLE始终锁定表和页,而不是锁定各行。

l   表中将毫无例外地不留下任何页  执行DELETE语句后,表仍会包含空页。例如,必须至少使用一个排他(LCK_M_X)表锁,才能释放堆中的空表。如果执行删除操作时没有使用表锁,表(堆)中将包含许多空页。对于索引,删除操作会留下一些空页,尽管如此,不过这些页会通过后台清除进程迅速释放。

那么可不可以用TRUNCATE TABLE代替不带WHERE子句的DELETE语句呢?在以下几种情况是不行的:

l   在需要保留标识的情况下不能用TRUNCATE TABLE,因为TRUNCATE TABLE会重置标识。

l   在需要使用触发器的情况下不能使用TRUNCATE TABLE,因为它不会激发触发器。

l   对于由FOREIGN KEY约束引用的表(即主键所在的表,不是外键所在的表)不能使用TRUNCATE TABLE.

l   对于参与了索引视图的表不能使用TRUNCATE TABLE,注意指的是索引视图,并非普通视图。

那么用户需要具有什么权限才可以使用TRUNCATE TABLE呢?若要使用TRUNCATE TABLE语句,必须是表的所有者,具有DBA权限或表的ALTER权限。对于基表,TRUNCATE TABLE语句需要有表的排他访问权限,因为操作是原子操作(要么删除所有行,要么不删除任何行)。这意味着所有以前打开的游标和引用要截断的表的游标都必须关闭,并且必须发出COMMIT或ROLLBACK命令释放对表的引用。对于临时表,每个用户都有自己的数据副本,不需要排他访问。

下面结合一个简单的实例来说明如何使用TRUNCATE TABLE语句。比如需要删除商品信息表中的所有数据,可以使用如下语句:

TRUNCATE TABLE 商品信息

由于TRUNCATE TABLE操作是不进行日志记录的,所以建议在TRUNCATE TABLE语句之前使用BACKUP DATABASE语句来对数据库做备份。

(转) Delete/Truncate删除,释放表空间、降低高水位线、resize释放磁盘空间相关优化

硬盘空间不足,打算删除数据库中的多余数据,但删除数据后,硬盘硬盘空间不能释放.[delete后用:alter table table_name move    truncate后用:alter tab ...

Oracle的闪回特性之恢复truncate删除表的数据

Oracle的闪回特性之恢复truncate删除表的数据 SQL> show parameter flashback NAME                                 T ...

MySQL之存储引擎(表类型)的选择

和大部分的数据库不同,MySQL中有一个存储引擎的概念,用户可以根据数据存储的需求来选择不同的存储引擎.本次博客就来介绍一下MySQL中的存储引擎.MySQL版本 5.7.19. 概述 MySQL的存 ...

谈谈数据库中MyISAM与InnoDB区别 针对业务类型选择合适的表

MyISAM:这个是默认类型,它是基于传统的ISAM类型, ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法. ...

Django-开放静态资源-获取请求携带的数据-pychram连接数据库-修改Django默认数据库-DjangoORM操作--表管理-记录管理-01

目录 关于静态资源访问 为什么要配置静态文件才能获取静态资源 常见的静态文件种类 如何配置来开启访问权限 禁用浏览器缓存 django的自动重启机制(热启动) 静态文件接口动态解析 向服务器发送数据 ...

truncate删除一个分区,测试全局索引是否失效

目的,有一个清理数据的需求,需要删除历史的一个分区所有记录信息,但是存在主键global索引,如何更好的维护. 如下测试流程一 提前创建好一个已时间created 字段作为分区键的范围分区表 SQL& ...

Greenplum 行存、列存,堆表、AO表的原理和选择

转载自: https://github.com/digoal/blog/blob/master/201708/20170818_02.md?spm=a2c4e.11153940.blogcont179 ...

随机推荐

ArcGIS Engine开发之书签加载

ArcGIS中书签是保存特定视图范围的快捷方式.使用书签保存关注的视图范围,可在需要时快速定位.查看与浏览.书签功能主要用到IMapBookmarks.ISpatialBookmark和IAOIBoo ...

fflush函数的深入理解

本人昵称sky,欢迎与各位多多交流学习 这样的c程序想必大家都不陌生,fflush()这个函数有清除输入输出缓存的功能,那很多人就会问了,什么是清除输入输出缓存呢? 其实就是我们在printf输出的时 ...

网络编程之PC版与Android手机版带断点续传的多线程下载

一.多线程下载         多线程下载就是抢占服务器资源         原理:服务器CPU 分配给每条线程的时间片相同,服务器带宽平均分配给每条线程,所以客户端开启的线程越多,就能抢占到更多的服 ...

google gflags使用.

code.google.com 被墙的好开心... gflags很简单. 编译使用都很简单. (不像omaha这种丧心病狂的编译依赖). cmake 生成一下. 一路顺风顺水. 值得注意的是:  默认 ...

Linux 安装oracle10g 配置dataguard 介绍和步骤

DataGuard是甲骨文推出的一种高可用性数据库方案,在Oracle 8i之前被称为Standby Database.从Oracle 9i开始,正式更名为Data Guard.它是在 ...

Spring与Hibernate整合之通用Dao的实现

在上一篇文章中写了如何直接利用HibernateTemplate进行数据库操作,但在一般的项目中很少直接得到HibernateTemplate的Bean对象从而操作数据库的,下面就简要介绍一下实现通用 ...

快速搭建Web环境 Angularjs + Express3 + Bootstrap3

快速搭建Web环境 Angularjs + Express3 + Bootstrap3 AngularJS体验式编程系列文章, 将介绍如何用angularjs构建一个强大的web前端系统.angula ...

(原)Struts 相关资源下载

官网:http://struts.apache.org 点击[Download],进入页面如下,可以看到下载的资源: 点击[struts-2.3.20-all.zip],就能获取Struts2项目所有 ...

[BZOJ 3747] [POI 2015] Kinoman【线段树】

Problem Link : BZOJ 3747 题解:ZYF-ZYF 神犇的题解 解题的大致思路是,当区间的右端点向右移动一格时,只有两个区间的左端点对应的答案发生了变化. 从 f[i] + 1 到 ...

R中基本统计图

一.条形图 1.安装包install.packages("vcd"); library(vcd);count

php delete和truncate,TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。...相关推荐

  1. HTML做表单联系地址选择省,HTML 表单

    HTML 表单用于搜集不同类型的用户输入. 元素 HTML 表单用于收集用户输入. 元素定义 HTML 表单: 实例 . form elements . HTML 表单包含表单元素. 表单元素指的是不 ...

  2. JCheckBox 默认选择_[注册表] 将Windows 10默认应用程序设置页面添加到桌面右键菜单中...

    从Windows 10初始版本开始微软就已调整默认程序配置策略,即强制用户设置关联的默认程序不允许软件设置.这也是很多用户经常在通知栏里看到某某文件格式被重置的原因,因为软件安装后设置的会被微软重置默 ...

  3. Mysql清空表(truncate)与删除表中数据(delete)的区别

    2019独角兽企业重金招聘Python工程师标准>>> 为某基于wordpress搭建的博客长久未除草,某天升级的时候发现已经被插入了几万条垃圾留言,如果一条条删除那可真是累人的活. ...

  4. oracle数据库删除数据Delete语句和Truncate语句的对比

    oracle数据库删除数据Delete语句和Truncate语句的对比 当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分 ...

  5. Truncate Table 删除表内容避免产生过多日志

    数据库每天在进行频繁操作和记录,LOG文件会特别大且增长的比较快,有时候一天就5000M,每天删除一次也很不方便.有没有方法能避免生成日志或不产生日志呢?不产生日志的方法目前我还没找到,但我们在平常的 ...

  6. sql truncate_如何在SQL Delete和SQL Truncate语句后使用数据库备份恢复数据

    sql truncate This article explores the recovery of data removed by SQL Delete and SQL Truncate state ...

  7. delete table 和 truncate table

    使用delete语句删除数据的一般语法格式: delete [from] {table_name.view_name} [where<search_condition>] 将XS表中的所有 ...

  8. mysql 两表连接删除数据库_Mysql (二)Mysql 数据库表增删改查

    一.表操作 1.[增加] create table DBname.table_name(id int, namevarchar(255))engine=MyISAM charset=gbk; 2.[删 ...

  9. oracle删除库里的所有表,清空mysql指定库里全部表数据-自动删除所有表,有外键约束的表优先删除...

    清空mysql指定库里所有表数据-自动删除所有表,有外键约束的表优先删除 由于要清空数据库数据 ,手动非常麻烦.网上找了一下,有一个Oracle的,参照它,在其上修改一下用于Mysql,把代码奉献如下 ...

最新文章

  1. 2022-2028年中国工业固体废物综合利用行业深度调研及投资前景预测报告
  2. 十张图看懂SDN与NFV的区别与联系?
  3. c/c++函数指针(Hook前奏1)
  4. linux内网穿透局域网frp(实现有网就能访问你的局域网台式机服务器)
  5. FXRibbon 1.2版发布
  6. 只能输入正整数 以及常用的正则表达式
  7. python gmm em算法 2维数据_python自学日记18——数据结构与算法(2)
  8. 系统集成的系统架构图的相关的vsd素材_信息系统集成专业技术知识:软件架构...
  9. 【实践】端智能在大众点评搜索推荐重排序的应用实践
  10. c语言4 答案详解,2019考研数据结构C语言版详解答案(4)
  11. 关于本学期西南交通大学ACM-ICPC校集训队 训练计划(Beta 1.0)
  12. MPlayer源代码分析
  13. Springboot集成通用Mapper与Pagehelper,实现mybatis+Druid的多数据源配置
  14. 天才基本法中预测犯罪发生地点的数学建模真的可以为所欲为【全国大学生数学建模竞赛】
  15. 哆点Linux客户端上网
  16. java类加载器说法正确的_Java中的类加载器
  17. oracle 内存翻译,dumping_oracle_blocks翻译(二)
  18. 如何下载Eclipse?
  19. 数据库并发控制、悲观锁(Pessimistic Lock)、乐观锁(Optimistic Lock)、排他锁(Exclusivelocks X锁)、共享锁(Shared Lock S锁)
  20. Excel批量插入多个空行-VBA实现

热门文章

  1. IFrame标签的两个用法介绍
  2. 解决IE8下body{ overflow:hidden;}无效的解决办法
  3. Kafka学习(一)-------- Quickstart
  4. heap 的一些用法
  5. link-cut-tree 简单介绍
  6. jq的链式调用.end();
  7. 如何在自己的代码中实现分享视频文件或者是图片文件到微信 QQ微博 新浪微博等!!!...
  8. TextView实现自动滚动滚动.
  9. 浅谈算法和数据结构: 七 二叉查找树
  10. recovery编译问题汇总