Cours SQL : commande INSERT INTO.
Réponse AJAX

Présentation de... INSERT INTO

Cette commande SQL permet d'insérer une nouvelle ligne (ou "nouvel enregistrement") dans une table d'une base de données.

Par exemple :

Sur ce site des cours, donnez un autre exemple de fonctionnalité qui déclenche un INSERT INTO.

Votre réponse n°1

Ajout de valeurs "en dur"

Syntaxe minimaliste

Remarquez que :

Insérer des valeurs dans certains champs mais pas dans tous

Si on ne veut pas remplir tous les champs, on peut utiliser la syntaxe suivante :

J'apprécie particulièrement cette syntaxe pour une raison précise : lorsqu'on fait évoluer un projet, il arrive souvent de rajouter de nouveaux champs dans les tables. Si on a utilisé cette syntaxe, les requêtes INSERT INTO seront compatibles avec la nouvelle structure des tables, il ne sera donc pas nécessaire de toutes les corriger.

Lorsqu'on utilise cette syntaxe, qu'advient-il des champs dont on n'a pas précisé la valeur ?

Votre réponse n°2

Insertion multiple : insérer plusieurs lignes en une seule commande INSERT INTO

On peut insérer plusieurs lignes en une seule commande, c'est ce qui se passe pendant les exportations de tables depuis MySQL. La syntaxe est la suivante :

Ajout de valeurs issues d'une autre table

On peut insérer des valeurs qui proviennent directement d'une autre table, avec la syntaxe suivante :

Liens avec les études de cas

Etude de cas DA, 2010, métropole : Cas NOIXCOOP, dossier 2, question 1 (go).

Les syntaxes officielles d'après la doc MySQL

INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] ou : INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] tbl_name SET col_name={expr | DEFAULT}, ... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] ou : INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] tbl_name [(col_name,...)] SELECT ...

Pour en savoir plus

Documentation supplémentaire pour INSERT INTO ... VALUES :
http://dev.mysql.com/doc/refman/5.0/fr/insert.html

Documentation supplémentaire pour INSERT INTO ... SELECT :
http://dev.mysql.com/doc/refman/5.0/fr/insert-select.html