> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentation de l’instruction REPLACE TABLE

# REPLACE TABLE

<div id="overview">
  ## Vue d’ensemble
</div>

L’instruction `REPLACE` permet de mettre à jour une table de manière [atomique](/docs/fr/concepts/core-concepts/glossary#atomicity).

<Note>
  Cette instruction est prise en charge par les moteurs de base de données [`Atomic`](/docs/fr/reference/engines/database-engines/atomic) et [`Replicated`](/docs/fr/reference/engines/database-engines/replicated),
  qui sont respectivement les moteurs de base de données par défaut de ClickHouse et de ClickHouse Cloud.
</Note>

Habituellement, si vous devez supprimer certaines données d’une table,
vous pouvez créer une nouvelle table et la remplir à l’aide d’une instruction `SELECT` qui ne récupère pas les données indésirables,
puis supprimer l’ancienne table et renommer la nouvelle.
Cette approche est illustrée dans l’exemple ci-dessous :

```sql theme={null}
CREATE TABLE myNewTable AS myOldTable;

INSERT INTO myNewTable
SELECT * FROM myOldTable 
WHERE CounterID <12345;

DROP TABLE myOldTable;

RENAME TABLE myNewTable TO myOldTable;
```

Plutôt que d’adopter l’approche ci-dessus, vous pouvez également utiliser `REPLACE` (si vous utilisez les moteurs de base de données par défaut) pour obtenir le même résultat :

```sql theme={null}
REPLACE TABLE myOldTable
ENGINE = MergeTree()
ORDER BY CounterID 
AS
SELECT * FROM myOldTable
WHERE CounterID <12345;
```

<div id="syntax">
  ## Syntaxe
</div>

```sql theme={null}
{CREATE [OR REPLACE] | REPLACE} TABLE [db.]table_name
```

<Note>
  Toutes les formes de syntaxe de l’instruction [`CREATE`](/docs/fr/reference/statements/create/table) s’appliquent également à cette instruction. L’exécution de `REPLACE` sur une table inexistante provoque une erreur.
</Note>

<div id="examples">
  ## Exemples
</div>

<Tabs>
  <Tab title="Local">
    Prenons la table suivante :

    ```sql theme={null}
    CREATE DATABASE base 
    ENGINE = Atomic;

    CREATE OR REPLACE TABLE base.t1
    (
        n UInt64,
        s String
    )
    ENGINE = MergeTree
    ORDER BY n;

    INSERT INTO base.t1 VALUES (1, 'test');

    SELECT * FROM base.t1;

    ┌─n─┬─s────┐
    │ 1 │ test │
    └───┴──────┘
    ```

    Nous pouvons utiliser l’instruction `REPLACE` pour supprimer toutes les données :

    ```sql theme={null}
    CREATE OR REPLACE TABLE base.t1 
    (
        n UInt64,
        s Nullable(String)
    )
    ENGINE = MergeTree
    ORDER BY n;

    INSERT INTO base.t1 VALUES (2, null);

    SELECT * FROM base.t1;

    ┌─n─┬─s──┐
    │ 2 │ \N │
    └───┴────┘
    ```

    Nous pouvons également utiliser l’instruction `REPLACE` pour modifier la structure de la table :

    ```sql theme={null}
    REPLACE TABLE base.t1 (n UInt64) 
    ENGINE = MergeTree 
    ORDER BY n;

    INSERT INTO base.t1 VALUES (3);

    SELECT * FROM base.t1;

    ┌─n─┐
    │ 3 │
    └───┘
    ```
  </Tab>

  <Tab title="Cloud">
    Prenons la table suivante dans ClickHouse Cloud :

    ```sql theme={null}
    CREATE DATABASE base;

    CREATE OR REPLACE TABLE base.t1 
    (
        n UInt64,
        s String
    )
    ENGINE = MergeTree
    ORDER BY n;

    INSERT INTO base.t1 VALUES (1, 'test');

    SELECT * FROM base.t1;

    1    test
    ```

    Nous pouvons utiliser l’instruction `REPLACE` pour supprimer toutes les données :

    ```sql theme={null}
    CREATE OR REPLACE TABLE base.t1 
    (
        n UInt64, 
        s Nullable(String)
    )
    ENGINE = MergeTree
    ORDER BY n;

    INSERT INTO base.t1 VALUES (2, null);

    SELECT * FROM base.t1;

    2    
    ```

    Nous pouvons également utiliser l’instruction `REPLACE` pour modifier la structure de la table :

    ```sql theme={null}
    REPLACE TABLE base.t1 (n UInt64) 
    ENGINE = MergeTree 
    ORDER BY n;

    INSERT INTO base.t1 VALUES (3);

    SELECT * FROM base.t1;

    3
    ```
  </Tab>
</Tabs>
