Utilisez l'instruction UPDATE pour modifier les données d'une table unique ou de plusieurs tables dans AnalyticDB for MySQL.
Limitations
La table cible doit posséder une clé primaire.
Les colonnes de la clé primaire ne peuvent pas être mises à jour.
Les clauses
ORDER BYetLIMITsont prises en charge uniquement pour les mises à jour sur une table unique.Les mises à jour multitable ne prennent en charge la jointure d'au maximum deux tables.
Chaque instruction
UPDATEne peut cibler qu'une seule table. La table à modifier doit apparaître en premier dans l'instruction.L'instruction
UPDATEmultitable nécessite AnalyticDB for MySQL V3.1.6.4 ou une version ultérieure. Pour vérifier ou mettre à niveau la version de votre cluster, accédez à la page Cluster Information dans la console AnalyticDB for MySQL et consultez la section Configuration Information. Pour obtenir des instructions sur la mise à jour de la version mineure, consultez Mettre à jour la version mineure d'un cluster.
Mettre à jour une table unique
Syntaxe
UPDATE table_name
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT ...]
Mettre à jour une ligne par ID
Modifiez le nom du client 2369 en Claire :
UPDATE customer
SET customer_name = 'Claire'
WHERE customer_id = '2369';
Pour vérifier la mise à jour :
SELECT customer_id, customer_name
FROM customer
WHERE customer_id = '2369';
Mettre à jour plusieurs tables
Utilisez une clause JOIN pour lire les valeurs d'une seconde table et écrire les mises à jour dans la première table.
Syntaxe
UPDATE table_name1
[INNER JOIN | LEFT JOIN] table_name2 ON table_name1.column = table_name2.column
SET assignment_list
[WHERE where_condition]
Placez la table à mettre à jour en premier dans l'instruction UPDATE .
Mettre à jour une colonne à l'aide de LEFT JOIN
Modifiez l'âge du client 2369 en utilisant un enregistrement correspondant dans new_customer :
UPDATE customer
LEFT JOIN new_customer ON customer.customer_id = new_customer.customer_id
SET customer.customer_age = 42
WHERE new_customer.customer_id = '2369';
Pour vérifier la mise à jour :
SELECT customer_id, customer_age
FROM customer
WHERE customer_id = '2369';
Mettre à jour une colonne à l'aide de INNER JOIN
Copiez customer_name depuis new_customer vers customer en fonction d'un customer_id correspondant :
UPDATE customer
INNER JOIN new_customer ON customer.customer_id = new_customer.customer_id
SET customer.customer_name = new_customer.customer_name;
Définissez customer_id sur 2369 pour toutes les lignes où le nom du client correspond entre customer et new_customer :
UPDATE customer
INNER JOIN new_customer ON customer.customer_name = new_customer.customer_name
SET customer.customer_id = '2369';
Définir une colonne sur une valeur fixe
Définissez customer_id sur 1 pour toutes les lignes de customer où le nom du client correspond à une ligne de new_customer :
UPDATE customer
LEFT JOIN new_customer ON customer.customer_name = new_customer.customer_name
SET customer.customer_id = '1';
Notes d'utilisation
Mises à jour fréquentes avec INSERT ON DUPLICATE KEY UPDATE
L'exécution de INSERT ON DUPLICATE KEY UPDATE à plus de 100 QPS ou sur de grands volumes de données peut augmenter considérablement l'utilisation du CPU. Pour les charges de travail upsert à haut débit, utilisez plutôt REPLACE INTO. Pour plus d'informations, consultez REPLACE INTO.