8
Chapitre 8 sur 21

Insérer des données (INSERT)

Maintenant que vos tables existent, il est temps de les remplir. Vous allez apprendre à ajouter des lignes avec INSERT INTO, comprendre l’ordre des colonnes, et éviter les erreurs classiques.

Remplir une table : votre première insertion

Créer une table, c’est construire un “formulaire vide”. Insérer des données, c’est le remplir. Dans ce chapitre, vous allez comprendre exactement comment ajouter des lignes dans une table avec INSERT.

🧾

Analogie du jour : Remplir un formulaire

Une table = un formulaire avec des champs (colonnes).
Une ligne = un formulaire rempli.
INSERT = l’action d’ajouter un nouveau formulaire rempli dans le classeur.

📖

Définition : INSERT INTO

INSERT INTO est la commande SQL qui permet d’ajouter une nouvelle ligne (un enregistrement) dans une table. On indique la table, éventuellement les colonnes, puis les valeurs à insérer.

La syntaxe de base

La forme la plus claire (et la plus recommandée quand on débute) est :

INSERT INTO nom_table (colonne1, colonne2, colonne3)
VALUES (valeur1, valeur2, valeur3);
🏷️

Nom de la table
Fondamental

La table dans laquelle vous ajoutez une ligne.

Exemple : clients, livres, produits.

📌

Liste des colonnes
Fortement recommandé

Vous dites explicitement quelles colonnes vous remplissez.

Avantage : vous évitez les erreurs si la table change.

🧮

VALUES
Fondamental

La liste des valeurs, dans le même ordre que les colonnes.

Règle : 1 colonne = 1 valeur.

⚠️

Types et guillemets
À maîtriser

Le texte se met souvent entre ' quotes.

Les nombres s’écrivent sans guillemets.

Exemple concret : insérer un client

Imaginons une table clients avec : nom, prenom, email, ville.

INSERT INTO clients (nom, prenom, email, ville)
VALUES ('Dupont', 'Marie', 'marie.dupont@mail.com', 'Strasbourg');

Point clé

L’ordre est crucial : la 1ère valeur correspond à la 1ère colonne, la 2ème valeur à la 2ème colonne, etc. Si vous inversez, vous insérez de mauvaises données.

Guide pas à pas : vos 3 premières insertions

1

Ouvrir votre base et la table

Dans DB Browser, ouvrez votre base (ex. bibliotheque.db).

Allez dans “Exécuter le SQL”.

2

Insérer une première ligne

Copiez-collez :

INSERT INTO livres (titre, auteur, annee, pages, disponible)
VALUES ('Le Petit Prince', 'Antoine de Saint-Exupéry', 1943, 96, TRUE);
3

Insérer 2 autres lignes

Ajoutez deux livres de plus :

INSERT INTO livres (titre, auteur, annee, pages, disponible)
VALUES ('1984', 'George Orwell', 1949, 328, TRUE);

INSERT INTO livres (titre, auteur, annee, pages, disponible)
VALUES ('Dune', 'Frank Herbert', 1965, 604, FALSE);
4

Vérifier que les données existent

Allez dans l’onglet “Parcourir les données” et sélectionnez la table livres.

Vous devriez voir vos lignes apparaître.

🎉

SUCCÈS !

Votre table n’est plus vide : vous venez de créer vos premiers enregistrements.

Peut-on insérer sans préciser les colonnes ?

Oui, mais c’est plus risqué :

-- Possible, mais attention à l'ordre EXACT des colonnes dans la table
INSERT INTO clients
VALUES (1, 'Dupont', 'Marie', 'marie.dupont@mail.com', 'Strasbourg', '2025-01-10');
⚠️

Pourquoi c’est risqué

Si vous ajoutez une colonne plus tard (ou si l’ordre change), cette commande peut insérer au mauvais endroit ou provoquer une erreur. Quand on débute, privilégiez la version avec la liste des colonnes.

Insérer plusieurs lignes en une seule commande

Très pratique pour remplir rapidement une table :

INSERT INTO categories (nom)
VALUES
('Roman'),
('Science-fiction'),
('Jeunesse'),
('Histoire');
💡

Astuce

Cette technique est idéale au début d’un projet pour insérer des listes fixes : catégories, rôles utilisateurs, statuts, etc.

NULL, DEFAULT et dates : les 3 points qui font souvent tomber

Insérer NULL

NULL signifie “pas de valeur”.

INSERT INTO clients (nom, prenom, email)
VALUES ('Martin', 'Paul', NULL);

Attention : impossible si la colonne est NOT NULL.

⚙️

Laisser DEFAULT agir

Si une colonne a une valeur par défaut, vous pouvez ne pas la renseigner.

INSERT INTO livres (titre, auteur)
VALUES ('Foundation', 'Isaac Asimov');

Les autres colonnes prendront DEFAULT ou NULL.

📅

Insérer une date

Souvent au format YYYY-MM-DD.

INSERT INTO clients (nom, date_inscription)
VALUES ('Durand', '2025-12-21');

SQLite accepte aussi des formats variés, mais gardez une convention.

🔢

Texte vs nombres

Texte entre quotes, nombres sans quotes.

VALUES ('Alice', 32, 9.99)

Ça évite beaucoup d’erreurs “type mismatch”.

Les erreurs courantes (et comment les corriger)

Erreur : “table has no column named …”

Cause : vous avez écrit un mauvais nom de colonne.

Solution : vérifiez l’orthographe dans la structure de la table.

Erreur : “NOT NULL constraint failed”

Cause : vous n’avez pas fourni une valeur pour une colonne obligatoire.

Solution : ajoutez la valeur manquante, ou changez la structure (plus tard).

Erreur : “UNIQUE constraint failed”

Cause : vous tentez d’insérer un doublon (ex. même email).

Solution : changez la valeur, ou vérifiez si la donnée existe déjà.

🛠️

Réflexe de débogage

En cas d’erreur INSERT, vérifiez dans cet ordre :

  1. Nom de la table
  2. Nom des colonnes
  3. Nombre de valeurs = nombre de colonnes
  4. Quotes autour du texte
  5. Contraintes (NOT NULL, UNIQUE, etc.)

Exercice pratique : remplir une mini base “cinéma”

Objectif : créer et remplir rapidement une table films (si vous l’avez déjà, réutilisez-la).

1

Créer la table (si nécessaire)

CREATE TABLE IF NOT EXISTS films (
    id INTEGER PRIMARY KEY,
    titre TEXT NOT NULL,
    realisateur TEXT,
    annee INTEGER,
    note INTEGER
);
2

Insérer 5 films

Ajoutez au moins 5 lignes (titre obligatoire). Exemple :

INSERT INTO films (titre, realisateur, annee, note)
VALUES
('Inception', 'Christopher Nolan', 2010, 9),
('Interstellar', 'Christopher Nolan', 2014, 10),
('Parasite', 'Bong Joon-ho', 2019, 9),
('Amélie', 'Jean-Pierre Jeunet', 2001, 8),
('Gladiator', 'Ridley Scott', 2000, 8);
3

Vérifier visuellement

Dans “Parcourir les données”, assurez-vous que les 5 lignes sont bien présentes.

Si un champ est vide, demandez-vous : “c’était volontaire, ou j’ai oublié une valeur ?”.

💡

Option bonus

Ajoutez une contrainte UNIQUE sur titre (ou un couple titre + annee) pour éviter les doublons… puis testez volontairement un doublon pour voir l’erreur.

Vérification des connaissances

Question 1

Pourquoi conseille-t-on de lister les colonnes dans INSERT ?

  • Pour éviter les erreurs d’ordre
  • Pour rester robuste si la table change
  • Pour être plus lisible

Question 2

Que signifie NULL dans un INSERT ?

  • “Pas de valeur” / “inconnu”
  • Ce n’est pas la même chose que '' (chaîne vide)

Question 3

Que se passe-t-il si vous violez UNIQUE ?

  • La base refuse l’insertion
  • Vous obtenez une erreur de contrainte

Récapitulatif du chapitre

Vous savez maintenant :

  • Insérer une ligne avec INSERT INTO … VALUES
  • Pourquoi lister les colonnes est une bonne pratique
  • Insérer plusieurs lignes en une seule commande
  • Gérer NULL et laisser agir DEFAULT
  • Éviter / comprendre les erreurs liées à NOT NULL et UNIQUE
  • Remplir une table avec un mini jeu de données réaliste

Dans le prochain chapitre, nous apprendrons à lire les données que vous venez d’insérer avec la commande SELECT.