Instructions MySQL INSERT : pourquoi les clauses WHERE sont des alternatives invalides et appropriées
Introduction :
L'instruction INSERT
de MySQL ajoute de nouvelles lignes à une table. Une erreur courante consiste à utiliser une clause WHERE
dans une instruction INSERT
, qui est syntaxiquement incorrecte. Cet article explique l'erreur et propose des alternatives efficaces.
Requête et explication incorrectes :
La requête suivante n'est pas valide :
INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;
Ceci tente d'insérer des valeurs dans Users
uniquement si une ligne avec id = 1
existe. L'instruction INSERT
de MySQL ne prend pas en charge les clauses WHERE
; il est conçu pour une insertion inconditionnelle.
Corriger la syntaxe MySQL INSERT :
La syntaxe INSERT
standard est :
INSERT INTO table_name ( column1, column2, ... ) VALUES ( value1, value2, ... );
La clause WHERE
est exclusivement utilisée dans les déclarations SELECT
, UPDATE
et DELETE
.
Approches alternatives :
Pour réaliser une insertion ou une mise à jour conditionnelle, envisagez ces options :
id
est une clé primaire ou une contrainte unique, insérez simplement la nouvelle ligne :INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);
UPDATE
pour modifier un enregistrement existant :UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;
INSERT ... ON DUPLICATE KEY UPDATE
: Ceci combine l'insertion et la mise à jour. Si une clé en double est trouvée (par exemple, un id
existant), la ligne est mise à jour ; sinon, une nouvelle ligne est insérée :INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145;
Considérations importantes :
id
auto-incrémentées : si id
est auto-incrémentée, vous pouvez l'omettre de l'instruction INSERT
; MySQL attribuera automatiquement une valeur.INSERT ... ON DUPLICATE KEY UPDATE
alternative : ce qui précède peut également être écrit comme :INSERT INTO Users SET id = 1, weight = 160, desiredWeight = 145 ON DUPLICATE KEY UPDATE weight = 160, desiredWeight = 145; ``` This form is useful when updating only some columns.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!