MySQL删除表数据的方法

 更新时间:2017年10月10日 08:59:34   作者:孙华强  
这篇文章主要介绍了MySQL删除表数据的方法,小编觉得还是挺不错的,这里给大家分享一下,需要的朋友可以参考。

在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是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删除后不记录mysql日志,不可以恢复数据。delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。而且还可以返回被删除的记录数。而TRUNCATE TABLE无法删除指定的记录,而且不能返回被删除的记录。但它执行得非常快。

      和标准的SQL语句不同,DELETE支持ORDER BY和LIMIT子句,通过这两个子句,我们可以更好地控制要删除的记录。如当我们只想删除WHERE子句过滤出来的记录的一部分,可以使用LIMIT,如果要删除后几条记录,可以通过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删除表数据的方法的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅:MySQL prepare原理详解几个比较重要的MySQL变量ORACLE SQL语句优化技术要点解析等,有什么问题可以随时留言,小编会及时回复大家的。

相关文章

  • 关于MySQL性能调优你必须了解的15个重要变量(小结)

    关于MySQL性能调优你必须了解的15个重要变量(小结)

    MYSQL 应该是比较流行的 WEB 后端数据库。虽然 NOSQL 最近越来越多的被提到,但是相信大部分架构师还是会选择 MYSQL 来做数据存储。本文作者总结梳理MySQL性能调优的15个重要变量,感兴趣的可以了解一下
    2019-07-07
  • mysql中engine=innodb和engine=myisam的区别介绍

    mysql中engine=innodb和engine=myisam的区别介绍

    MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持,本文为大家讲解下mysql中engine=innodb和engine=myisam的区别,不懂的朋友可以学习下,希望对大家有所帮助
    2013-07-07
  • MySQL root密码忘记后更优雅的解决方法

    MySQL root密码忘记后更优雅的解决方法

    这篇文章主要给大家介绍了关于MySQL root密码忘记后更优雅的解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • Mysql深入探索之Explain执行计划详析

    Mysql深入探索之Explain执行计划详析

    这篇文章主要给大家介绍了关于Mysql深入探索之Explain执行计划的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • CentOS6.8使用cmake安装MySQL5.7.18

    CentOS6.8使用cmake安装MySQL5.7.18

    这篇文章主要为大家详细介绍了CentOS6.8使用cmake安装MySQL5.7.18的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • MySQL数据库约束详解

    MySQL数据库约束详解

    mysql常见约束有:1、非空约束“not null”;2、唯一性约束“unique”;3、主键约束“primary key”;4、外键约束“foreign key”;5、默认值约束“Default”等等。
    2022-10-10
  • 分享MySQL常用 内核 Debug 几种常见方法

    分享MySQL常用 内核 Debug 几种常见方法

    这篇文章主要给大家分享的是MySQL常用的内核Debug技巧,掌握 MySQL 内核源码的阅读和调试能力,不仅是数据库研发人员的日常,也是 DBA 进阶的必经之路,下面一起进入文章了解更多相关内容吧
    2022-03-03
  • MySQL编程中的6个实用技巧

    MySQL编程中的6个实用技巧

    这篇文章主要介绍了MySQL编程中的6个实用技巧,本文讲解了每一行命令都是用分号(;)作为结束、采用关联数组存取查询结果、TEXT、DATE、和SET数据类型等内容,需要的朋友可以参考下
    2015-02-02
  • MySQL之存在则更新,否则就插入数据

    MySQL之存在则更新,否则就插入数据

    这篇文章主要介绍了MySQL之存在则更新,否则就插入数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写

    Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写

    数据库的备份,对于生产环境来说尤为重要,数据库的备份分为物理备份和逻辑备份。我们将使用mysqldump命令进行数据备份。使用自动任务进行每日备份,下边我们将使用mysqldump命令进行数据备份,感兴趣的朋友一起看看吧
    2021-07-07

最新评论