Recherche…
Syntaxe
- Table de mise à jour
SET nom_colonne = valeur , nom_colonne2 = valeur_2 , ..., nom_colonne_n = valeur_n
WHERE condition ( opérateur logique condition_n)
Mise à jour de toutes les lignes
Cet exemple utilise la table Cars de l'exemple de base de données.
UPDATE Cars
SET Status = 'READY'
Cette instruction définit la colonne 'status' de toutes les lignes de la table 'Cars' sur "READY" car elle ne contient pas de clause WHERE
pour filtrer le jeu de lignes.
Mise à jour des lignes spécifiées
Cet exemple utilise la table Cars de l'exemple de base de données.
UPDATE
Cars
SET
Status = 'READY'
WHERE
Id = 4
Cette instruction définira le statut de la ligne de 'Cars' avec l'ID 4 sur "READY".
WHERE
clause WHERE
contient une expression logique qui est évaluée pour chaque ligne. Si une ligne remplit les critères, sa valeur est mise à jour. Sinon, une ligne reste inchangée.
Modification des valeurs existantes
Cet exemple utilise la table Cars de l'exemple de base de données.
UPDATE Cars
SET TotalCost = TotalCost + 100
WHERE Id = 3 or Id = 4
Les opérations de mise à jour peuvent inclure des valeurs actuelles dans la ligne mise à jour. Dans cet exemple simple, TotalCost
est incrémenté de 100 pour deux lignes:
- Le TotalCost de la voiture n ° 3 passe de 100 à 200
- Le TotalCost de la voiture n ° 4 est passé de 1254 à 1354
La nouvelle valeur d'une colonne peut être dérivée de sa valeur précédente ou de toute autre valeur de colonne dans la même table ou une table jointe.
MISE À JOUR avec des données d'une autre table
Les exemples ci-dessous PhoneNumber
un PhoneNumber
de PhoneNumber
pour tout employé qui est également Customer
et pour lequel aucun numéro de téléphone n'est actuellement défini dans la table Employees
.
(Ces exemples utilisent les tables Employees et Customers des exemples de bases de données.)
SQL standard
Mettre à jour en utilisant une sous-requête corrélée:
UPDATE
Employees
SET PhoneNumber =
(SELECT
c.PhoneNumber
FROM
Customers c
WHERE
c.FName = Employees.FName
AND c.LName = Employees.LName)
WHERE Employees.PhoneNumber IS NULL
SQL: 2003
Mettre à jour en utilisant MERGE
:
MERGE INTO
Employees e
USING
Customers c
ON
e.FName = c.Fname
AND e.LName = c.LName
AND e.PhoneNumber IS NULL
WHEN MATCHED THEN
UPDATE
SET PhoneNumber = c.PhoneNumber
serveur SQL
Mettre à jour avec INNER JOIN
:
UPDATE
Employees
SET
PhoneNumber = c.PhoneNumber
FROM
Employees e
INNER JOIN Customers c
ON e.FName = c.FName
AND e.LName = c.LName
WHERE
PhoneNumber IS NULL
Capture des enregistrements mis à jour
Parfois, on veut capturer les enregistrements qui viennent d'être mis à jour.
CREATE TABLE #TempUpdated(ID INT)
Update TableName SET Col1 = 42
OUTPUT inserted.ID INTO #TempUpdated
WHERE Id > 50