Skip to content

INSERT INTO – Ajouter des lignes

Bonne lecture et bon apprentissage !
Junior TSAFACK – 08/08/2026
⏱️ Temps de lecture estimé : 6 minutes


L’insertion de données dans une table s’effectue à l’aide de la commande INSERT INTO. Cette commande permet au choix d’inclure une seule ligne à la base existante ou plusieurs lignes d’un coup.


Insertion d’une ligne en spécifiant toutes les colonnes

Section titled “Insertion d’une ligne en spécifiant toutes les colonnes”

La syntaxe pour remplir une ligne avec cette méthode est la suivante :

INSERT INTO table
VALUES ('valeur1', 'valeur2', ...);

Cette syntaxe possède les avantages et inconvénients suivants :

  • Oblige à remplir toutes les données, tout en respectant l’ordre des colonnes.
  • Limitation des fautes de frappe : Il n’y a pas le nom de colonne. Par ailleurs, les colonnes peuvent être renommées sans avoir à changer la requête.
  • Ordre strict : L’ordre des colonnes doit rester identique, sinon certaines valeurs risquent d’être complétées dans la mauvaise colonne.

Insertion d’une ligne en spécifiant seulement les colonnes souhaitées

Section titled “Insertion d’une ligne en spécifiant seulement les colonnes souhaitées”

Cette deuxième solution est très similaire, excepté qu’il faut indiquer le nom des colonnes avant VALUES. La syntaxe est la suivante :

INSERT INTO table (nom_colonne_1, nom_colonne_2, ...)
VALUES ('valeur1', 'valeur2', ...);

Bon à savoir : Il est possible de ne pas renseigner toutes les colonnes. De plus, l’ordre des colonnes n’est pas important du moment que les valeurs correspondent.


Exemple 1 : Insertion en spécifiant toutes les colonnes

Section titled “Exemple 1 : Insertion en spécifiant toutes les colonnes”

Imaginons une table « client » avec les colonnes suivantes : id, prenom, nom, ville, age.

INSERT INTO client
VALUES (1, 'Rébecca', 'Armand', 'Saint-Didier-des-Bois', 24);

Résultat dans la table :

id prenom nom ville age
1 Rébecca Armand Saint-Didier-des-Bois 24

Exemple 2 : Insertion en spécifiant les colonnes souhaitées

Section titled “Exemple 2 : Insertion en spécifiant les colonnes souhaitées”
INSERT INTO client (prenom, nom, age, ville)
VALUES ('Aimée', 'Hebert', 36, 'Marigny-le-Châtel');

Résultat dans la table :

id prenom nom ville age
1 Rébecca Armand Saint-Didier-des-Bois 24
2 Aimée Hebert Marigny-le-Châtel 36

Exemple 3 : Insertion partielle (certaines colonnes omises)

Section titled “Exemple 3 : Insertion partielle (certaines colonnes omises)”

Si la colonne age est optionnelle (peut être NULL), on peut omettre certaines colonnes :

INSERT INTO client (prenom, nom, ville)
VALUES ('Marielle', 'Ribeiro', 'Maillères');

Résultat :

id prenom nom ville age
1 Rébecca Armand Saint-Didier-des-Bois 24
2 Aimée Hebert Marigny-le-Châtel 36
3 Marielle Ribeiro Maillères NULL

Bon à savoir : Lorsque le champ à remplir est de type VARCHAR ou TEXT, il faut indiquer le texte entre guillemets simples. En revanche, lorsque la colonne est un numérique tel que INT ou BIGINT, il n’y a pas besoin d’utiliser de guillemets, il suffit juste d’indiquer le nombre.


Il est possible d’ajouter plusieurs lignes à un tableau avec une seule requête. Pour ce faire, il convient d’utiliser la syntaxe suivante :

INSERT INTO client (prenom, nom, ville, age)
VALUES
('Rébecca', 'Armand', 'Saint-Didier-des-Bois', 24),
('Aimée', 'Hebert', 'Marigny-le-Châtel', 36),
('Marielle', 'Ribeiro', 'Maillères', 27),
('Hilaire', 'Savary', 'Conie-Molitard', 58);

Résultat :

id prenom nom ville age
1 Rébecca Armand Saint-Didier-des-Bois 24
2 Aimée Hebert Marigny-le-Châtel 36
3 Marielle Ribeiro Maillères 27
4 Hilaire Savary Conie-Molitard 58

Bon à savoir : La syntaxe avec plusieurs lignes est prise en charge par la plupart des SGBD modernes (MySQL, PostgreSQL, SQLite, SQL Server). Si votre SGBD ne la supporte pas, vous devrez effectuer plusieurs requêtes INSERT séparées.


Il est possible d’insérer les résultats d’une requête SELECT dans une table :

INSERT INTO client_paris (prenom, nom, ville, age)
SELECT prenom, nom, ville, age
FROM client
WHERE ville = 'Paris';

Cette requête insère dans la table client_paris tous les clients qui habitent à Paris. Les deux tables doivent avoir des structures compatibles.


Si votre table possède une colonne id avec AUTO_INCREMENT (ou SERIAL), vous pouvez omettre cette colonne dans l’insertion. Le SGBD attribuera automatiquement une nouvelle valeur :

INSERT INTO client (prenom, nom, ville, age)
VALUES ('Julie', 'Martineau', 'Lyon', 29);

Résultat : la colonne id sera automatiquement remplie avec la prochaine valeur disponible.


  • Spécifiez toujours les colonnes : Même si vous insérez toutes les colonnes, il est préférable de les lister explicitement. Cela rend la requête plus robuste aux modifications de la structure de la table.
  • Guillemets simples : Utilisez des guillemets simples pour les chaînes de caractères ('valeur'), et pas de guillemets pour les nombres.
  • Échappez les caractères spéciaux : Si vos données contiennent des guillemets simples, utilisez '' (double guillemet simple) pour les échapper. Exemple : 'L''appartement'.
  • Vérifiez les contraintes : Assurez-vous que les données insérées respectent les contraintes (clé primaire unique, NOT NULL, clé étrangère, etc.) pour éviter les erreurs.
  • Tests : Testez avec des données limitées avant d’insérer de gros volumes de données en production.

Erreur Cause probable Solution
Duplicate entry Violation de clé primaire ou unique Vérifiez que l’identifiant n’existe pas déjà
Column count doesn’t match Nombre de colonnes différent du nombre de valeurs Vérifiez le nombre de colonnes dans INSERT INTO
Cannot be NULL Valeur NULL dans une colonne NOT NULL Fournissez une valeur pour cette colonne
Foreign key constraint Référence vers une clé étrangère inexistante Vérifiez que la clé étrangère existe dans la table référencée

Vous savez désormais comment ajouter des lignes avec INSERT INTO. Mais que faire si vous souhaitez mettre à jour une ligne déjà existante, ou bien l’insérer si elle n’existe pas encore ?

👉 Chapitre 21 : ON DUPLICATE KEY UPDATE – INSERT ou UPDATE (MySQL)

Bonne continuation !


Junior TSAFACK – 08/08/2026