热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

sql中truncate,delete,drop的区别

这三个命令的相同点truncate和不带where子句的delete,以及drop都会删除表内的数据,不同点是truncate会清除表数据表置id从1开始,delete就只删除记录,drop可以用来删除表或数据库并且将表所占用的空间全部释放

这三个命令的相同点truncate和不带where子句的delete, 以及drop都会删除表内的数据,不同点是truncate会清除表数据表置id从1开始,delete就只删除记录,drop可以用来删除表或数据库并且将表所占用的空间全部释放

不同点:
1. truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.

代码如下

Truncate是SQL中的一个删除数据表内容的语句,用法是:

  语法   TRUNCATE TABLE name   
参数   name   

是要截断的表的名称或要删除其全部行的表的名称

Truncate table 表名 速度快,而且效率高,因为:   TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少


2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.

DELETE 语句
DELETE 语句用于删除表中的行。

语法

代码如下

DELETE FROM 表名称 WHERE 列名称 = 值

"Fred Wilson" 会被删除:

DELETE FROM Person WHERE LastName = 'Wilson'

删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:

代码如下

DELETE FROM table_name或者:

DELETE * FROM table_name


3.delete语句不影响表所占用的extent
drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage.
4.速度,一般来说: drop> truncate > delete

有时候我们会决定我们需要从中清除一个表格。事实上,如果我们不能这样做的话,那将会是一个很大的问题,因为数据库管理师 (Database Administrator -- DBA) 势必无法对数据库做有效率的管理。还好,SQL 有提供一个 DROP TABLE的语法来让我们清除表格。 DROP TABLE 的语法是:

代码如下

DROP TABLE "表格名"

我们如果要清除在SQL CREATE 中建立的顾客表格,我们就打入:

代码如下
DROP TABLE customer.


5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。

总结,在使用上面三种命令时最好用delete来代替,其它两个都是非常危险工作,一不小心你的数据库或表可能被删除或清除哦。

推荐阅读
  • 大数据领域的职业路径与角色解析
    本文将深入探讨大数据领域的各种职业和工作角色,帮助读者全面了解大数据行业的需求、市场趋势,以及从入门到高级专业人士的职业发展路径。文章还将详细介绍不同公司对大数据人才的需求,并解析各岗位的具体职责、所需技能和经验。 ... [详细]
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • 在iOS开发中,多线程技术的应用非常广泛,能够高效地执行多个调度任务。本文将重点介绍GCD(Grand Central Dispatch)在多线程开发中的应用,包括其函数和队列的实现细节。 ... [详细]
  • 初学者在编写C语言程序时,常常遇到程序运行结束后窗口立即关闭的情况。本文将探讨如何解决这一问题,并提供一些常见的错误排查方法。 ... [详细]
  • 主机托管是指企业将服务器托管在专业数据中心,以替代自建数据中心的方式。这种方式不仅节省了成本,还提供了多种技术和管理上的优势。然而,主机托管也存在一些潜在的挑战,特别是在部署多个应用时。本文将详细探讨主机托管的主要利弊,帮助企业做出更明智的决策。 ... [详细]
  • 自动驾驶中的9种传感器融合算法
    来源丨AI修炼之路在自动驾驶汽车中,传感器融合是融合来自多个传感器数据的过程。该步骤在机器人技术中是强制性的,因为它提供了更高的可靠性、冗余性以及最终的 ... [详细]
  • 高考不仅是学业的分水岭,更是人生道路的重要转折点。专业的选择直接影响到未来的就业和发展。本文将探讨当前及未来适合女生的热门专业,帮助考生在志愿填报时做出明智的选择。 ... [详细]
  • 本文探讨了 Java 中 Unsafe.park 和 Object.wait 方法的区别,分析了它们的性能和适用场景,并提供了专业建议。 ... [详细]
  • 本文探讨了如何通过多种方法增强 Windows 远程服务的安全性,有效防范暴力破解攻击。 ... [详细]
  • 本文介绍了多种方法来恢复或重置 Windows XP 系统中的管理员密码,包括使用密码重设盘、借助其他管理员账户以及利用第三方软件等。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • 高效重装Windows 10系统指南
    如何快速地为您的电脑重装Windows 10系统?本文将详细介绍从下载系统镜像到安装完成的每一步操作。 ... [详细]
  • SSM框架下的在线教育平台源代码与文档
    本文介绍了基于SSM(Spring, Spring MVC, MyBatis)框架开发的教务网络管理系统。该系统旨在有效管理学生各学年的成绩,支持快速查询学生成绩和班级信息。系统具备完善的需求分析、设计和实现方案,确保数据的安全性和系统的易用性。 ... [详细]
  • 深入解析Java中的空指针异常及其预防策略
    空指针异常(NullPointerException,简称NPE)是Java编程中最常见的异常之一。尽管其成因显而易见,但开发人员往往容易忽视或未能及时采取措施。本文将详细介绍如何有效避免空指针异常,帮助开发者提升代码质量。 ... [详细]
author-avatar
Wei-Micro_788
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有