# MariaDB INSERT INTO : comment insérer des données dans des tables ?

Avec MariaDB `INSERT INTO`, vous insérez de nouveaux enregistrements dans une table existante. C’est l’une des commandes de base essentielles en SQL. Utilisez-la dès que vous souhaitez enrichir une base de données avec de nouveaux contenus ou étendre les informations existantes.

## Qu’est-ce que la commande MariaDB `INSERT`?

Dans [MariaDB](https://www.ionos.fr/digitalguide/serveur/know-how/mariadb-cest-quoi/), la commande `INSERT` insère de nouvelles données dans une table. Elle **complète les structures de données existantes** par des lignes complètes. Chaque fois que des utilisateurs s’inscrivent, soumettent un formulaire ou ajoutent un produit, le système exécute en arrière-plan un `INSERT INTO`.

MariaDB vérifie lors de l’insertion si les valeurs correspondent aux **types de données des colonnes** et si tous les champs requis sont remplis. Si les valeurs violent des contraintes telles que `NOT NULL`, `UNIQUE` ou `FOREIGN KEY`, la base de données refuse l’opération. Par conséquent, la structure de la table cible et la spécification correcte des colonnes jouent un rôle important dans l’utilisation de `INSERT`.

## À quoi ressemble la commande `INSERT INTO` dans MariaDB ?

La syntaxe standard pour `INSERT INTO` est la suivante :

```sql
INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3);
```

- `table_name` indique la table dans laquelle les données seront insérées.
- La liste des colonnes (`column1, column2, ...`) est optionnelle, mais recommandée.
- La partie `VALUES` contient les valeurs que vous souhaitez insérer dans les colonnes spécifiées.

MariaDB complète les valeurs dans l’ordre où les colonnes sont définies. Si le nombre ou l’**ordre des valeurs** ne correspond pas à la liste des colonnes, cela entraîne une erreur.

## Quels sont les paramètres et arguments pour MariaDB `INSERT INTO` ?

`INSERT INTO` peut être étendu et adapté selon les besoins. Voici les principaux paramètres et variantes :

### Liste des colonnes

Vous pouvez indiquer toutes les colonnes ou seulement certaines. Si la liste est omise, MariaDB attend des valeurs pour toutes les colonnes de la structure de la table.

```sql
INSERT INTO users VALUES (1, 'Anna', 'anna@example.com');
```

Si vous souhaitez remplir uniquement des colonnes spécifiques, exécutez la commande suivante :

```sql
INSERT INTO users (name, email) VALUES ('Anna', 'anna@example.com');
```

Ici, nous sélectionnons les colonnes `name` et `email`.

### Insérer plusieurs lignes

Cette méthode est plus efficace que plusieurs commandes individuelles MariaDB `INSERT`, surtout pour de grandes quantités de données :

```sql
INSERT INTO products (name, price)
VALUES ('pen', 1.50),
    ('notepad', 2.00),
    ('bag', 9.90);
```

### `INSERT IGNORE`

Avec `IGNORE`, MariaDB ignore les lignes qui violent les contraintes et continue avec les autres.

```sql
INSERT IGNORE INTO users (id, name) VALUES (1, 'Anna');
```

### `INSERT ... ON DUPLICATE KEY UPDATE`

Cette expression met à jour les lignes existantes en cas de conflit de clé unique.

```sql
INSERT INTO users (id, name)
VALUES (1, 'Anna')
ON DUPLICATE KEY UPDATE name = 'Anna';
```

Cette technique permet d’économiser des requêtes supplémentaires et assure de combiner la logique d’insertion et de mise à jour en une seule commande. Cela est très utile pour les importations, les données synchronisées ou les opérations comptables automatisées.

### Insertion avec `SELECT`

Avec `SELECT`, vous copiez des enregistrements d’une table à une autre :

```sql
INSERT INTO archive_orders (id, status)
SELECT id, status FROM orders WHERE status = 'completed';
```

## Exemples d’application pour MariaDB `INSERT INTO`

Dans ce qui suit, nous vous présentons des scénarios d’utilisation courants pour `INSERT INTO`.

### Inscription des utilisateurs

Dans l’exemple suivant, MariaDB insère une nouvelle utilisatrice dans la table `users`. Les valeurs pour les colonnes `name` et `email` proviennent d’un formulaire ou d’une application. La valeur `NOW()` récupère le timestamp actuel, c’est-à-dire le moment de l’inscription.

```sql
INSERT INTO users (name, email, created_at)
VALUES ('Lena', 'lena@example.com', NOW());
```

Cette méthode convient pour les formulaires Web classiques comme les écrans de connexion, où chaque saisie est directement enregistrée dans la base de données. Il est important que `created_at` soit de type `DATETIME` ou `TIMESTAMP` pour que `NOW()` soit enregistré correctement.

### Insérer des données à partir d’une autre table

Cet exemple montre comment transférer des données existantes d’une table (`orders`) vers une autre table (`archive_orders`). MariaDB sélectionne toutes les commandes ayant le statut `'completed'` et transfère les colonnes `id` et `status`.

```sql
INSERT INTO archive_orders (id, status)
SELECT id, status FROM orders WHERE status = 'completed';
```

De telles commandes sont utilisées pour l’archivage, le nettoyage de données ou pour des rapports. Vérifiez que la structure, comme les types de colonnes, correspond entre la table source et la table cible, sans quoi MariaDB n’exécutera pas la commande.


This is a markdown version of: [https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/mariadb-insert-into/](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/mariadb-insert-into/) for AI/LLM consumption.