Syntaxe de TRUNCATE
<<<
Syntaxe de UPDATE Syntaxe des commandes SQL
>>>

14.1 Manipulation de données : SELECT , INSERT , UPDATE , DELETE
14 Syntaxe des commandes SQL
 Manuel de Référence MySQL 4.1 : Version Française

Syntaxe de DELETE
Syntaxe de DO
Syntaxe de HANDLER
Syntaxe de INSERT
Syntaxe de LOAD DATA INFILE
Syntaxe de REPLACE
Syntaxe de SELECT
Sous-sélections ( SubSELECT )
Syntaxe de TRUNCATE
->Syntaxe de UPDATE

14.1.10 Syntaxe de UPDATE


UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]
    [ORDER BY ...]
    [LIMIT row_count]
Syntaxe multi-tables :

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name [, tbl_name ...]
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]
UPDATE met à jour des enregistrements dans une tables avec de nouvelles valeurs. La clause SET indique les colonnes à modifier et les valeurs à leur donner. La clause WHERE , si fournie, spécifie les enregistrements à mettre à jour. Sinon, tous les enregistrements sont mis à jour. Si la clause ORDER BY est fournie, les enregistrements seront mis à jour dans l'ordre spécifié.

La commande UPDATE accepte les options suivantes :

  • Si vous spécifiez le mot clef LOW_PRIORITY , l'exécution de l' UPDATE sera repoussé jusqu'à ce que aucun client ne lise plus de la table.
  • Si vous spécifiez le mot clef IGNORE , la mise à jour ne s'interrompra pas même si on rencontre des problèmes d'unicité de clefs durant l'opération. Les enregistrements posant problèmes ne seront pas mis à jour.

Si vous accédez à une colonne d'une table dans une expression, UPDATE utilisera la valeur courante de la colonne. Par exemple, la requête suivante ajoute une année à l'âge actuel de tout le monde :


mysql> UPDATE persondata SET age=age+1;
Les requêtes UPDATE sont évaluées de gauche à droite. Par exemple, la requête suivante double la valeur de la colonnes âge, puis l'incrémente :

mysql> UPDATE persondata SET age=age*2, age=age+1;
Si vous changez la valeur d'une colonne en lui spécifiant sa valeur actuelle, MySQL s'en aperçoit et ne fait pas la mise à jour. UPDATE retourne le nombre d'enregistrements ayant changé. Depuis la version 3.22 de MySQL, la fonction mysql_info() de l'API C retourne le nombre de colonnes qui correspondaient, le nombre de colonnes mises à jour et le nombre d'erreurs générées pendant l' UPDATE .

Dans la version 3.23 de MySQL, vous pouvez utilisez le code LIMIT # pour vous assurer que seul un nombre d'enregistrements bien précis est changé.

  • Avant MySQL 4.0.13, LIMIT est une restrictions sur le nombre de lignes affectées. Cette clause stoppe dès que row_count ont été trouvées par la clause WHERE .
  • Depuis la version 4.0.13, LIMIT est une restriction sur le nombre de lignes trouvées. La commande s'arrête une fois que row_count lignes ont été trouvées par la clause WHERE , qu'elles ait été changées ou pas.

Ai une clause ORDER BY est utilisée (disponible depuis MySQL version 4.0.0), les lignes seront modifiées selon cet ordre. Ce n'est vraiment utile qu'en conjonction avec LIMIT .

Depuis MySQL version 4.0.4, vous pouvez aussi faire des opérations de UPDATE qui couvrent plusieurs tables :

UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;
L'exemple ci-dessus montre une jointure interne, en utilisant la virgule comme séparateur, mais une commande UPDATE multi-table peut utiliser n'importe quel type de jointure autorisée dans une commande SELECT , tel qu'un LEFT JOIN .Note : vous ne pouvez pas utiliser ORDER BY ou LIMIT avec les UPDATE multi-table.

<< Syntaxe de UPDATE >>
Syntaxe de TRUNCATE Manipulation de données : SELECT , INSERT , UPDATE , DELETE Syntaxe des commandes SQL