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 :
- lorsqu'un nouveau membre s'inscrit sur un site,
- lorsqu'on saisit une petite annonce dans un site,
- lorsqu'on poste un message dans un forum,
- lorsqu'on enregistre une statistique de visite d'un internaute sur une page du site,
- etc.
Question 3-1
Sur ce site des cours, donnez un autre exemple de fonctionnalité qui déclenche un INSERT INTO.
Ajout de valeurs "en dur".
Création d'une table user
On peut créer une table user à l'aide de la requ
Syntaxe minimaliste.
Remarquez que :
- Les valeurs numériques (par exemple 10, 3.14) sont insérées sans guillemet.
- Les valeurs alphanumériques (par exemple un login, un mot de passe) sont insérées avec des guillemets, simples ou doubles.
- Sous MySQL, les dates sont insérées au format "AAAA-MM-JJ" (avec des guillemets simples ou doubles).
- Sous MySQL, le numéro automatique est géré grâce à l'insertion de la valeur NULL.
- Quand on insère une valeur, on peut lui appliquer une fonction SQL, par exemple :
INSERT INTO user (champ_pwd) VALUES (password("valeur du mot de passe"));
INSERT INTO user (champ_date) VALUES (NOW());
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.