Aller au contenu
Modification (DML)

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

Modèle
INSERT INTO table (col1, col2)VALUES (val1, val2),       (val3, val4);

Exemple

Exemple concret
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

  1. Listez toujours les colonnes : INSERT INTO t VALUES (...) sans liste casse dès qu'une colonne est ajoutée à la table.
  2. INSERT INTO archive (id, name) SELECT id, name FROM students WHERE age > 13 copie le résultat d'une requête, sans clause VALUES.
  3. 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.
  4. 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