> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> TRUNCATE 语句文档

# TRUNCATE 语句

ClickHouse 中的 `TRUNCATE` 语句用于在保留表或数据库结构的同时，快速删除其中的所有数据。

<div id="truncate-table">
  ## TRUNCATE TABLE
</div>

```sql theme={null}
TRUNCATE TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster] [SYNC]
```

<br />

| 参数                   | 描述                                      |
| -------------------- | --------------------------------------- |
| `IF EXISTS`          | 如果表不存在，则不报错。如果省略，查询将返回错误。               |
| `db.name`            | 可选的数据库名称。                               |
| `ON CLUSTER cluster` | 在指定集群上执行该命令。                            |
| `SYNC`               | 使用复制表时，使截断操作在各副本间同步进行。如果省略，则默认异步执行截断操作。 |

你可以使用 [alter\_sync](/zh/reference/settings/session-settings#alter_sync) 设置来控制是否等待副本上的操作执行完成。

你可以使用 [replication\_wait\_for\_inactive\_replica\_timeout](/zh/reference/settings/session-settings#replication_wait_for_inactive_replica_timeout) 设置来指定等待非活动副本执行 `TRUNCATE` 查询的时长 (以秒为单位) 。

<Note>
  如果 `alter_sync` 设置为 `2`，且某些副本的非活动状态持续时间超过 `replication_wait_for_inactive_replica_timeout` 设置指定的时间，则会抛出 `UNFINISHED` 异常。
</Note>

以下表引擎**不支持** `TRUNCATE TABLE` 查询：

* [`View`](/zh/reference/engines/table-engines/special/view)
* [`File`](/zh/reference/engines/table-engines/special/file)
* [`URL`](/zh/reference/engines/table-engines/special/url)
* [`Buffer`](/zh/reference/engines/table-engines/special/buffer)
* [`Null`](/zh/reference/engines/table-engines/special/null)

<div id="truncate-all-tables">
  ## TRUNCATE 所有表
</div>

```sql theme={null}
TRUNCATE [ALL] TABLES FROM [IF EXISTS] db [LIKE | ILIKE | NOT LIKE '<pattern>'] [ON CLUSTER cluster]
```

<br />

| 参数                                      | 描述              |
| --------------------------------------- | --------------- |
| `ALL`                                   | 删除数据库中所有表的数据。   |
| `IF EXISTS`                             | 如果数据库不存在，则避免报错。 |
| `db`                                    | 数据库名称。          |
| `LIKE \| ILIKE \| NOT LIKE '<pattern>'` | 按模式过滤表。         |
| `ON CLUSTER cluster`                    | 在整个集群中执行该命令。    |

删除数据库中所有表的数据。

<div id="truncate-database">
  ## TRUNCATE DATABASE
</div>

```sql theme={null}
TRUNCATE DATABASE [IF EXISTS] db [ON CLUSTER cluster]
```

<br />

| 参数                   | 说明              |
| -------------------- | --------------- |
| `IF EXISTS`          | 如果数据库不存在，则不会报错。 |
| `db`                 | 数据库名称。          |
| `ON CLUSTER cluster` | 在指定集群中运行该命令。    |

移除数据库中的所有表，但保留数据库本身。省略子句 `IF EXISTS` 时，如果数据库不存在，查询会返回错误。

<Note>
  `TRUNCATE DATABASE` 不支持 `Replicated` 数据库。请改为直接 `DROP` 并 `CREATE` 该数据库。
</Note>
