# SQL CREATE TABLE : comment créer une nouvelle table ?

SQL `CREATE TABLE` est utilisé pour créer une nouvelle table au sein d’une base de données. Lors de la création, des paramètres importants sont déjà définis et il est possible d’utiliser une table existante comme base.

## Qu’est-ce que SQL `CREATE TABLE` ?

Après avoir créé une [base de données SQL](https://www.ionos.fr/digitalguide/serveur/configuration/sql-drop-database/) à l’aide du [Structured Query Language](https://www.ionos.fr/digitalguide/serveur/configuration/introduction-a-sql-a-laide-dexemples/) (SQL), vous pouvez créer une nouvelle table. Cette dernière sert à stocker vos enregistrements et indique la structure dans laquelle ces données doivent être préparées. Les tableaux se composent d’une part de **champs ou colonnes qui peuvent contenir certains types de données** et d’autre part de **lignes dans lesquelles ces données sont listées**. Pour créer une nouvelle table, il suffit d’utiliser l’instruction SQL `CREATE TABLE`. Celle-ci vous permet non seulement de créer la nouvelle table, mais aussi de déterminer comment elle doit être structurée. Ensuite, vous la remplissez avec les données correspondantes.

## Syntaxe et fonctionnement

En jetant un coup d’œil à la syntaxe de SQL `CREATE TABLE`, vous pouvez déjà constater que les types de données et les désignations sont obligatoires dès le début pour la création correcte d’une nouvelle table. La syntaxe se présente de cette manière :

```sql
CREATE TABLE nom_de_la_table (
    colonne1 type_de_données,
    colonne2 type_de_données,
    colonne3 type_de_données,
    ...
);
```

Avec la [commande SQL](https://www.ionos.fr/digitalguide/serveur/configuration/commandes-sql/) `CREATE TABLE`, vous créez une nouvelle table en spécifiant son nom sur la première ligne. Cette table est ensuite spécifiée à l’intérieur des parenthèses. Vous choisissez ainsi une désignation pour `colonne1`, `colonne2` etc. et **vous indiquez les types de données qui peuvent être déposés dans cette colonne**. Les types de données les plus utilisés sont par exemple `VARCHAR` (une chaîne de caractères pouvant contenir des lettres, des chiffres ou des caractères spéciaux), `BOOLEAN` (pour les valeurs booléennes true ou false), `INT` (pour les valeurs numériques) ou `DATE` (pour les données de date).

## Exemple d’une nouvelle table

Pour illustrer le fonctionnement de SQL `CREATE TABLE`, rien ne vaut un exemple concret. Pour cela, nous créons un répertoire d’employés qui contient un identifiant d’employé, le nom de famille, le prénom, l’adresse, la ville et l’âge. Nous avons donc besoin de **six colonnes** au total, qui peuvent stocker différents types de données. Voici à quoi ressemble le code approprié :

```sql
CREATE TABLE Employés (
Identifiant INT NOT NULL,
Nom de famille VARCHAR(50),
Prénom VARCHAR(50),
Adresse VARCHAR(50),
Ville VARCHAR(50),
Âge INT NOT NULL
);
```

Pour l’identifiant et l’âge, nous choisissons le type de données `INT`, qui contient des chiffres. L’ajout `NOT NULL` indique que ces champs ne doivent pas être laissés vides. Les autres colonnes `Nom de famille`, `Prénom`, `Adresse` et `Ville` peuvent contenir des lettres, des chiffres et des caractères spéciaux.

## Combinaison avec la commande `IF NOT EXISTS`

Chaque table doit être **unique** dans une base de données pour que le système puisse y accéder. Ainsi, si vous essayez de créer une nouvelle table avec SQL `CREATE TABLE` et que vous choisissez un nom qui existe déjà, vous recevrez un message d’erreur du type `Error: table already exists`. Pour éviter cela, vous pouvez ajouter la commande optionnelle `IF NOT EXISTS`. Celle-ci vérifie d’abord s’il existe déjà une table avec le même nom. Si ce n’est pas le cas, elle crée un nouveau tableau avec les paramètres définis. Voici le code correspondant à notre exemple précédent :

```sql
CREATE TABLE IF NOT EXISTS Employés (
Identifiant INT NOT NULL,
Nom de famille VARCHAR(50),
Prénom VARCHAR(50),
Adresse VARCHAR(50),
Ville VARCHAR(50),
Âge INT NOT NULL
);
```

## Créer une nouvelle table sur la base d’une table existante

Même si cette instruction fonctionne assez facilement, elle peut être fastidieuse si vous devez créer plusieurs tables similaires. C’est pourquoi `SQL CREATE DATABASE` vous permet également de **créer une nouvelle table en vous basant sur une table déjà existante**. Vous avez alors le choix de créer une copie exacte ou de ne prendre en compte que certains paramètres. Nous vous présentons les deux procédures. Dans le premier cas, nous créons une liste d’employés pour un autre établissement. Celle-ci doit donc être structurée de manière identique, mais nécessite un nouveau nom. Voici le code à utiliser :

```sql
CREATE TABLE Nouvelle_liste_d'employés
AS
SELECT *
FROM Employés;
```

L’astérisque indique au système qu’il doit reprendre toutes les colonnes.

Dans l’exemple suivant, nous créons une liste de clients. Celle-ci doit également contenir les colonnes Identifiant, Nom, Prénom, Adresse et Ville, mais la date de naissance ne doit pas être créée. Nous définissons donc exactement quelles colonnes doivent être copiées :

```sql
CREATE TABLE Liste de clients
AS
SELECT ID, Nom, Prénom, Adresse, Ville
FROM Employés;
```

## Commandes similaires à SQL `CREATE TABLE`

Outre `CREATE DATABASE` déjà évoqué, il existe d’autres instructions qui sont importantes pour travailler avec SQL `CREATE TABLE`. Il s’agit notamment de [SQL `DELETE`](https://www.ionos.fr/digitalguide/serveur/configuration/sql-delete/), qui permet de supprimer des entrées d’une table, et des [alias SQL](https://www.ionos.fr/digitalguide/serveur/configuration/alias-sql/), qui permettent de renommer temporairement des tables ou des colonnes.

Conseil Votre serveur personnel : avec le [serveur d’hébergement SQL](https://www.ionos.fr/cloud/hebergement-serveur-sql "Hébergement SQL pour les bases de données MSSQL, MySQL et MariaDB | IONOS") de IONOS, vous ne choisissez pas seulement entre MSSQL, MySQL et MariaDB, mais vous profitez également de nombreuses fonctionnalités utiles. Trouvez la solution adaptée à vos besoins !


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