首页 > 数据库 >在MySQL中 Truncate Delect Drop 的区别

在MySQL中 Truncate Delect Drop 的区别

时间:2024-07-23 10:32:54浏览次数:16  
标签:触发器 删除 Truncate -- Drop TRUNCATE TABLE Delect DELETE

在MySQL中 Truncate Delect Drop 的区别


 

面试问题:

--

-- 请详细描述MySQL中TRUNCATE TABLE、DELETE FROM和DROP TABLE三个命令的区别,包括它们的作用、性能影响、事务日志的生成以及对表结构和触发器的影响。

--

-- 回答:

--

-- 在MySQL中,TRUNCATE TABLE、DELETE FROM和DROP TABLE是三个用于管理数据库表的重要命令,它们之间在多个方面存在显著差异:

--

-- 作用:

-- TRUNCATE TABLE:此命令用于删除表中的所有行,但保留表本身的结构(包括索引、列定义等)和属性。它不激活DELETE触发器,并且操作通常不能被回滚。

-- DELETE FROM:该命令用于根据条件删除表中的一行或多行。如果没有指定条件,则删除所有行。DELETE会激活表的DELETE触发器,并且操作可以被回滚。

-- DROP TABLE:此命令用于删除整个表及其所有内容,包括结构、索引、数据和权限等。一旦执行,表将不再存在于数据库中,且此操作通常也不能被回滚。

-- 性能影响:

-- TRUNCATE TABLE:通常比DELETE更快,因为它不逐行删除数据,而是重置表并释放空间。它产生的日志较少,因为它不记录每行删除的详细日志。

-- DELETE FROM:可能相对较慢,尤其是当删除大量行且启用了事务和回滚功能时。它会逐行删除数据,并可能记录每行删除的日志。

-- DROP TABLE:在删除整个表时,通常比DELETE或TRUNCATE更快,因为它不涉及逐行处理。

-- 事务日志的生成:

-- TRUNCATE TABLE:通常产生的日志较少,因为它不逐行删除数据,而是直接重置表。

-- DELETE FROM:会记录详细的日志,以便在需要时可以回滚操作。

-- DROP TABLE:记录的是表删除的操作,而不是行级别的删除。

-- 对表结构和触发器的影响:

-- TRUNCATE TABLE:保留表结构,但不激活DELETE触发器。

-- DELETE FROM:不改变表结构,但会激活DELETE触发器(如果已定义)。

-- DROP TABLE:删除整个表,包括其结构、索引和触发器。

-- -- 综上所述,选择哪个命令取决于具体的需求和场景。如果需要快速清空表中的所有数据而不保留事务日志,且不关心触发器,则TRUNCATE TABLE是最佳选择。如果需要基于条件删除数据,并可能需要回滚操作,则DELETE FROM更适合。如果需要彻底删除整个表及其所有内容,则DROP TABLE是正确的选择。

标签:触发器,删除,Truncate,--,Drop,TRUNCATE,TABLE,Delect,DELETE
From: https://www.cnblogs.com/D1DCD/p/18317713

相关文章

  • 深度学习中的正则化技术 - Dropout篇
    序言在深度学习的浩瀚领域中,模型过拟合一直是研究者们面临的挑战之一。当模型在训练集上表现得近乎完美,却难以在未见过的数据(测试集)上保持同样优异的性能时,过拟合现象便悄然发生。为了有效缓解这一问题,Dropout......
  • 【转载】【内存】为什么手工drop_caches之后cache值并未减少?
    在Linux系统上查看内存使用状况最常用的命令是"free",其中buffers和cache通常被认为是可以回收的:$freetotalusedfreesharedbufferscachedMem:3276471610675483169716815833212593096-/+buffers/cache:47444032290276Swap:21......
  • and-design-vue设置dropdownClassName无效的问题
    样式发现是有插入的,但是没有生效,使用:deep也一样没有效果问题来源改组件是根app同级,所以使用:deep无效解决办法使用:global,需要加“!important”......
  • [CISCN2019 华北赛区 Day1 Web1]Dropbox
    进入题目注册一个账号登录进去后上传一个文件发现只能上传图片下载删除时分别抓包发现在download.php里下载,在delete.php处删除发现filename参数,有任意文件下载漏洞下载download.php,delete.php目录遍历在delete.php里发现class.phpdb=$db;}publi......
  • DropDMG 命令行工具使用文档
    dropdmg(1)DropDMGdropdmg(1)NAMEdropdmg-Command-lineInterfaceforDropDMGSYNOPSISdropdmg[options]file...dropdmg(1)DropDMGdropdmg(1)NAMEdro......
  • Pandas中dropna()函数理解
    今天在使用dropna函时候,感觉有点混乱,不明白为什么为何下面两个代码,how和参数选择all和选择any都是同样的结果。当时想的是对A列进行删除,如果A列全部是Na那么选择All才会生效。 实际原理如下:1:axis=0为按照行删除,axis=1为按照列删除。2:如果不设置subset参数,则默认在所有行/......
  • Angular Material 18+ 高级教程 – CDK Drag and Drop
    前言         目录上一篇 AngularMaterial18+高级教程–MaterialTooltip下一篇 AngularMaterial18+高级教程–CDKTable想查看目录,请移步 Angular18+高级教程–目录喜欢请点推荐......
  • css36 CSS Dropdowns
    https://www.w3schools.com/css/css_dropdowns.aspCSSDropdowns  CreateahoverabledropdownwithCSS.Demo:DropdownExamplesMovethemouseovertheexamplesbelow:   BasicDropdownCreateadropdownboxthatappearswhentheusermovesthem......
  • Linux系统postdrop服务进程持续增加导致无法登录
    临时解决方案:#servicepostfixstatus#servicesendmailstatus#servicepostfixstop[root@wign~]#ps-ef|grepsendmail|wc-l3038[root@wign~]#ps-ef|greppostdrop|wc-l3162停止postdrop服务,杀掉postdrop的进程#psaux|greppostdrop|grep-vgrep|cut-c9-15|xargs......
  • HTML5中 drag 和 drop api
    被拖放元素--A,目标元素--B。dragstart事件主体是A,在开始拖放A时触发。dragend事件主体是A,在整个拖放操作结束时触发。drag事件主体是A,正在拖放A时触发(整个拖拽,drag事件会在被拖拉的节点上持续触发,相隔几百毫秒)。dragenter事件主体是B,在A进入某元素的时候触发。drago......