MYSQL清空表和截断表问题

目录
  • MYSQL清空表和截断表
    • 清空表:delete from users;
    • 截断表:truncate table users;
  • MYSQL清空表数据的注意事项
    • 两者比较
  • 总结

MYSQL清空表和截断表

清空表和截断表

清空表:delete from users;

清空表只是清空表中的逻辑数据,但是物理数据不清除,如主键值、索引等不被清除,还是原来的值。

截断表:truncate table users;

截断表可以用于删除表中 的所有数据。截断表命令还会回收所有索引的分配页。

截断表的执行速度与不带where子句的delete(删除)命令相同,甚至比它还要快。

delete(删除)一次删除一行数据,并且将每一行被删除的数据都作为一个事务记录日志;而truncate (截断)表则回收整个数据页,只记录很少的日志项。delete(删除)和truncate(截断)都会回收被数据占用的空间,以及相关的索引。只有表的 拥有者可以截断表。

另外,truncate表之后,如果有自动主键的话,会恢复成默认值。

MYSQL清空表数据的注意事项

清空表数据 可用的两种操作:

delete from 表名;

truncate table 表名;

两者比较

不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。

效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。

delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。

我在用delete from 进行删除时发现报错了,说时safe updae 模式什么的,后来查看其他小伙伴的博客,发现了解决办法:

只需执行  SET SQL_SAFE_UPDATES = 0; 即可。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • mysql表的清空、删除和修改操作详解

    一.清除mysql表中数据 delete from 表名; truncate table 表名; 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容. 效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据. delete的效果有点像将mysql表中所有记录一条一条删除到删完, 而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表.

  • mysql清空表数据的两种方式和区别解析

    在MySQL中删除数据有两种方式: truncate(截短)属于粗暴型的清空 delete属于精细化的删除 删除操作 如果你需要清空表里的所有数据,下面两种均可: delete from tablename; truncate table tablename; 而如果你只是删除一部分数据,就只能使用delete: delete from tablename where case1 and case2; 区别 在精细化的删除部分数据时,只能使用delete. 而清空所有表数据时,两者均可,此时这两

  • MySQL清空数据表的方法实例与分析

    MySQL数据库中,如果我们想清空数据表(删除数据表中所有内容)的话,可以通过下面两个语句来实现: truncate table table_n; delete from table_n; 实例 我们先通过实例看下通过这两种方式清空数据库的过程和结果 #delete演示 mysql> create table testforde( -> number int not null auto_increment, -> name varchar(20) not null, -> prim

  • MYSQL清空表和截断表问题

    目录 MYSQL清空表和截断表 清空表:delete from users: 截断表:truncate table users: MYSQL清空表数据的注意事项 两者比较 总结 MYSQL清空表和截断表 清空表和截断表 清空表:delete from users: 清空表只是清空表中的逻辑数据,但是物理数据不清除,如主键值.索引等不被清除,还是原来的值. 截断表:truncate table users: 截断表可以用于删除表中 的所有数据.截断表命令还会回收所有索引的分配页. 截断表的执行速度

  • MySQL删除表数据与MySQL清空表命令的3种方法浅析

    目录 一.MySQL清空表数据命令:truncate 二.MySQL删除表命令:drop 三.MySQL清空数据表内容的语法:delete 补充:MySQL删除表操作delete.truncate.drop的区别 总结 一.MySQL清空表数据命令:truncate SQL语法: truncate table 表名 注意: 不能与where一起使用. truncate删除数据后是不可以rollback的. truncate删除数据后会重置Identity(标识列.自增字段),相当于自增列会被置为

  • oracle中截断表的使用介绍

    在Oracle中如果删除了表中的某一条数据,还可以通过回滚操作(rollback)进行回滚,假如想清空一张 表的数据,但是又不想使其能进行回滚操作,就可以立刻释放资源,这时就需要使用截断表了.它的主要功能就是彻底删除数据,使其不能进行回滚.这里我打个比方大家就立刻能明了它的作用.大家众所周知,当我们在自己的PC(personcomputer)上删除某一个文件,它并没有彻底删除而是进入了回收站,你要在回收站中再将其删除才算彻底清除.截断表就相当于直接将数据从pc上删除,而不会放入回收站. 截断表格

  • MySQL 如何限制一张表的记录数

    目录 一.触发器解决方案 二.分区表解决方案 三.通用表空间解决方案 关于MySQL 如何限制一张表的记录数,这没有一个简化的答案,比如执行一条命令或者说简单设置一个参数都不能完美解决.接下来我给出一些可选解决方案. 对数据库来讲,一般问题的解决方案无非有两种,一种是在应用端:另外一种是在数据库端. 首先是在数据库端(假设表硬性限制为1W条记录): 一.触发器解决方案 触发器的思路很简单,每次插入新记录前,检查表记录数是否到达限定数量,数量未到,继续插入:数量达到,先插入一条新记录,再删除最老的

  • MySQL中基本的多表连接查询教程

    一.多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: 由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢.一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN 2.   内连接INNER JOIN 在MySQL中把I SELECT * FROM table1 CROSS JOIN tabl

  • MySql创建带解释的表及给表和字段加注释的实现代码

     1 创建带解释的表 CREATE TABLE groups( gid INT PRIMARY KEY AUTO_INCREMENT COMMENT '设置主键自增', gname VARCHAR(200) COMMENT '列注释' ) COMMENT='表注释'; 2 修改现有列,加上解释 alter table test_data modify column test_desc int comment 'xxxx'; 3  修改现有表,加上解释 ALTER TABLE test_data

  • MySQL Cluster如何创建磁盘表方法解读

    一.概念 MySQL Cluster采用一系列的Disk Data objects来实现磁盘表. Tablespaces:作用是作为其他Disk Data objects的容器. Undo log files:存储事务进行回滚需要的信息,一个或者多个undo log files组成一个log files group,最后,该log file group关联到一个tablespaces. Data files:作用是存储表中的数据,data file直接关联到tablespaces. 在每一个数据

  • MySQL实现快速删除所有表而不删除数据库的方法

    本文实例讲述了MySQL实现快速删除所有表而不删除数据库的方法.分享给大家供大家参考,具体如下: 如果直接使用phpmyadmin操作的话肯定非常简单,勾选数据表->点击删除->点击确定,操作完毕! 这里介绍一下快速删除数据表的SQL命令操作方法. 删除表的命令: drop table 表名; 如果有200张表,执行200次,想想就不想动手了. 下面提供一个使用information_schema库的方案: 复制代码 代码如下: SELECT CONCAT('drop table ',tabl

随机推荐