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 ?

Pourquoi une clause WHERE n'est-elle pas valide dans une instruction MySQL INSERT et quelles sont les alternatives ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-19 06:53:08689parcourir

Why is a WHERE clause invalid in a MySQL INSERT statement, and what are the 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 :

  • Insérer une nouvelle ligne avec un identifiant unique : Si 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>
  • Mise à jour d'une ligne existante : Utilisez 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 :

  • Colonnes 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.
  • Syntaxe 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn