Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 删除表的内容_Mysql_Sql_Postgresql - Fatal编程技术网

Mysql 删除表的内容

Mysql 删除表的内容,mysql,sql,postgresql,Mysql,Sql,Postgresql,如何删除表中的内容。。如果一个表中有100行,并且我想在不删除表的情况下删除所有行,我将如何使用WHERE子句: DELETE FROM tablename 如果有其他表通过外键引用引用它,则此操作可能会失败。也可以使用TRUNCATE (感谢PostgreSQL链接到rfusca) 给出的两个答案都是正确的 两者之间的主要区别 TRUNCATE TABLE tablename 及 TRUNCATE会将自动增量值重置回1。如果事情必须是唯一的,则可能会有所不同。您也可以使用Truncate

如何删除表中的内容。。如果一个表中有100行,并且我想在不删除表的情况下删除所有行,我将如何使用WHERE子句:

DELETE FROM tablename

如果有其他表通过外键引用引用它,则此操作可能会失败。

也可以使用TRUNCATE

(感谢PostgreSQL链接到rfusca)


给出的两个答案都是正确的

两者之间的主要区别

TRUNCATE TABLE tablename


TRUNCATE
会将
自动增量
值重置回1。如果事情必须是唯一的,则可能会有所不同。

您也可以使用Truncate,它比DELETE快,但Truncate在表锁或事务下不起作用

看看


有两个答案,但它们是不同的。TRUNCATE是一个DDL语句。它不会执行完整性检查或在删除时运行触发器。@Benoit并且它还会发出一个
commit
语句来结束当前的transaction@XaviLópez不在PostgreSQL中(问题被标记)。在PostgreSQL中,截断是事务性的。“对于表中的数据,截断是事务安全的:如果周围的事务没有提交,截断将安全回滚。”@rfusca感谢您提供此细节,我不知道:)问题也标记为PostgreSQL。截断在postgres中是事务性的。问题也被标记为PostgreSQL。Postgres没有那种疯狂的自动增量问题。PostgreSQL不会重置任何序列,除非您使用重新启动标识请求它。@Scorpion:在PostgreSQL中,对于其他表中的链接行(通过外键约束),您可以像这样级联删除
从tablename级联删除
。但是要非常小心!您可能希望也可能不希望删除相关行。请注意,您始终可以在事务中删除,以查看是否丢失了不希望删除的行。在pgsql中,除创建/删除数据库/表空间外,所有内容都是可事务的。
TRUNCATE TABLE tablename
DELETE FROM tablename