MySQL

Insertion de données dans une table

Voici le chapitre Insertion de données dans une table — le cœur du travail avec MySQL : faire entrer proprement l’information.


🍃 Insertion de données dans une table

(INSERT INTO — valeurs simples, multiples, avec colonnes, auto-incréments, dates, relations…)

Quand tu ajoutes quelque chose dans une table MySQL, tu utilises la commande :

INSERT INTO NomTable (...) VALUES (...);

Mais il existe plusieurs variantes selon ton besoin.

On les passe toutes, de la plus simple au plus avancée.

🟩 1. Insertion classique (toutes les colonnes)

Exemple avec la table User :

INSERT INTO User (Nom, Email, CreateDate)
VALUES ('Martin', 'martin@example.com', '2025-11-26 14:00:00');

Explications :

  • On liste les colonnes dans l’ordre qu’on veut.
  • UserID n’est pas mentionné → MySQL gère l’AUTO_INCREMENT.
  • CreateDate peut être mis à une valeur spécifique ou laissé par défaut.

🟦 2. Insertion avec AUTO_INCREMENT (cas le plus courant)

La clé primaire se remplit toute seule :

INSERT INTO User (Nom, Email)
VALUES ('Alexandre', 'alex@example.com');

Si CreateDate a un DEFAULT CURRENT_TIMESTAMP, il se remplit tout seul aussi. C’est parfait pour la majorité des tables.

🟧 3. Insertion multiple (plusieurs lignes en un seul appel)

Très performant, surtout pour les gros imports.

INSERT INTO User (Nom, Email)
VALUES
  ('Alex', 'alex@mail.com'),
  ('Marine', 'marine@mail.com'),
  ('Nico', 'nico@mail.com');

En production, c’est mieux que de faire 3 requêtes séparées.

🟨 4. Insertion sans préciser les colonnes (déconseillé)

INSERT INTO User
VALUES (NULL, 'Paul', 'paul@mail.com', NOW());

Problèmes :

  • l’ordre des colonnes doit être EXACT
  • casse facilement ton code si tu modifies la structure de la table

À éviter dans tout projet sérieux.

🟥 5. Insertion avec protection d’unicité (INSERT IGNORE)

Utile quand tu veux éviter les erreurs si une valeur existe déjà.

Exemple avec un Email UNIQUE :

INSERT IGNORE INTO User (Nom, Email)
VALUES ('Alex', 'alex@mail.com');

Si l’email existe déjà → MySQL ignore l’insertion. Utile pour importer des données.

🟪 6. Insertion avec remplacement (REPLACE INTO)

⚠️ À utiliser avec prudence. Si un enregistrement existe déjà → il est supprimé puis recréé.

REPLACE INTO User (UserID, Nom, Email)
VALUES (42, 'Alice', 'alice@mail.com');

Même clé primaire → remplace.

🟫 7. Insertion conditionnelle (INSERT … ON DUPLICATE KEY UPDATE)

Utile quand tu veux :

  • insérer si nouveau,
  • ou mettre à jour si existe déjà.
INSERT INTO User (Email, Nom)
VALUES ('alex@mail.com', 'Alexandre')
ON DUPLICATE KEY UPDATE Nom = 'Alexandre';

Parfait pour synchronisation, imports, API, logs.

🌐 8. Insertion liée à une autre table (clés étrangères)

Cas très commun pour SAMI :

ajouter une nouvelle vidéo liée à un utilisateur.

Étape 1 — créer l’utilisateur :

INSERT INTO User (Nom, Email)
VALUES ('Alex', 'alex@mail.com');

Étape 2 — récupérer son ID :

SELECT UserID FROM User WHERE Email = 'alex@mail.com';

Mettons que UserID = 12.

Étape 3 — insérer la vidéo avec la clé étrangère :

INSERT INTO Video (Titre, Duree, UserID)
VALUES ('Blade Runner', 7200, 12);

MySQL exigera que 12 existe dans User(UserID).

🌀 9. Insertion dans une relation N-N (ex : VideoGenres)

Table pivot classique :

Video
Genre
VideoGenre   ← relation n-n

Exemple :

INSERT INTO VideoGenre (VideoID, GenreID)
VALUES (5, 3);   -- Video n°5 / Genre n°3

Changer une relation revient à retirer la ligne et en ajouter une nouvelle.

🕑 10. Insertion avec dates automatiques

Timestamp automatique :

INSERT INTO Historique (UserID, Action)
VALUES (12, 'Connexion');

Si la colonne a :

CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP

→ aucune action à faire, MySQL gère tout.

Timestamp manuel :

INSERT INTO Historique (UserID, Action, CreateDate)
VALUES (12, 'Suppression du compte', '2025-11-26 17:04:00');

🧭 11. Voir les données insérées

Pour vérifier rapidement :

SELECT * FROM User;

Ou avec tri :

SELECT * FROM User ORDER BY UserID DESC;

🎯 Conclusion

Tu as maintenant toutes les variantes réalistes :

  • insertion simple
  • insertion multiple
  • insertion protégée (IGNORE / REPLACE)
  • insertion conditionnelle
  • insertion liée via FOREIGN KEY
  • insertion dans une table pivot
  • gestion des dates

C’est l’ensemble indispensable pour faire tourner proprement une base MySQL dans tes projets.

Previous
Altération de la structure de la table