# PostgreSQL DELETE : supprimer le contenu d’une table

PostgreSQL `DELETE` permet de supprimer le contenu d’une table. La commande peut être utilisée avec des conditions pour cibler uniquement certaines lignes à supprimer. La suppression étant irréversible, cette commande doit être utilisée avec précaution.

## Qu’est-ce que PostgreSQL `DELETE` ?

La commande `DELETE` est utilisée dans PostgreSQL pour **supprimer des entrées d’une table**. La condition `WHERE` vous permet de sélectionner des lignes spécifiques dont le contenu doit être supprimé. Si la clause `WHERE` n’est pas précisée, toutes les lignes de la table seront **supprimées de manière irréversible**. C’est pourquoi vous ne devez utiliser cette commande qu’avec la plus grande prudence.

## PostgreSQL `DELETE` : syntaxe et fonctionnement

La syntaxe de PostgreSQL `DELETE` a la structure de base suivante :

```postgresql
DELETE FROM nom_de_la_table
WHERE Condition;
```

`DELETE FROM` initie la suppression dans la table spécifiée. La condition `WHERE` vous permet de spécifier dans quelles lignes le contenu doit être supprimé. Pour appliquer plusieurs critères de suppression, utilisez les opérateurs `AND` ou `OR`.

Note Avant de supprimer des données, vous devriez vous assurer que vous avez bien une **sauvegarde récente** de la base de données ou que vous exécutez le processus de suppression dans une transaction. De cette façon, vous éviterez de perdre des données importantes si la commande est mal exécutée par inadvertance.

## Supprimer tout le contenu d’une table

Le fonctionnement de PostgreSQL `DELETE` est plus facile à expliquer avec un exemple pratique. Pour cela, nous utilisons la commande [`CREATE TABLE`](https://www.ionos.com/fr-be/digitalguide/serveur/configuration/postgresql-create-table/) pour créer une nouvelle table PostgreSQL appelée « liste\_des\_clients ». Nous utilisons ensuite [`INSERT INTO`](https://www.ionos.com/fr-be/digitalguide/serveur/configuration/postgresql-insert-into/) pour la remplir avec différents contenus. La table dispose de trois colonnes nommées « ID », « Nom » et « Ville » et reçoit initialement quatre entrées. Voici à quoi elle ressemble :

```postgresql
|ID|Nom|Ville|
|-|-|-|
|1|Berland|Paris|
|2|Wirth|Marseille|
|3|Madiot|Lille|
|4|Bourrat|Dijon|
```

Pour vider complètement une table tout en conservant sa structure, utilisez `DELETE` sans condition `WHERE`. Dans notre exemple, la commande ressemble à ceci :

```postgresql
DELETE FROM liste_des_clients;
```

## Supprimer une ligne avec PostgreSQL `DELETE`

Le plus souvent, vous voudrez **supprimer une ligne spécifique** plutôt que l’ensemble du contenu de la table. Cela se fait aussi avec PostgreSQL `DELETE`. Pour cela, nous utilisons la commande avec une clause `WHERE`. Dans notre exemple, nous voulons supprimer le client « Wirth » avec l’ID « 2 ». Le code approprié est le suivant :

```postgresql
DELETE FROM liste_des_clients
WHERE ID = 2;
```

## Spécifier des lignes avec plusieurs conditions

Il peut y avoir des doublons et donc des entrées qui ne sont pas uniques, en particulier dans les longues tables. Si vous voulez être sûr de ne supprimer que la ligne souhaitée, vous pouvez utiliser PostgreSQL `DELETE` avec **plusieurs conditions**. Dans notre exemple, nous avons deux clients nommés « Madiot » et nous voulons seulement supprimer la deuxième entrée. Nous allons donc combiner deux conditions. Le code pour cela est :

```postgresql
DELETE FROM liste_des_clients 
WHERE Nom = 'Madiot'
AND ID >= 3;
```

Ainsi, seules les lignes où le nom est « Madiot » et l’ID est supérieur ou égal à 3 seront supprimées. Comme la première entrée avec le nom a un numéro d’ID inférieur à « 3 », cette entrée reste dans la base de données même après la commande de suppression.


This is a markdown version of: [https://www.ionos.com/fr-be/digitalguide/serveur/configuration/postgresql-delete/](https://www.ionos.com/fr-be/digitalguide/serveur/configuration/postgresql-delete/) for AI/LLM consumption.