简单了解SQL常用删除语句原理区别

 更新时间:2020年10月20日 09:46:01   作者:静就是空  
这篇文章主要介绍了简单了解SQL常用删除语句原理区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

主要介绍了SQL删除语句DROP、TRUNCATE、 DELETE 的区别,帮助大家更好的理解和学习sql语句,感兴趣的朋友可以了解下

DROP:

DROP TABLE test;

删除表test,并释放空间,将test删除的一干二净。

TRUNCATE:

TRUNCATE test;

删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在。

DELETE:

1、删除指定数据

删除表test中年龄等于30的且国家为US的数据

DELETE FROM test WHERE age=30 AND country='US';

2、删除整个表

仅删除表test内的所有内容,保留表的定义,不释放空间。

DELETE FROM test 或者 TRUNCATE test;

truncate table 命令将快速删除数据表中的所有记录,但保留数据表结构。这种快速删除与 delete from 数据表的删除全部数据表记录不一样,delete 命令删除的数据将存储在系统回滚段中,需要的时候,数据可以回滚恢复,而truncate 命令删除的数据是不可以恢复的。

相同点

truncate 和不带 where 子句的 delete, 以及 drop 都会删除表内的数据。

不同点:

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, 再重新导入/插入数据。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • MySQL中查询的有关英文字母大小写问题的分析

    MySQL中查询的有关英文字母大小写问题的分析

    这篇文章主要介绍了MySQL中查询的有关英文字母大小写问题的分析,作者从多个角度进行了实验,需要的朋友可以参考下
    2015-05-05
  • 一文详解MySQL主从同步原理

    一文详解MySQL主从同步原理

    这篇文章主要介绍了一文详解MySQL主从同步原理,MySQL主从同步是基于Bin Log实现的,而Bin Log记录的是原始SQL语句,更多相关内容介绍感兴趣的小伙伴可以参考一下
    2022-08-08
  • MySQL全面瓦解之查询的过滤条件详解

    MySQL全面瓦解之查询的过滤条件详解

    这篇文章主要给打大家介绍了关于MySQL全面瓦解之查询的过滤条件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • MySQL CHAR和VARCHAR区别

    MySQL CHAR和VARCHAR区别

    本文主要介绍了MySQL CHAR和VARCHAR区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • MySQL-MMM安装指南(Multi-Master Replication Manager for MySQL)

    MySQL-MMM安装指南(Multi-Master Replication Manager for MySQL)

    这篇文章主要介绍了mysql Multi-Master Replication Manager for MySQL的安装方法,需要的朋友可以参考下
    2014-02-02
  • MySQL数据库InnoDB引擎下服务器断电数据恢复方法

    MySQL数据库InnoDB引擎下服务器断电数据恢复方法

    这篇文章主要介绍了MySQL数据库InnoDB引擎下服务器断电数据恢复方法,需要的朋友可以参考下
    2016-04-04
  • mysql实现不用密码登录的实例方法

    mysql实现不用密码登录的实例方法

    在本篇文章里小编给大家整理的是一篇关于mysql实现不用密码登录的实例方法,有需要的朋友们可以学习参考下。
    2020-08-08
  • MySQL JSON类型的功能与应用

    MySQL JSON类型的功能与应用

    MySQL8的JSON数据类型为存储和查询JSON数据提供了强大的支持,本文主要介绍了MySQL JSON类型的功能与应用,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • 怎样获取MySQL结果集的第一条记录

    怎样获取MySQL结果集的第一条记录

    这篇文章主要介绍了怎样获取MySQL结果集的第一条记录问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • MySQL 触发器定义与用法简单实例

    MySQL 触发器定义与用法简单实例

    这篇文章主要介绍了MySQL 触发器定义与用法,结合简单实例形式总结分析了mysql触发器的语法、原理、定义及使用方法,需要的朋友可以参考下
    2019-09-09

最新评论