Maison >base de données >tutoriel mysql >Pourquoi une clause WHERE n'est-elle pas valide dans une instruction MySQL INSERT et quelles sont les alternatives ?
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 :
<code class="language-sql">INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;</code>
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 :
<code class="language-sql">INSERT INTO table_name ( column1, column2, ... ) VALUES ( value1, value2, ... );</code>
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 :<code class="language-sql">INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);</code>
UPDATE
pour modifier un enregistrement existant :<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
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 :<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145;</code>
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 :<code class="language-sql"> 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.</code>
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!