在Mysql 中删除数据以及数据表十分的容易,然而须要特地小心,因为一旦删除所有数据都会隐没。

删除数据

删除表内数据,应用delete关键字。

删除指定条件的数据

删除用户表内id 为1 的用户:

delete from User where id = 1;

删除表内所有数据

删除表中的全副数据,表构造不变。

对于 MyISAM 会立即开释磁盘空间,InnoDB 不会开释磁盘空间。

delete from User;

开释磁盘空间

optimize table User; 

删除数据表

删除数据表分为两种形式:

  1. 删除数据表内数据以及表构造
  2. 只删除表内数据,保留表构造

drop

应用drop关键词会删除整张表,啥都没有了。

drop table User;

truncate

truncate 关键字则只删除表内数据,会保留表构造。

truncate table User;
思考题:如何批量删除前缀雷同的表?

想要实现 drop table like 'wp_%',没有间接可用的命令,不过能够通过Mysql 的语法来拼接。

-- 删除”wp_”结尾的表:SELECT CONCAT( 'drop table ', table_name, ';' ) AS statementFROM information_schema.tablesWHERE table_schema = 'database_name' AND table_name LIKE 'wp_%';

其中database_name换成数据库的名称,wp_换成须要批量删除的表前缀。

留神只有drop命令能力这样用:
drop table if exists tablename`;
truncate只能这样应用:
truncate table `tp_trade`.`setids`;

总结

  • 当你不再须要该表时, 用drop;
  • 当你仍要保留该表,但要删除所有记录时, 用truncate;
  • 当你要删除局部记录时, 用delete