# PostgreSQL ALTER TABLE : ajouter ou supprimer des colonnes

La commande `ALTER TABLE` permet de personnaliser les tables dans PostgreSQL. Cette commande s’utilise avec une action, par exemple pour ajouter ou modifier des colonnes.

## Qu’est-ce que la commande PostgreSQL `ALTER TABLE` ?

La commande `ALTER TABLE` est utilisée dans [PostgreSQL](https://www.ionos.fr/digitalguide/serveur/know-how/postgresql/) pour modifier des **tables existantes**. Elle peut être utilisée pour ajouter ou supprimer une colonne, ou pour la modifier selon vos besoins. De plus, PostgreSQL `ALTER TABLE` est utilisé pour définir ou supprimer des restrictions sur une table dans le [système de gestion de base de données (SGBD)](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/systeme-de-gestion-de-base-de-donnees-sgbd/). Pour obtenir le résultat souhaité, vous devez spécifier la commande **avec une action**.

## Syntaxe de `ALTER TABLE`

Pour une compréhension de base, il est utile de jeter un coup d’œil à la syntaxe de base de `ALTER TABLE`. Elle se présente comme suit :

```postgresql
ALTER TABLE nom_de_la_table action;
```

La commande proprement dite est donc suivie du nom de la table à laquelle vous souhaitez apporter des modifications. Ensuite, vous spécifiez la commande PostgreSQL `ALTER TABLE` avec l’action souhaitée.

Conseil Pour créer une nouvelle table, utilisez la commande [CREATE TABLE](https://www.ionos.fr/digitalguide/serveur/configuration/postgresql-create-table/) dans PostgreSQL.

## Exemples d’utilisation de PostgreSQL `ALTER TABLE`

Dans les paragraphes suivants, nous allons illustrer le fonctionnement de `ALTER TABLE` par des exemples pratiques. Nous allons créer un exemple de table nommée « Clients », qui contient initialement trois colonnes et trois lignes. Elle se présente comme suit :

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nom</th>
      <th>Ville</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Berland</td>
      <td>Paris</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Wirth</td>
      <td>Marseille</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Madiot</td>
      <td>Lille</td>
    </tr>
  </tbody>
</table>

On peut maintenant la personnaliser de différentes manières avec `ALTER TABLE` dans PostgreSQL.

### Ajouter une colonne avec PostgreSQL `ADD COLUMN`

Pour ajouter une colonne supplémentaire, utilisez `ALTER TABLE` en combinaison avec PostgreSQL `ADD COLUMN`. Cette action a deux paramètres : le nom de la colonne et le type de données de la colonne. La syntaxe est la suivante :

```postgresql
ALTER TABLE nom_de_la_table ADD COLUMN nom_de_la_colonne type de données;
```

Si nous voulons ajouter une colonne à notre table « Clients » pour les adresses, nous utilisons PostgreSQL `ADD COLUMN` comme suit :

```postgresql
ALTER TABLE Clients ADD COLUMN Adresse VARCHAR(255);
```

La nouvelle table étendue se présente donc comme suit :

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nom</th>
      <th>Ville</th>
      <th>Adresse</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Berland</td>
      <td>Paris</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Wirth</td>
      <td>Marseille</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Madiot</td>
      <td>Lille</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

### Supprimer des colonnes avec `DROP COLUMN`

De la même manière, nous pouvons supprimer une colonne d’une table existante. Pour cela, nous utilisons PostgreSQL `ALTER TABLE` en combinaison avec l’action `DROP COLUMN`. Le seul paramètre de cette action est le nom de la colonne. Voici la syntaxe :

```postgresql
ALTER TABLE nom_de_la_table DROP COLUMN nom_de_la_colonne;
```

Pour supprimer la colonne « Ville », nous utilisons ce code :

```postgresql
ALTER TABLE Clients DROP COLUMN Ville;
```

Le tableau ne comporte donc plus que trois colonnes :

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nom</th>
      <th>Adresse</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Berlin</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Wirth</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Madiot</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

### Renommer des colonnes avec `RENAME COLUMN`

Nous pouvons également renommer une colonne existante, ce qui peut être une bonne alternative à la suppression ou à l’ajout de colonnes. La syntaxe de `RENAME COLUMN` dans `ALTER TABLE` est la suivante :

```postgresql
ALTER TABLE nom_de_la_table RENAME COLUMN nom_de_la_colonne TO nouveau_nom;
```

Ici, nous transformons la colonne « Nom » en « Nom du client » :

```postgresql
ALTER TABLE Clients RENAME COLUMN Nom TO Nom_du_client;
```

Dans notre table, seul le nom de la colonne change, comme nous le souhaitions :

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nom du client</th>
      <th>Adresse</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Berland</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Wirth</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Madiot</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

### Autres actions dans PostgreSQL pour `ALTER TABLE`

D’autres actions utiles avec `ALTER TABLE` incluent la modification du type de données, la gestion des contraintes et l’ajout de valeurs par défaut. Voici les principales commandes :

Pour modifier le **type de données** d’une colonne :

```postgresql
ALTER TABLE nom_de_la_table ALTER COLUMN nom_de_la_colonne SET DATA TYPE type_de_données;
```

Pour spécifier qu’une colonne doit recevoir une **valeur** :

```postgresql
ALTER TABLE nom_de_la_table ALTER COLUMN nom_de_la_colonne SET NOT NULL;
```

Pour établir des restrictions telles que `UNIQUE` ou `PRIMARY KEY` pour une colonne, utilisez PostgreSQL `ALTER TABLE` en combinaison avec l’action `ADD CONSTRAINT` :

```postgresql
ALTER TABLE nom_de_la_table ADD CONSTRAINT nom_de_la_contrainte UNIQUE (nom_de_la_colonne);
```


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