Section courante

A propos

Section administrative du site

UPDATE

Mettre à jour
MySQL  

Syntaxe

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

Paramètres

Nom Description
tbl_name Ce paramètre permet d'indiquer le nom de la table à traiter
col_name1, col_name2 Ce paramètre permet d'indiquer le nom du champ dans la table à traiter
expr1, expr2 Ce paramètre permet d'indiquer une expression contenant une valeur à mettre dans le champ de la table à traiter
where_definition Ce paramètre permet d'indiquer une suite de condition de recherche dans la table de base de données

Description

Cette instruction permet de mettre à jour des champs d'enregistrements dans une table. Ainsi, grâce à cette instruction vous pouvez changer aussi bien ou un plusieurs enregistrements, et de plus, vous pouvez changer seulement un champ ou des champs de la table.

Remarques

Exemples

Pour le problème suivant, sachant que nous avons une table «cdmuser» ressemblant à ceci :

Cin UserId FirstName LastName Password DefLang DefEmail Status NumVisit CreateDate CreateUserId LastUpdate UpdateUserId
000 SYSADM Sylvain Maltais PASSWORD FR support@gladir.com A 615 2006/03/09 SYSADM 2006/03/09 SYSADM
000 STREMBLAY Steve Tremblay PASSWORD FR stremblay@mail.com A 615 2006/03/09 SYSADM 2006/03/09 SYSADM

Voici un exemple effectuant un vulgaire remplacement du contenu d'un champ par une autre valeur :

  1. UPDATE cdmuser SET 
  2.    DefEmail='support@gladir.ca' 
  3. WHERE 
  4.    DefEmail='support@gladir.com'

Et les informations deviendront comme ceci :

Cin UserId FirstName LastName Password DefLang DefEmail Status NumVisit CreateDate CreateUserId LastUpdate UpdateUserId
000 SYSADM Sylvain Maltais PASSWORD FR support@gladir.ca A 615 2006/03/09 SYSADM 2006/03/09 SYSADM
000 STREMBLAY Steve Tremblay PASSWORD FR stremblay@mail.com A 615 2006/03/09 SYSADM 2006/03/09 SYSADM

Sachant que la table «contact» a le contenu suivant :

id prenom nom courriel
1 Sylvain Maltais sylvain.maltais@moncourriel.com
2 Gabriel Maltais gabriel.maltais@nomdomaine.com
3 Thomas Gagnon thomas.gagnon@autrenomdedomaine.com
4 Yvan Jean yvan.jean@ceciestunnomdedomaine.com

L'exemple suivant permet de remplacer toutes les noms de domaines des adresses de courriels de la table «contact» par un nom de domaine «mailinator.com» (ainsi les adresses de courriels de production sont redirigés vers une boite de courriel de test) :

  1. UPDATE `contact` SET `courriel`= CONCAT(LEFT(`courriel`, INSTR(`courriel`, '@')), 'mailinator.com');

on obtiendra le résultat suivant :

id prenom nom courriel
1 Sylvain Maltais sylvain.maltais@mailinator.com
2 Gabriel Maltais gabriel.maltais@mailinator.com
3 Thomas Gagnon thomas.gagnon@mailinator.com
4 Yvan Jean yvan.jean@mailinator.com

L'exemple suivant permet de remplacer les noms de domaines du champ des courriels (email) dans la table users sachant que les courriels ne contient pas toujours de noms de domaines et ayant des courriels en double et rajoute des éléments aléatoires pour qu'il soit unique :

  1. UPDATE users SET 
  2. email=CONCAT(TRIM(TRAILING '@' FROM SUBSTR(email,1,IF(INSTR(email,'@') = 0,LENGTH(email),INSTR(email,'@')))),
  3. CHAR(RAND()*25+65),CHAR(RAND()*25+65),CHAR(RAND()*25+65),CHAR(RAND()*25+65),CHAR(RAND()*25+65),CHAR(RAND()*25+65),
  4. 'gladir.com')  

Voir également

Article - Les géants de l'informatique - Oracle

Références

MySQL - Référence, Edition Micro Application, Nicolas Rivereau, Antoine Pichot, 2002, ISBN: 2-7429-2560-0, page 919.
MySQL: The definitive guide to using, programming, and administering MySQL 4 databases - Second Edition, Paul Dubois, 2003, ISBN: 0-7357-1212-3, page 935

Dernière mise à jour : Mercredi, le 28 octobre 2015