163

我使用 wampserver 2.2。当我想删除 phpMyAdmin 中表的所有记录(全选)时,它只删除一条记录而不是所有记录。为什么它不删除所有记录?

4

9 回答 9

209

您有 2 个选项deletetruncate

  1. delete from mytable

    这样会删除表的所有内容,不会重置自增id,这个过程很慢。如果要删除特定记录,请在末尾附加 where 子句。

  2. truncate myTable

    这将重置表,即所有自动增量字段都将被重置。它是一个 DDL,而且速度非常快。您不能通过 删除任何特定记录truncate

于 2013-08-16T11:12:30.093 回答
158

转到 Sql 选项卡运行以下查询之一:

delete from tableName;

Delete:将从您的表中删除所有行。下一个插入将采用下一个自动增量 ID。

或者

truncate tableName;

Truncate:也会从你的表中删除行,但它会从新行开始 1。

带有示例的详细博客:http: //sforsuresh.in/phpmyadmin-deleting-rows-mysql-table/

于 2013-08-16T11:13:04.127 回答
143

Go to your db -> structure and do empty in required table. See here:

this screenshot

于 2013-08-16T11:15:08.193 回答
38

使用此查询:

DELETE FROM tableName;

注意:要删除某些特定记录,您也可以在查询的 where 子句中给出条件。

或者您也可以使用此查询:

truncate tableName;

还要记住,您不应该与其他表有任何关系。如果表中有任何外键约束,那么这些记录将不会被删除并会出错。

于 2013-08-16T11:12:14.867 回答
25

您可以使用此命令删除所有行。但请记住,一旦运行 truncate 命令,您将无法回滚它。

  truncate tableName;
于 2016-08-05T13:08:18.637 回答
15

'Truncate tableName' 将在定义了键约束的表上失败。它也不会重新索引表AUTO_INCREMENT值。相反,使用以下 sql 语法删除所有表条目并将索引重置回 1:

DELETE FROM tableName;
ALTER TABLE tableName AUTO_INCREMENT = 1
于 2016-08-18T18:59:51.697 回答
4

一个有趣的事实。

我确信 TRUNCATE 总是会表现得更好,但在我的情况下,对于一个大约有 30 个带有外键的表的数据库,只填充了几行,TRUNCATE 所有表大约需要 12 秒,而不是只有几百毫秒删除行。设置自动增量总共增加了大约一秒钟,但仍然要好得多。

所以我建议两者都试一下,看看哪个更适合你的情况。

于 2014-02-17T12:19:13.430 回答
2

编写查询: truncate 'Your_table_name';

于 2017-03-03T10:59:11.153 回答
1
  • 访问 phpmyadmin
  • 选择您的数据库并单击结构
  • 在您的表格前面,您可以看到Empty,单击它以清除所选表格中的所有条目。

演示数据库结构

或者您可以使用 sql 查询执行相同操作:

单击结构旁边的SQL

TRUNCATE tablename; //offers better performance, but used only when all entries need to be cleared
or
DELETE FROM tablename; //returns the number of rows deleted

有关详细文档,请参阅DELETETRUNCATE

于 2020-08-11T12:04:41.893 回答