sql几种删除语句的联系与区别
DELETE、TRUNCATE、DROP三种删除语句联系与区别
相同点:
1.truncate和不带where子句的delete、以及drop都会删除表内的数据。
2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。
不同点:
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,再重新导入/插入数据。
6.delete是DML语句,不会自动提交。drop/truncate都是DDL语句,执行后会自动提交。
7、TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
8、TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。
9、对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
10、TRUNCATE TABLE 不能用于参与了索引视图的表。
转载于:https://www.cnblogs.com/GHzz/p/9541672.html
sql几种删除语句的联系与区别相关推荐
- sql中几种删除语句的比较和基础用法
sql中有三种删除语句 delete.drop.truncate 1.delete 基础用法:delete from table(表名) [where] 用法理解:用于删除有明确定义的数据或者整个表的 ...
- 零基础自学SQL课程 | DELETE 删除语句
大家好,我是宁一. 今天是SQL课程的第十课. 讲讲DELETE 删除语句,用来删除表中的一条或多条记录. 基本语法: DELETE FROM <表名> WHERE <筛选条件> ...
- DROP TABLE, TRUNCATE TABLE, DELETE TABLE 三种删除语句的区别
1.DROP TABLE 清除数据并且销毁表,是一种数据库定义语言(DDL Data Definition Language), 执行后不能撤销,被删除表格的关系,索引,权限等等都会被永久删除. 2. ...
- Python的三种删除语句
从列表中删除元素 你经常需要从列表中删除一个或多个元素.例如,玩家将空中的一个外星人射杀后,你很可能要将其从存活的外星人列表中删除;当用户在你创建的 Web 应用中注销其账户时, 你需要将该用户从活跃 ...
- PL/SQL两种case语句写法
--case表达式中的简单caseDECLARE v_num NUMBER :=# v_result VARCHAR2(30); BEGIN v_result := MOD(v_num,2); dbm ...
- MYSQL中的删除语句
1. 背景介绍 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. "SQL" ----是用于访 ...
- oracle删除语句
1.删除用户语句:(当我们想要删除当前用户下的所有表,直接删除用户再重建一个用户) //保证有删除用户的权限 drop user user_name cascade; 2.授权 grant conne ...
- oracle删除唯一索引sql语句_高级SQL之在选择语句中使用更新和删除
点击蓝字关注我吧 [本文详细介绍了数据库中在选择语句中使用更新和删除的方法,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 SQL UPDATE 语句 Update 语句 Update 语句 ...
- sql语句截断_SQL Server中SQL截断和SQL删除语句之间的区别
sql语句截断 We get the requirement to remove the data from the relational SQL table. We can use both SQL ...
最新文章
- 2021年大数据ZooKeeper(一):ZooKeeper基本知识
- Python数据框结合lambda函数的使用
- 基于Pytorch再次解读LeNet-5现代卷积神经网络
- Android中调用另一个Activity并返回结果-以模拟选择头像功能为例
- Ubuntu 配置 spark
- SAP Business Application Studio和Authentication Trust Management
- Java命令行界面(第21部分):航空公司2
- C++插入中文到mysql乱码
- 第五十一期:互联网不如国企,去BAT的程序员都是diao丝?
- 如何处理db2中文不显示
- equals和== 的用法
- 编译原理pl/0 c语言版 pl0.h文件
- python高端写法_python高级篇:使用元类方式实现单例模式详解
- script标签的加载解析执行
- 752. [BJOI2006] 狼抓兔子
- mt2503短信數量和定義的不一致
- RMII RGMII MII GMII个人总结
- 关于国内LTE宽带集群通信知识现状介绍
- tdr 定位公式_时域反射计TDR原理详细解析
- 学习C#的一点一滴(20)
热门文章
- SAP CRM Contact和Account的从属关系
- 字节是微型计算机中存储容量的度量单位,微型计算机内存容量的基本计量单位...
- php dvld.active 1,PHP的字符串
- python两个类共用一个变量_python – 如何从一个类到另一个类访问变量?
- python集合运算_Python 集合set()添加删除、交集、并集、集合操作详解
- 超微服务器硬盘红灯_硬盘亮红灯服务器崩溃的解决方法
- unity ui插件_用Unity制作GalGame/视觉小说游戏的模型素材与插件推荐
- iview 级联选择组件_vue组件递归渲染实例
- java多线程编程核心技术 pdf_Java多线程编程核心技术之volatile关键字
- python中库是什么意思_python的库是什么意思