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

作者:静就是空 时间:2024-01-14 22:38:57 

主要介绍了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, 再重新导入/插入数据。

来源:https://www.cnblogs.com/ypha/p/13711288.html

标签:SQL,删除,语句
0
投稿

猜你喜欢

  • 解读sqlalchemy的常用数据类型有哪些

    2022-02-19 19:42:17
  • python如果快速判断数字奇数偶数

    2023-11-28 20:13:59
  • python进行两个表格对比的方法

    2021-12-15 20:31:57
  • Dreamweaver量身打造Wordpress留言板(三)

    2009-12-13 18:45:00
  • asp 实现当有新信息时播放语音提示的效果

    2011-03-31 11:00:00
  • Javascript正则表达式基础

    2009-02-01 18:13:00
  • Django实战之用户认证(初始配置)

    2022-08-17 22:15:02
  • Python Opencv中基础的知识点

    2023-06-08 21:10:48
  • line-height 属性的继承问题

    2008-07-26 12:27:00
  • python PyTorch预训练示例

    2022-07-06 18:24:02
  • 深入解析Python的Tornado框架中内置的模板引擎

    2022-08-03 12:43:52
  • 对python中使用requests模块参数编码的不同处理方法

    2022-11-02 01:30:29
  • SQL 语句中的通配符

    2007-10-11 18:03:00
  • python3.x 生成3维随机数组实例

    2021-04-11 04:02:43
  • oracle数据库中如何处理clob字段方法介绍

    2024-01-17 05:55:41
  • 使用python制作游戏下载进度条的代码(程序说明见注释)

    2023-06-15 00:39:52
  • js判断传入时间和当前时间大小实例(超简单)

    2024-05-02 17:26:40
  • Firefox下无法正常显示年份的解决方法

    2024-04-18 09:39:50
  • python对常见数据类型的遍历解析

    2022-01-18 21:24:28
  • 三种不同方式连接MySQL数据库的方法及示例

    2010-06-11 13:37:00
  • asp之家 网络编程 m.aspxhome.com