删除整个 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
如果要从 table 中删除所有行,最好使用 truncate
。以下是从 tables 中删除所有数据的三种方法:
truncate table t
delete from t
drop t
有什么区别? Drop
从数据库中完全删除 table。这包括所有触发器、约束、索引等。 table 不存在,所以你可以 re-create 如果你喜欢。
Delete
和 Truncate
删除 table 中的所有行,同时保留 table 的结构。这对于清空 table,同时保留触发器、索引、约束等非常方便。不同之处在于 delete
记录所有事务(假设底层 database/storage 引擎记录)。因此,它更慢。 Truncate
不进行日志记录,也不触发删除触发器,因此通常速度要快得多。
这是一个简化的解释。 documentation 很好地解释了 truncate
和 delete
之间的区别。
使用 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] ");
请耐心等待,我在 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
如果要从 table 中删除所有行,最好使用 truncate
。以下是从 tables 中删除所有数据的三种方法:
truncate table t
delete from t
drop t
有什么区别? Drop
从数据库中完全删除 table。这包括所有触发器、约束、索引等。 table 不存在,所以你可以 re-create 如果你喜欢。
Delete
和 Truncate
删除 table 中的所有行,同时保留 table 的结构。这对于清空 table,同时保留触发器、索引、约束等非常方便。不同之处在于 delete
记录所有事务(假设底层 database/storage 引擎记录)。因此,它更慢。 Truncate
不进行日志记录,也不触发删除触发器,因此通常速度要快得多。
这是一个简化的解释。 documentation 很好地解释了 truncate
和 delete
之间的区别。
使用 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] ");