oracle数据库删除数据Delete语句和Truncate语句的使用比较

 更新时间:2012年09月12日 19:41:56   作者:  
oracle当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍
当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍。

一、delete语句

(1)有条件删除

语法格式:delete [from] table_name [where condition];

如:删除users表中的userid为‘001'的数据:delete from users where userid='001';

(2)无条件删除整个表数据

语法格式:delete table_name;

如:删除user表中的所有数据:delete users ;

二、Truncate语句

使用Truncate语句是删除表中的所有记录。

语法格式: Truncate [table] table_name;

(1)删除所有记录不保留记录占用空间

Truncate [table] table_name [drop storage];

如:删除users表中的所有数据并不保存占用空间: Truncate table users drop storage; 由于默认使用drop storage关键字,所以可以省略 drop storage;
(2)删除所有记录保留记录占用空间

Truncate [table] table_name [reuse storage];

如:删除users表中的所有数据并保存占用空间: Truncate table users reuse storage;

三、两种删除语句的对比

由于delete语句删除记录时候,记录是逐条删除的,而Truncate 语句删除数据时不产生回退信息;所以如果需要删除大量数据的时候使用delete则占用较多的系统资源,而如果使用Truncate 则会快的多。

下面通过实例说明一下:

1、首先建立user表:

create table users
(
userid varchar2(20) ,
username varchar2(30),
userpass varchar2(30)
);复制代码

2、接着插入一条数据

insert into users values('001','GavinDream','123456'); 3、使用复制插入方法插入几万条数据

insert into users(userid,username,userpass) select * from users;我插入了 4194304条数据,使用delete删除花费时间为:90.964 seconds,然后又插入了二倍的数据,但使用truncate花费时间仅仅为2.215 seconds,如下图所示:



相关文章

  • Oracle 安装和卸载问题收集(集合篇)

    Oracle 安装和卸载问题收集(集合篇)

    在安装过程中出现的一些问题的解决办法。值得收藏与学习。比如在安装的时候如果有中文的路径则会出现类似这样的提示:加载数据库时出错:areasQueries
    2009-06-06
  • rman恢复方案和oracle异机恢复

    rman恢复方案和oracle异机恢复

    这篇文章主要介绍了rman恢复方案和oracle异机恢复,需要的朋友可以参考下
    2014-03-03
  • ORACLE 毫秒与日期的相互转换示例

    ORACLE 毫秒与日期的相互转换示例

    本节主要介绍了ORACLE毫秒与日期的相互转换,毫秒转换为日期格式化的时间可以是12小时制和24小时制
    2014-07-07
  • Oracle 11g中密码过期问题详解

    Oracle 11g中密码过期问题详解

    本文主要是对Oracle中产生密码过期的2种情况进行了详细分析,并给出了解决方案,非常的简单实用,有需要的朋友可以参考下
    2014-09-09
  • Oracle用户密码过期报错的解决办法

    Oracle用户密码过期报错的解决办法

    Oracle数据库 11g默认密码过期时间为180天过期,针对密码过期企业一般是采用修改密码的方式,个人电脑上则可以将密码过期时间修改为永久,本文给大家介绍了Oracle用户密码过期报错的解决办法,需要的朋友可以参考下
    2024-03-03
  • Oracle跨数据库查询并插入实现原理及代码

    Oracle跨数据库查询并插入实现原理及代码

    需要从一个数据库中的表GIS_WEICHAI_DATA_1S中的数据导入到另个一数据库的表GIS_WEICHAI_DATA_1S中,接下来为你讲解跨数据库查询并插入需要的朋友可以参考下
    2013-03-03
  • Oracle使用pivot和unpivot函数实现行列转换

    Oracle使用pivot和unpivot函数实现行列转换

    项目开发过程中常常会涉及到oracle数据库的一个数据操作,那就是行列的互转,本文为大家介绍了两个可以实现这一操作的函数pivot和unpivot,感兴趣的可以了解一下
    2023-06-06
  • oracle报错(ORA-00600)问题处理

    oracle报错(ORA-00600)问题处理

    最近在做一个项目,使用的是Oracle数据库,近两天不知道怎么回事,告警日志里总是显示这个错误(ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[])度娘了一下,终于找到解决方式,分享给大家
    2014-08-08
  • oracle增加表空间大小两种实现方法

    oracle增加表空间大小两种实现方法

    增加表空间大小:一种是为表空间增加数据文件/另一种方法是增加表空间原有数据文件尺寸,感兴趣的朋友可以了解下,或许对你有所帮助
    2013-01-01
  • Oracle 创建和操作表的示例代码

    Oracle 创建和操作表的示例代码

    本节主要介绍Oracle创建、修改和删除表的基本操作,对创建数据库表一般有两种方式,文中结合示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2023-12-12

最新评论