INSERT
INSERT ajoute de nouvelles lignes dans une table, une par une, par lot ou à partir d'une requête. Les colonnes non citées prennent leur valeur par défaut, ou NULL si aucune n'est prévue.
- ajouter
- créer ligne
- DML
- INSERT INTO SELECT
Syntaxe
INSERT INTO table (col1, col2)VALUES (val1, val2), (val3, val4);Exemple
INSERT INTO students (name, age, class_id)VALUES ('Farid Haddad', 13, 3), ('Gina Rossi', 12, 4);SELECT id, name, class_idFROM studentsWHERE id > 5;-- Jeu de données : école-- L'identifiant est attribué automatiquement (INTEGER PRIMARY KEY).-- Résultat attendu :-- 6 | Farid Haddad | 3-- 7 | Gina Rossi | 4À retenir
- Listez toujours les colonnes : INSERT INTO t VALUES (...) sans liste casse dès qu'une colonne est ajoutée à la table.
- INSERT INTO archive (id, name) SELECT id, name FROM students WHERE age > 13 copie le résultat d'une requête, sans clause VALUES.
- Piège : une apostrophe dans un texte se double : VALUES ('L''Oréal'). Dans une application, passez par des requêtes paramétrées plutôt que de coller des chaînes, sinon vous ouvrez la porte à l'injection SQL.
- Piège : dans SQLite, les clés étrangères ne sont vérifiées qu'après PRAGMA foreign_keys = ON. Sans cette ligne, on peut insérer un élève dans une classe 99 qui n'existe pas.
Voir aussi
- UPDATEUPDATE modifie les valeurs de lignes existantes. La clause WHERE désigne les lignes visées, SET les nouvelles valeurs, qui peuvent se calculer à partir des anciennes (hausse de prix, statut).
- UPSERT (ON CONFLICT)Un UPSERT insère une ligne ou, si sa clé existe déjà, met à jour la ligne en place. C'est la façon sûre de synchroniser un catalogue ou un import sans tester l'existence au préalable.
- RETURNINGRETURNING renvoie les lignes touchées par un INSERT, un UPDATE ou un DELETE, dans la même instruction. On récupère ainsi l'identifiant généré ou les nouvelles valeurs sans requête supplémentaire.
- CREATE TABLECREATE TABLE déclare une nouvelle table : ses colonnes, leurs types et les contraintes qui protègent les données. C'est la traduction concrète d'un modèle MLD en schéma de base.