删除整个 table

delete entire table

请耐心等待,我在 PHP 还很新,所以我还不是很好。我正在尝试制作一个按钮,它具有可以删除 MySQL 数据库中所有行的功能。

我的 numtable 中有两列:"n_id(primary key)" 和 "num"。他们都是INT。

现在我已经在 MySQL 数据库中填写了 3 个值:

n_id   num
1       4
2       9
3       47

index.html:

<form method = "post" action = "delete.php">
    <input name="delete" type="submit" id="delete" value="Delete">
</form>

delete.php:

$query = ("DELETE FROM numtable WHERE id="delete");

我看了很多关于堆栈溢出的问题,但我只能找到问题,必须删除单行,而不是整个 table。我的代码肯定是错误的,但我还需要什么?

我看到在 SQL 查询中也可以使用 TRUNCATE 而不是 DELETE。据我了解,如果数据库的数据很大,最好使用TRUNCATE,如果数据库不是很大,则删除。那是对的吗?

如果您需要从 table 中删除所有记录 - 那么只需省略 where 条件:

DELETE FROM numtable
如果你不想截断

DELETE FROM table就是你所需要的

DELETE 和 truncate 之间的区别很有趣。

  • DELETE : 逐行清除检查条件。

  • TRUNCATE :快速清除所有行。它在内部销毁并重新创建表。

看看这个总结,真的很明确:

如果有任何"whole-table-operations"保护,DELETE FROM table WHERE 1也可以做到这一点。

要阅读有关 DELETE 和 TRUNCATE 的更多信息,请访问以下链接:

Delete, Truncate or Drop to clean out a table in MySQL

http://hubpages.com/technology/differences-among-TRUNCATE-DROP-and-DELETE-commands-of-Oracle-MySQL-Microsoft-DB-or-any-other-database

如果要从 table 中删除所有行,最好使用 truncate。以下是从 tables 中删除所有数据的三种方法:

truncate table t
delete from t
drop t

有什么区别? Drop 从数据库中完全删除 table。这包括所有触发器、约束、索引等。 table 不存在,所以你可以 re-create 如果你喜欢。

DeleteTruncate 删除 table 中的所有行,同时保留 table 的结构。这对于清空 table,同时保留触发器、索引、约束等非常方便。不同之处在于 delete 记录所有事务(假设底层 database/storage 引擎记录)。因此,它更慢。 Truncate 不进行日志记录,也不触发删除触发器,因此通常速度要快得多。

这是一个简化的解释。 documentation 很好地解释了 truncatedelete 之间的区别。

使用 truncate 通常要快得多,因为它将 table 清零,但它会阻塞,因为它是 DDL。详细了解 TRUNCATE 和一些缺点(例如它无法撤消)

如果您希望继续写入并且您有足够的数据,那么您最好这样做:

create table table_name_new like table_name;
rename table_name to table_name_YYYYMMDD, table_name_new to table_name;

然后您可以备份数据,或者完全删除 table 而不会影响对原始 table 的写入。

SELECT、UPDATE 或 DELETE 语句中的 WHERE 标识要将操作应用于哪些行 - 因此您只需要一个标识所有行的 WHERE 子句。 (请注意,对于 MySQL,LIMIT 子句还限制了应用该操作的行数。)

通常通过完全省略 WHERE 子句对所有行应用操作 - 这相当于应用对所有行都为真的过滤条件。

但是,从 table 中删除每一行比明确要求数据库释放分配给 table 的存储 space 慢得多 - 因此大多数 SQL rDBMS 还实现了 TRUNCATE command.

删除并重新创建 table 也是一个有效的解决方案(IIRC 在 Oracle TRUNCATE 上速度更快)。

index.html:
<form method = "post" action = "delete.php">
    <input name="delete" type="submit" id="delete" value="Delete">
</form>

For delete all record

delete.php: $query = ("DELETE FROM numtable");

For delete selected record

 $query = ("DELETE FROM numtable [Where Clause] ");