cours
SQL UPDATE avec JOIN : Comment cela fonctionne-t-il ?
La cohérence des données est importante pour la fiabilité et l'intégrité des bases de données relationnelles. Lorsque vous modifiez des données existantes dans des tableaux apparentés, nous utilisons l'instruction UPDATE
avec la clause JOIN
pour assurer la cohérence des données. L'opération UPDATE
with JOIN
est prise en charge par SQL Server et permet d'assurer une synchronisation précise des données entre les tableaux.
L'opération SQL JOIN
permet des mises à jour plus complexes que les opérations sur un seul tableau, grâce à des clés étrangères partagées entre les différents tableaux. L'opération UPDATE
with JOIN
est utile pour les développeurs et les administrateurs de bases de données car elle améliore l'efficacité et réduit les risques d'incohérence des données.
Avant de commencer, je vous recommande de suivre le cours Introduction à SQL Server de DataCamp pour vous familiariser avec le fonctionnement des bases de données SQL Server. Ce tutoriel a été rédigé spécifiquement pour le serveur SQL. Consultez également notre tutoriel, Introduction aux jointures SQL, pour apprendre à utiliser JOIN
lorsque vous travaillez avec plusieurs tableaux dans SQL.
Comment utiliser SQL UPDATE avec JOIN
Dans SQL Server, l'opération UPDATE
with JOIN
vous permet de mettre à jour les enregistrements d'un tableau en fonction des données correspondantes d'un autre tableau. Cette technique est particulièrement utile pour synchroniser les données de plusieurs tableaux.
Utilisation de SQL UPDATE avec INNER JOIN
La fonction INNER JOIN
de SQL permet d'extraire les lignes/enregistrements contenant les données correspondantes dans les deux tableaux. Lorsqu'elle est utilisée avec l'instruction UPDATE
, l'instruction INNER JOIN
garantit que seuls les tableaux de la table cible qui ont des correspondances dans la table jointe sont mis à jour.
La structure typique du site UPDATE
avec INNER JOIN
consiste à spécifier le tableau cible qui doit être mis à jour et à définir les colonnes à mettre à jour. La structure comprend également l'utilisation du site INNER JOIN
pour le relier à un autre tableau basé sur une colonne commune afin de ne mettre à jour que les enregistrements requis.
INNER JOIN exemple
Supposons que vous gériez une base de données de vente au détail dans laquelle vous devez mettre à jour un tableau Sales
pour le synchroniser avec les modifications apportées au tableau Customer
. Un client a récemment changé de méthode de contact préférée et vous souhaitez que ces changements se reflètent dans les deux tableaux. Vous utiliserez UPDATE
avec INNER JOIN
pour vous assurer que seuls les enregistrements de vente liés aux clients qui ont mis à jour leurs coordonnées sont modifiés sans affecter d'autres lignes de données.
-- Update the Sales table based on the new preferred contact methods in the Customers table
UPDATE s
SET s.ContactMethod = c.PreferredContactMethod
FROM Sales s
INNER JOIN Customers c ON s.CustomerID = c.CustomerID
WHERE c.CustomerID IN (3, 7, 9);
UPDATE avec INNER JOIN : meilleures pratiques
Lorsque vous utilisez UPDATE
avec INNER JOIN
, tenez compte des meilleures pratiques suivantes pour des requêtes efficaces.
-
Utilisez des index sur les colonnes de jointure : Assurez-vous que les colonnes utilisées dans la condition
JOIN
sont indexées pour optimiser les performances et accélérer l'exécution de la requête. -
Limiter la portée de la mise à jour : Utilisez la clause
WHERE
pour vous assurer que seules les lignes pertinentes sont mises à jour et améliorer les performances de la requête.
Utilisation de SQL UPDATE avec LEFT JOIN
Une adresse LEFT JOIN
est utilisée pour extraire tous les enregistrements du tableau de gauche (premier) et les enregistrements correspondants du tableau de droite (deuxième). Une requête avec LEFT JOIN
renverra les résultats de NULL
à partir du bon tableau s'il n'y a pas de résultats correspondants. Lorsqu'elle est utilisée avec l'instruction UPDATE
, l'instruction LEFT JOIN
peut mettre à jour des enregistrements même s'il n'y a pas de données correspondantes dans le second tableau, ce qui est utile pour compléter les données manquantes. Consultez notre Fiche d'aide sur les jointures SQL si vous souhaitez revoir les jointures SQL.
JOINT A LA GAUCHE exemple
Imaginons que vous gériez une base de données pour un magasin de détail en ligne. Le tableau Customers
contient une liste de tous les clients, tandis que le tableau Orders
contient les détails des commandes passées par certains de ces clients. Vous utiliserez le site LEFT JOIN
pour récupérer et mettre à jour les détails de la commande de tous les clients, y compris ceux qui n'ont pas encore passé de commande. Cette méthode remplit les données manquantes pour les clients qui n'ont pas passé de commande avec une valeur NULL
ou une valeur spécifiée.
Notre exemple avec LEFT JOIN
sera un peu différent car LEFT JOIN
renvoie les valeurs de NULL
si aucun enregistrement correspondant n'est trouvé dans le bon tableau. C'est pourquoi il est important de savoir comment traiter ces valeurs NULL
. Vous pouvez gérer les valeurs NULL
en définissant une valeur par défaut dans les colonnes à mettre à jour. En utilisant la fonction COALESCE()
, le site LEFT JOIN
inclura une condition pour une valeur par défaut pour les données manquantes. La requête suivante montre comment définir une valeur par défaut pour les valeurs NULL
.
-- Update all customers to set default values where OrderStatus and OrderDate are NULL
UPDATE c
SET
c.OrderStatus = COALESCE(o.OrderStatus, 'No Orders'),
c.OrderDate = COALESCE(o.OrderDate, '2023-01-01')
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID;
-- Select from the updated Customers table
SELECT *
FROM Customers;
Vous pouvez également utiliser les fonctions COALESCE()
ou IFNULL()
pour traiter les valeurs NULL
qui impliquent des calculs avant la mise à jour des colonnes. Consultez notre tutoriel sur la fonction SQL COALESCE() pour en savoir plus.
Meilleures pratiques pour UPDATE avec LEFT JOIN
Lorsque vous utilisez UPDATE
avec LEFT JOIN
, tenez compte des meilleures pratiques suivantes pour des requêtes efficaces.
-
Utilisez des références explicites aux colonnes : Au lieu d'utiliser
SELECT *
, spécifiez explicitement les colonnes que vous souhaitez mettre à jour afin de rendre votre requête plus claire et d'éviter les mises à jour involontaires. -
Utilisez des index sur les colonnes de jointure : Assurez-vous que les colonnes utilisées dans la condition
JOIN
sont indexées pour améliorer les performances de l'opérationJOIN
et le temps d'exécution global de la requête.
Considérations sur les performances des mises à jour SQL avec jointure
Ua compréhension des implications en termes de performances de l'utilisation de UPDATE
avec JOIN
dans SQL est importante pour garantir l'exécution efficace de vos requêtes. Les performances de ces opérations peuvent être influencées par plusieurs facteurs, notamment la taille des tableaux utilisés, le type de jointure utilisé et la présence d'index appropriés.
Index et vitesse d'interrogation
L'indexation des colonnes impliquées dans la condition de jointure est importante pour accélérer le processus de mise à jour. Si vous indexez les colonnes de manière appropriée, l'opération ne localisera que les tableaux correspondants lors de la jointure, réduisant ainsi le temps nécessaire à l'analyse du tableau.
Impact des grands ensembles de données
Lorsque vous travaillez avec de grands ensembles de données, l'exécution des requêtes peut être plus lente en raison d'opérations gourmandes en ressources. Prenez en compte les meilleures pratiques suivantes pour atténuer les problèmes de performance avec les grands ensembles de données. Essayez également le cursus SQL Server for Database Administrators si vous êtes amené à concevoir ou à maintenir régulièrement des bases de données dans le cadre de votre travail.
-
Mises à jour des lots : Répartissez les mises à jour en lots plus petits afin de réduire la charge de la base de données et de mettre à jour les enregistrements de manière efficace.
-
Limiter la portée de la mise à jour : Lorsque vous utilisez la clause
WHERE
, vous spécifiez les lignes à mettre à jour, ce qui réduit le temps de traitement des requêtes.
Erreurs courantes et comment les éviter
Vous pouvez rencontrer certaines erreurs courantes lorsque vous utilisez UPDATE
avec JOIN
dans SQL Server. Ces erreurs peuvent entraîner des problèmes de performance ou la mise à jour de données non souhaitées. Voici quelques-unes de ces erreurs et comment les éviter.
Mises à jour involontaires
Si vous ne spécifiez pas correctement la condition de jointure, le site UPDATE
avec JOIN
mettra à jour plus d'enregistrements que prévu. Cette erreur entraînera la mise à jour d'un tableau entier au lieu du sous-ensemble requis. Pour éviter cette erreur, veillez à toujours utiliser une condition JOIN
précise pour mettre à jour les lignes requises.
Produits cartésiens
Un produit cartésien se produit lorsque la condition de jointure est incorrecte ou manquante, ce qui conduit la requête à faire correspondre chaque ligne du tableau de gauche avec chaque ligne du tableau de droite. Ce problème peut ralentir l'opération d'interrogation et produire des résultats inexacts. Pour éviter cette erreur, assurez-vous toujours que la condition JOIN
est correctement définie. Veillez également à indiquer les colonnes correctes pour appliquer la condition de jointure.
Alternatives à SQL UPDATE avec JOIN
Bien que UPDATE
avec JOIN
soit une méthode puissante pour mettre à jour des enregistrements dans des tableaux liés, il existe d'autres méthodes pour effectuer la mise à jour. Vous trouverez ci-dessous quelques options.
Sous-requêtes
Les sous-requêtes sont une alternative importante à JOIN
lorsque vous souhaitez effectuer des mises à jour sur la base d'une simple condition. Avec les sous-requêtes, vous éviterez de multiplier les tableaux complexes en spécifiant la condition dans la sous-requête.
L'exemple suivant montre comment utiliser une sous-requête pour mettre à jour le tableau Sales
avec le dernier CustomerStatus
du tableau Customers
.
-- Update the CustomerStatus in the Sales table
UPDATE Sales
-- Set the CustomerStatus in Sales to corresponding value from the Customers table
SET CustomerStatus = (
-- Fetch CustomerStatus from the Customers table for the matching CustomerID
SELECT CustomerStatus
FROM Customers
WHERE Customers.CustomerID = Sales.CustomerID
)
-- Update rows in Sales where a matching CustomerID exists in the Customers table
WHERE EXISTS (
-- Subquery to check if a matching CustomerID exists in the Customers table
SELECT 1
FROM Customers
WHERE Customers.CustomerID = Sales.CustomerID
);
Déclaration de fusion
L'instruction MERGE
est une commande SQL polyvalente qui vous permet d'effectuer les opérations UPDATE
, INSERT
ou DELETE
dans une seule requête basée sur la comparaison de deux tableaux. L'instruction MERGE
est utile lorsque vous devez synchroniser des données entre deux tableaux, en gérant les lignes correspondantes et non correspondantes.
L'utilisation de l'instruction MERGE
est utile car elle fournit une méthode concise pour effectuer plusieurs opérations en une seule requête. La syntaxe de la déclaration MERGE
est la suivante.
-- Merge data from the source table into the target table
MERGE INTO target_table AS target
USING source_table AS source
-- Define the common key between the source and target tables
ON target.common_column = source.common_column
-- When a match is found in both tables based on the common key
WHEN MATCHED THEN
-- Update the target table's column with the corresponding value from the source table
UPDATE SET target.column = source.column
-- When a row exists in the source table but not in the target table
WHEN NOT MATCHED THEN
-- Insert the new data into the target table
INSERT (column1, column2)
VALUES (source.column1, source.column2)
-- When a row exists in the target table but not in the source table
WHEN NOT MATCHED BY SOURCE THEN
-- Delete the row from the target table
DELETE;
Conclusion
Il est important de comprendre comment utiliser UPDATE
avec JOIN
dans SQL Server pour mettre à jour efficacement les données d'un tableau à l'autre dans les bases de données relationnelles. Cette technique vous permet de mettre à jour les enregistrements d'un tableau en fonction des données correspondantes d'un autre tableau, assurant ainsi la cohérence et la synchronisation des données entre les tableaux apparentés. L'application de ces techniques et bonnes pratiques peut améliorer les opérations de votre base de données, en garantissant une gestion précise, efficace et fiable des données.
Si vous souhaitez approfondir vos compétences en SQL, je vous recommande de consulter le cursus SQL Server Fundamentals de DataCamp pour améliorer vos compétences en analyse de données. Le cours Writing Functions and Stored Procedures in SQL Server vous aidera également à apprendre à manipuler efficacement les données dans SQL Server. Si vous préparez votre entretien SQL, je vous recommande de lire notre article de blog, 20 Top SQL Joins Interview Questions pour vous aider à vous préparer. Enfin, si vous cherchez à appliquer vos compétences en SQL dans une carrière d'ingénieur de données, envisagez également de suivre notre cursus d'ingénieur de données en Python, complété par une certification à la fin.
Devenez ingénieur en données
Questions fréquemment posées sur SQL
Quel est l'intérêt d'utiliser UPDATE avec JOIN en SQL ?
UPDATE
avec JOIN
vous permet de mettre à jour les enregistrements d'un tableau en fonction des données correspondantes d'un autre tableau.
Quelle est la différence entre un INNER JOIN et un LEFT JOIN lorsqu'il est utilisé dans une instruction UPDATE ?
Un INNER JOIN
ne met à jour que les enregistrements qui ont des lignes correspondantes dans les deux tableaux, tandis qu'un LEFT JOIN
met à jour tous les enregistrements du tableau cible, y compris ceux qui n'ont pas de ligne correspondante dans le tableau joint, en complétant les données manquantes ou en traitant les valeurs NULL
.
Quels sont les problèmes de performance de l'UPDATE avec JOIN en SQL ?
Les tableaux/ensembles de données volumineux peuvent affecter les performances d'interrogation de UPDATE
avec JOIN
, car ils nécessitent une plus grande puissance de traitement.
Quelles bases de données supportent UPDATE avec JOIN IN SQL ?
Le concept UPDATE
with JOIN
fonctionne avec SQL Server, MySQL et PostgreSQL, bien que la syntaxe diffère en fonction de la base de données. Oracle ne prend pas en charge UPDATE
avec JOIN
directement et exige une approche différente en utilisant des sous-requêtes ou l'instruction MERGE
.
Quelles sont les alternatives à UPDATE avec JOIN en SQL ?
L'utilisation de sous-requêtes ou de l'instruction MERGE
sont des alternatives appropriées à UPDATE
avec JOIN
.
Apprenez SQL avec DataCamp
cours
Manipulation de données en SQL
cours