数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较(实例说明)

 更新时间:2012年09月12日 15:56:37   作者:  
数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较,通过举例说明让大家了解
数据库删除语句的分别介绍:
Delete:用于删除表中的行(注:可以删除某一行;也可以在不删除表的情况下(即意味着表的结构、属性、索引完整)删除所有行)
语法:删除某一行:Delete From 表名称 Where 列名称=值
删除所有行: Delete From 表名称 或 Delete * From 表名称

Drop:用于删除表(注:将表的结构、属性、索引也会被删除。)
语法:Drop Table 表名称
Truncate:用于删除表内的数据(注:仅删除表内的数据,不删除表本身,相当于Delete语句不写Where子句一样)
语法:Truncate Table 表名称

数据库中删除语句的相同点和不同点的比较:

相同点:

1.truncate和不带where子句的delete,以及drop都能删除表内的数据
2.truncate和delete只删除表数据保留表结构

不同点:

1. truncate table tablename

删除表内容释放表空间保留表结构(即:只删除表内的数据,不删除表本身。相当于Delete语句不写where子句一样),不使用事务处理即和事务无关

truncate 语句缺省情况下将空间释放到 minextents个 extent,
除非使用reuse storage;truncate 会将高水线复位(回到最开始)。

2. delete table tablename [where子句]

delete属于数据操作语言(DML),不能自动提交事务,需commit提交
这个操作会放到 rollback segement 中,事务提交之后才生效;
如果有相应的 trigger,执行的时候将被触发。
delete 语句不影响表所占用的 extent,高水线(high watermark)保持原位置不动

3. drop table tablename

drop属于数据定义语言(DDL)可以自动提交事务;
drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index)【删除表数据同时删除表结构】;
依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。
drop 语句将表所占用的空间全部释放。
删除数据的速度,一般来说: drop> truncate > delete

使用场合:

当你不再需要该表时, 用 drop;
当你仍要保留该表,但要删除所有记录时, 用 truncate;
当你要删除部分记录时(always with a where clause), 用 delete.

注意:
对于有主外键关系的表,不能使用truncate而应该使用不带where子句的delete语句,由于truncate不记录在日志中,不能够激活触发器

作者 韩学敏

相关文章

  • 为什么你不要收缩数据库文件(国外翻译)

    为什么你不要收缩数据库文件(国外翻译)

    这几天查看了很多关于SQL SERVER收缩数据文件方面的文章,准备写一篇关于收缩日志方面的文章,但是突然有种冲动将看过经典的文章翻译出来,需要的朋友可以参考下
    2018-03-03
  • ssdb简单介绍

    ssdb简单介绍

    SSDB是一套基于LevelDB存储引擎的非关系型数据库(NOSQL),可用于取代Redis,更适合海量数据的存储,这篇文章主要介绍了ssdb简单介绍,需要的朋友可以参考下
    2023-08-08
  • Navicat运行sql文件导入数据不全或导入失败的解决方案

    Navicat运行sql文件导入数据不全或导入失败的解决方案

    最近导出数据库到另一个服务器,遇到这个问题,下面这篇文章主要给大家介绍了关于Navicat运行sql文件导入数据不全或导入失败的解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • sql注入之手工注入示例详解

    sql注入之手工注入示例详解

    之前和大家分享了基本的SQL注入的知识,这一篇讲的就是在得知注入点的之后,如何有效地进行脱裤。文章通过示例介绍的很详细,对大家的理解和学习很有帮助,下面来一起看看吧。
    2016-09-09
  • 最近关于Navicat到期的完美解决办法(亲测有效)

    最近关于Navicat到期的完美解决办法(亲测有效)

    这篇文章主要介绍了最近关于Navicat到期的完美解决办法(亲测有效),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • openGauss数据库共享存储特性概述

    openGauss数据库共享存储特性概述

    这篇文章主要介绍了openGauss数据库共享存储特性简介,本特性提供主备机共享一份存储的能力,实现基于磁阵设备的主备共享存储HA部署形态,可选通过OCK RDMA提升备机实时一致性读能力,需要的朋友可以参考下
    2023-02-02
  • hadoop map-reduce中的文件并发操作

    hadoop map-reduce中的文件并发操作

    hadoop mapreduce最主要的应用是基于键值对的数据的运算,过滤,提取。但除此之外,我们可以顺带利用mapreduce高并发的特性做一些用常用方法难以处理的问题,比如大量数据,大量文件的并发读写
    2014-04-04
  • 数据库查询优化(主从表的设计)

    数据库查询优化(主从表的设计)

    写过许多的数据库查询语句,面对过许多的问题,也在磕磕碰碰中学到了很多东西。昨天在看系统数据库设计与SQL代码时,突然“发现”了许多平常不屑看到的问题,于是就萌生了把它提出来思考的念头
    2013-08-08
  • iwms access与sql版的安装与转换

    iwms access与sql版的安装与转换

    iwms access与sql版的安装与转换...
    2007-01-01
  • 大数据Spark Sql中日期转换FROM_UNIXTIME和UNIX_TIMESTAMP的使用

    大数据Spark Sql中日期转换FROM_UNIXTIME和UNIX_TIMESTAMP的使用

    本文主要介绍了大数据Spark Sql中日期转换FROM_UNIXTIME和UNIX_TIMESTAMP的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02

最新评论