# 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 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). 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.com/fr-be/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.com/fr-be/digitalguide/serveur/configuration/postgresql-alter-table/](https://www.ionos.com/fr-be/digitalguide/serveur/configuration/postgresql-alter-table/) for AI/LLM consumption.