La requête UPDATE dans MySQL est une instruction DML utilisée pour modifier les données d'une table. La requête UPDATE doit nécessiter les clauses SET et WHERE. La clause SET est utilisée pour modifier les valeurs de la colonne spécifiée dans la clause WHERE.
La clause JOIN dans MySQL est utilisée dans l'instruction pour récupérer des données en joignant plusieurs tables au sein d'une seule requête.
UPDATE JOIN est une instruction MySQL utilisée pour effectuer des mises à jour croisées de tables, ce qui signifie que nous pouvons mettre à jour une table en utilisant une autre table avec la condition de clause JOIN. . Cette requête met à jour et modifie les données dans lesquelles plusieurs tables sont jointes en fonction de PRIMAIRE Clé et ÉTRANGER Clé et condition de jointure spécifiée. Nous pouvons mettre à jour une ou plusieurs colonnes à la fois en utilisant le Requête MISE À JOUR .
REMARQUE : L'instruction MySQL UPDATE JOIN est prise en charge à partir de la version 4.0 ou supérieure.
Syntaxe
Voici une syntaxe de base de l'instruction UPDATE JOIN pour modifier l'enregistrement dans la table MySQL :
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
Dans la syntaxe MySQL UPDATE JOIN ci-dessus :
Tout d'abord, nous avons spécifié les deux tables : la table principale (Tab1) et une autre table (tab2) après la clause UPDATE. Après la clause UPDATE, il est nécessaire de spécifier au moins une table. Ensuite, nous avons précisé les types de Clause JOINDRE , c'est-à-dire soit INNER JOIN, soit JOINT GAUCHE , qui apparaissent juste après la clause UPDATE, puis un prédicat de jointure spécifié après le mot-clé ON. Ensuite, nous devons attribuer les nouvelles valeurs aux colonnes de Tab1 et/ou Tab2 pour modification dans le tableau. Enfin, la condition de la clause WHERE est utilisée pour limiter les lignes à mettre à jour.
Comment fonctionne UPDATE JOIN dans MySQL ?
Le processus de travail UPDATE JOIN dans MySQL est le même que celui décrit dans la syntaxe ci-dessus. Mais parfois, nous constations que cette requête effectuait à elle seule la mise à jour des tables croisées sans impliquer aucune jointure. La syntaxe suivante est une autre façon de mettre à jour une table à l'aide d'une autre table :
éducation shloka mehta
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
L'instruction UPDATE ci-dessus produit le même résultat que l'UPDATE JOIN avec une clause INNER JOIN ou LEFT JOIN. Cela signifie que nous pouvons réécrire la syntaxe ci-dessus sous la forme de la syntaxe UPDATE JOIN affichée ci-dessus :
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
Prenons quelques exemples pour comprendre comment fonctionne l'instruction UPDATE JOIN dans la table MySQL.
Exemples de mise à jour de jointure
Tout d’abord, nous allons créer deux tables nommées Performance et Employé , et les deux tables sont liées via une clé étrangère. Ici, la « Performance » est un table parent , et « Employés » est le enfant tableau . Les scripts suivants créent les deux tables ainsi que leurs enregistrements.
Tableau : Performances
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
Ensuite, remplissez les enregistrements du tableau à l'aide de l'instruction INSERT.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
Ensuite, exécutez la requête SELECT pour vérifier les données comme indiqué dans l'image ci-dessous :
Tableau : Employés
CREATE TABLE Employees ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, performance INT(11) DEFAULT NULL, salary FLOAT DEFAULT NULL, CONSTRAINT fk_performance FOREIGN KEY (performance) REFERENCES Performance (performance) );
Ensuite, remplissez les enregistrements du tableau à l'aide de l'instruction INSERT.
INSERT INTO Employees (name, performance, salary) VALUES('Mary', 101, 55000), ('John', 103, 65000), ('Suzi', 104, 85000), ('Gracia', 105, 110000), ('Nancy Johnson', 103, 95000), ('Joseph', 102, 45000), ('Donald', 103, 50000);
Ensuite, exécutez la requête SELECT pour vérifier les données comme indiqué dans l'image ci-dessous :
UPDATE JOIN avec INNER JOIN Exemple
Supposons que nous souhaitions mettre à jour le salaire de l'employé en fonction de sa performance . Nous pouvons mettre à jour le salaire d'un employé dans la table Employees à l'aide de l'instruction UPDATE INNER JOIN car la performance pourcentage est stocké dans la table de performances.
Dans les tableaux ci-dessus, nous devons utiliser le performance pour rejoindre la table Employés et performances. Voir la requête ci-dessous :
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
Après avoir exécuté l'instruction ci-dessus, nous obtiendrons le résultat ci-dessous, où nous pourrons voir que la colonne de salaire de l'employé a été mise à jour avec succès.
Comprenons comment cette requête fonctionne dans MySQL. Dans la requête, nous avons spécifié uniquement la table Employees après la clause UPDATE. C'est parce que nous souhaitons modifier l'enregistrement uniquement dans la table Employés, pas dans les deux tables.
La requête vérifie les valeurs de la colonne de performances pour chaque ligne de la table « Employés » par rapport à la colonne de performances de la table « Performances ». S'il obtient la colonne de performance correspondante, il prend alors le pourcentage dans la table Performance et met à jour la colonne salaire de la table Employés. Cette requête met à jour tous les enregistrements de la table Employees car nous n'avons pas spécifié la clause WHERE dans la requête UPDATE JOIN.
UPDATE JOIN avec LEFT JOIN Exemple
Pour comprendre le UPDATE JOIN avec LEFT JOIN, nous devons d'abord insérer deux nouvelles lignes dans la table Employees :
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
Étant donné que ces employés sont de nouvelles recrues, leurs performances ne sont pas disponibles. Voir la sortie ci-dessous :
Si nous voulons mettre à jour le salaire des employés nouvellement embauchés , nous ne pouvons pas utiliser la requête UPDATE INNER JOIN. Cela est dû à l’indisponibilité de leurs données de performances dans le tableau Performances. Ainsi, nous utiliserons l’instruction UPDATE LEFT JOIN pour répondre à ce besoin.
L'instruction UPDATE LEFT JOIN dans MySQL est utilisée pour mettre à jour une ligne dans une table lorsqu'aucun enregistrement n'est trouvé dans la ligne correspondante d'une autre table.
Par exemple , si nous voulons augmenter le salaire d'un employé nouvellement embauché de 2,5%, nous pouvons le faire à l'aide de la déclaration suivante :
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
Après avoir exécuté la requête ci-dessus, nous obtiendrons le résultat comme dans l'image ci-dessous où nous pouvons voir que le salaire des employés nouvellement embauchés est mis à jour avec succès.
Dans cet article, nous avons appris l'instruction MySQL Update Join qui nous permet de modifier les données existantes dans une table avec les nouvelles données d'une autre table avec la condition de clause JOIN. Cette requête est avantageuse lorsque nous devons modifier certaines colonnes spécifiées dans la clause WHERE en utilisant les clauses INNER JOIN ou LEFT JOIN.