MySQL DELETE语句和TRUNCATE TABLE语句的区别

2010-10-08 16:05 佚名 互联网 我要评论(1) 字号:T | T

在MySQL数据库中,DELETE语句和TRUNCATE TABLE语句都可以用来删除数据,但是这两种语句还是有着其区别的,下文就为您介绍这二者的差别所在。

AD:

MySQL DELETE语句和TRUNCATE TABLE语句功能相似,但是二者究竟有何区别呢?下文就将为您分析MySQL DELETE语句和TRUNCATE TABLE语句的区别,供您参考。

在MySQL中有两种方法可以删除数据,一种是MySQL DELETE语句,另一种是MySQL TRUNCATE TABLE语句。DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。

如果要清空表中的所有记录,可以使用下面的两种方法:

DELETE FROM table1
TRUNCATE TABLE table1
其中第二条记录中的TABLE是可选的。

如果要删除表中的部分记录,只能使用DELETE语句。

DELETE FROM table1 WHERE ;
如果DELETE不加WHERE子句,那么它和TRUNCATE TABLE是一样的,但它们有一点不同,那就是DELETE可以返回被删除的记录数,而TRUNCATE TABLE返回的是0。

如果一个表中有自增字段,使用TRUNCATE TABLE和没有WHERE子句的DELETE删除所有记录后,这个自增字段将起始值恢复成1.如果你不想这样做的话,可以在DELETE语句中加上永真的WHERE,如WHERE 1或WHERE true。

DELETE FROM table1 WHERE 1;
上面的语句在执行时将扫描每一条记录。但它并不比较,因为这个WHERE条件永远为true。这样做虽然可以保持自增的最大值,但由于它是扫描了所有的记录,因此,它的执行成本要比没有WHERE子句的DELETE大得多。

DELETE和TRUNCATE TABLE的最大区别是DELETE可以通过WHERE语句选择要删除的记录。但执行得速度不快。而且还可以返回被删除的记录数。而TRUNCATE TABLE无法删除指定的记录,而且不能返回被删除的记录。但它执行得非常快。

和标准的SQL语句不同,MySQL DELETE语句支持ORDER BY和LIMIT子句,通过这两个子句,我们可以更好地控制要删除的记录。如当我们只想删除WHERE子句过滤出来的记录的一部分,可以使用LIMIB,如果要删除后几条记录,可以通过ORDER BY和LIMIT配合使用。假设我们要删除users表中name等于"Mike"的前6条记录。可以使用如下的DELETE语句:

DELETE FROM users WHERE name = 'Mike' LIMIT 6;
一般MySQL并不确定删除的这6条记录是哪6条,为了更保险,我们可以使用ORDER BY对记录进行排序。

DELETE FROM users WHERE name = 'Mike' ORDER BY id DESC LIMIT 6;

MySQL DELETE语句和TRUNCATE TABLE语句的区别相关推荐

  1. truncate table语句和delete table语句的区别

    truncate table 表名 ; delete from 表名; 都是用来删除表中所有的记录,前者删除数据后表的标识列会重新开始编号,它比delete语句使用的系统资源和事务日志资源更少,但是表 ...

  2. mysql checksum_mysql8 参考手册--CHECKSUM TABLE语句

    CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED] CHECKSUM TABLE报告 表内容的校验和.您可以使用此语句来验证备份,回 ...

  3. Mysql中 delect 、truncate、drop 的区别

    学习Mysql的时候,我们会学习到表中记录的删除.表的删除. 数据库的删除等操作,那么那些删除语句中有什么不同呢? delect   from   table_name; truncate table ...

  4. mysql事务rename_MySQL 的Rename Table语句

    mysql 命令重命名表RENAME TABLE 句法 RENAME TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2,...] ...

  5. quartz 任务调试 建表 sql 语句、create table语句

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; DROP TAB ...

  6. MySQL重命名表(RENAME TABLE语句)

    在本教程中,您将学习如何使用MySQL RENAME TABLE语句和ALTER TABLE语句来重命名表. MySQL RENAME TABLE语句简介 由于业务需求的变化,我们需要将当前表重命名为 ...

  7. MySQL创建数据表(CREATE TABLE语句)

    在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性.引用完整性和域 ...

  8. mysql create很多table,SQL CREATE TABLE 语句

    原标题:SQL CREATE TABLE 语句 SQL CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. 表由行和列组成,每个表都必须有个表名. SQL CREAT ...

  9. mysql对所有列的数据进行修改6_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (3)...

    添加和删除列 使用ADD向表中添加新列,使用DROP删除现有列.DROP col_name是对标准SQL的MySQL扩展. 若要在表行的特定位置添加列,请使用FIRST col_name 或者 AFT ...

  10. mysql删除emp表的语句_MySQL删除数据表(DORP TABLE语句)

    在MySQL数据库中,对于不再需要的数据表,我们可以将其从数据库中删除. 在删除表的同时,表的结构和表中所有的数据都会被删除,因此在删除数据表之前最好先备份,以免造成无法挽回的损失. 下面我们来了解一 ...

最新文章

  1. Android 快速选择联系人
  2. 【BZOJ】3456: 城市规划(多项式求ln)
  3. PAT (Basic Level) 1050 螺旋矩阵(模拟)
  4. 关于flex,好像有12个属性非常重要
  5. 自定义控件中使用Render的writer
  6. HTTP1.1中CHUNKED编码解析(转载)
  7. 结对项目——个人博客
  8. 『总结』CSS/CSS3常用样式与web移动端资源
  9. 什么是Reactive Streams in Java 译
  10. 企业微信员工离职后,还能看聊天记录吗?
  11. 订阅号与服务号的区别
  12. Invalid arguments问题
  13. Python学习笔记---day03 Python基础
  14. [渝粤教育] 西南科技大学 英语(A)1 在线考试复习资料
  15. 笔记本电脑换新硬盘重装系统经验
  16. quadro显卡好在哪
  17. python调用fmu
  18. 看黑科技如何助白娘子逃出雷锋塔!
  19. 如何将标签上的文本转换成黑底白字
  20. 基于结构光扫描的生物芯片快速彩色质量监管

热门文章

  1. 计算机矢量图的优点,矢量图与位图的区别,各自的优缺点……
  2. 复制iPhone端百度网盘下载好的视频到电脑(Mac / Windows)- iOS 12.4
  3. MPQ Storm库 源码分析 一
  4. cityengine导出fbx
  5. zircon ddk快速入门
  6. hualinux 学生党 建议:读书就是为了社会目标做准备
  7. 自定义IE地址栏图标
  8. word | word一键排版 | word极速排版 | 真正的一键排版
  9. Python打码API(学习使用)
  10. 揭开 gcc 编辑器的面貌