Article de reference

Mise à jour (SQL)

Une instruction SQL UPDATE modifie les données d'un ou plusieurs enregistrements d'une table . Il est possible de mettre à jour toutes les lignes ou de sélectionner un sous-ense...

Une instruction SQL UPDATE modifie les données d'un ou plusieurs enregistrements d'une table . Il est possible de mettre à jour toutes les lignes ou de sélectionner un sous-ensemble à l'aide d'une condition .

La UPDATEdéclaration a la forme suivante :

UPDATE nom_table nom_colonne = valeur [, nom_colonne = valeur ... ] [ condition ]SET WHERE

Pour que l' UPDATEopération réussisse, l'utilisateur doit disposer de privilèges de manipulation de données ( UPDATEprivilège) sur la table ou la colonne et la valeur mise à jour ne doit pas entrer en conflit avec toutes les contraintes applicables (telles que les clés primaires , les index uniques, CHECKles contraintes et NOT NULLles contraintes).

Dans certaines bases de données, comme PostgreSQL , lorsqu'une clause FROM est présente, ce qui se passe essentiellement est que la table cible est jointe aux tables mentionnées dans la liste fromlist, et chaque ligne de sortie de la jointure représente une opération de mise à jour pour la table cible. Lorsque vous utilisez FROM, il faut s'assurer que la jointure produit au plus une ligne de sortie pour chaque ligne à modifier. En d'autres termes, une ligne cible ne doit pas être jointe à plus d'une ligne de la ou des autres tables. Si c'est le cas, une seule des lignes de jointure sera utilisée pour mettre à jour la ligne cible, mais il n'est pas facile de prévoir laquelle sera utilisée.

En raison de cette indétermination, référencer d'autres tables uniquement dans les sous-sélections est plus sûr, bien que souvent plus difficile à lire et plus lent que l'utilisation d'une jointure.

MySQL n'est pas conforme à la norme ANSI.

Exemples

Définissez la valeur de la colonne C1 du tableau T sur 1, uniquement dans les lignes où la valeur de la colonne C2 est « a ».

MISE À JOUR T SET C1 = 1 C2 = 'a'

Dans le tableau T , définissez la valeur de la colonne C1 à 9 et la valeur de C3 à 4 pour toutes les lignes pour lesquelles la valeur de la colonne C2 est « a ».

MISE À JOUR T SET C1 = 9 , C3 = 4 C2 = 'a'

Augmentez la valeur de la colonne C1 de 1 si la valeur de la colonne C2 est « a ».

MISE À JOUR T SET C1 = C1 + 1 C2 = 'a'

Ajoutez la chaîne « texte » à la valeur de la colonne C1 si la valeur de la colonne C2 est « a ».

MISE À JOUR T SET C1 = 'texte' || C1 C2 = 'a'

Définissez la valeur de la colonne C1 du tableau T1 à 2, uniquement si la valeur de la colonne C2 se trouve dans la sous-liste de valeurs de la colonne C3 du tableau T2 ayant la colonne C4 égale à 0.

MISE À JOUR T1 DÉFINIR C1 = 2 C2 DANS ( SÉLECTIONNER C3 DE T2 C4 = 0 )

Il est également possible de mettre à jour plusieurs colonnes dans une seule instruction de mise à jour :

MISE À JOUR T SET C1 = 1 , C2 = 2

Des conditions complexes et des JOINs sont également possibles :

MISE À JOUR T SET A = 1 C1 = 1 ET C2 = 2

Certaines bases de données autorisent l'utilisation non standard de la clause FROM :

MISE À JOUR a SET a .[ updated_column ] = updatevalue FROM articles a JOIN classification c ON a . articleID = c . articleID WHERE c . classID = 1

Ou sur les systèmes Oracle (en supposant qu'il existe un index sur classification.articleID) :

MISE À JOUR 
( 
SÉLECTIONNEZ * DE articles JOIN classification SUR articles . articleID = classification . articleID classification . classID = 1 ) DÉFINIR [ colonne_mise_à_jour ] = valeur_mise_à_jour

Avec le nom long de la table :

METTRE À JOUR MyMainTable EN TANT QU'ENSEMBLE a . LName = Smith a . PeopleID = 1235

Problèmes potentiels

SQL
Original text
Rate this translation
Your feedback will be used to help improve Google Translate