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

> Documentation for TRUNCATE Statements

# TRUNCATE Statements

The `TRUNCATE` statement in ClickHouse is used to quickly remove all data from a table or database while preserving their structure.

<h2 id="truncate-table">
  TRUNCATE TABLE
</h2>

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

<br />

| Parameter            | Description                                                                                                                              |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `IF EXISTS`          | Prevents an error if the table does not exist. If omitted, the query returns an error.                                                   |
| `db.name`            | Optional database name.                                                                                                                  |
| `ON CLUSTER cluster` | Runs the command across a specified cluster.                                                                                             |
| `SYNC`               | Makes the truncation synchronous across replicas when using replicated tables. If omitted, truncation happens asynchronously by default. |

You can use the [alter\_sync](/reference/settings/session-settings#alter_sync) setting to set up waiting for actions to be executed on replicas.

You can specify how long (in seconds) to wait for inactive replicas to execute `TRUNCATE` queries with the [replication\_wait\_for\_inactive\_replica\_timeout](/reference/settings/session-settings#replication_wait_for_inactive_replica_timeout) setting.

<Note>
  If the `alter_sync` is set to `2` and some replicas are not active for more than the time, specified by the `replication_wait_for_inactive_replica_timeout` setting, then an exception `UNFINISHED` is thrown.
</Note>

The `TRUNCATE TABLE` query is **not supported** for the following table engines:

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

<h2 id="truncate-all-tables">
  TRUNCATE ALL TABLES
</h2>

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

<br />

| Parameter                               | Description                                       |
| --------------------------------------- | ------------------------------------------------- |
| `ALL`                                   | Removes data from all tables in the database.     |
| `IF EXISTS`                             | Prevents an error if the database does not exist. |
| `db`                                    | The database name.                                |
| `LIKE \| ILIKE \| NOT LIKE '<pattern>'` | Filters tables by pattern.                        |
| `ON CLUSTER cluster`                    | Runs the command across a cluster.                |

Removes all data from all tables in a database.

<h2 id="truncate-database">
  TRUNCATE DATABASE
</h2>

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

<br />

| Parameter            | Description                                       |
| -------------------- | ------------------------------------------------- |
| `IF EXISTS`          | Prevents an error if the database does not exist. |
| `db`                 | The database name.                                |
| `ON CLUSTER cluster` | Runs the command across a specified cluster.      |

Removes all tables from a database but keeps the database itself. When the clause `IF EXISTS` is omitted, the query returns an error if the database does not exist.

<Note>
  `TRUNCATE DATABASE` is not supported for `Replicated` databases. Instead, just `DROP` and `CREATE` the database.
</Note>
