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.