Mettre à jour plusieurs tables avec une seule requête dans MySQL

Rashmi Patidar 30 janvier 2023
  1. Avantages de la mise à jour de plusieurs tables avec une seule requête dans MySQL
  2. Utilisez le mot-clé UPDATE pour mettre à jour plusieurs tables avec une seule requête dans MySQL
Mettre à jour plusieurs tables avec une seule requête dans MySQL

Il peut y avoir des cas où un utilisateur souhaite effectuer des mises à jour simultanées dans la table logiquement liée. Ces tables logiquement liées sont liées les unes aux autres via certains attributs.

Avantages de la mise à jour de plusieurs tables avec une seule requête dans MySQL

Des attributs similaires dans les tables sont utilisés pour créer une requête de mise à jour. La requête de mise à jour effectue plusieurs mises à jour de lignes dans différentes tables en fonction des conditions.

Les requêtes de mise à jour de plusieurs tables sont adaptées lorsqu’une situation similaire se présente. Les avantages de l’utilisation de cette requête de mise à jour de plusieurs tables sont :

  1. Cela conduit à des mises à jour dans les lignes à la fois au lieu de faire des mises à jour individuelles dans chaque table.
  2. Cela réduit également le temps global de mise à jour des entrées dans différentes tables.
  3. Cela réduit les risques de mises à jour incohérentes dans les tables.
  4. Réponse similaire de toutes les tables à un moment donné.

Utilisez le mot-clé UPDATE pour mettre à jour plusieurs tables avec une seule requête dans MySQL

Dans la requête de mise à jour de plusieurs tables, chaque enregistrement remplissant une condition est mis à jour. Même si les critères correspondent plusieurs fois, la ligne n’est mise à jour qu’une seule fois.

La syntaxe de mise à jour de plusieurs tables ne peut pas être utilisée avec les mots clés ORDER BY et LIMIT.

La syntaxe du mot-clé UPDATE :

UPDATE table1, table2, ...
    SET column1 = value1,
        column2 = value2,
        ...
[WHERE conditions]

Multiple Update n’est pas un mot-clé combiné présent dans le langage MySQL. La syntaxe est formée par la combinaison de divers mots-clés qui aident au regroupement de deux tables ou plus, comme le mot-clé join.

Les types de jointures sont utilisés pour faire une seule requête pour mettre à jour plus d’une table à la fois. Comprenons cela en mettant à jour plusieurs tables à la fois.

Considérons deux tables nommées library et stu_book. Et considérez le cas où un livre est délivré par la bibliothèque à un étudiant.

Le nombre de livres dans la bibliothèque diminue, tandis que le nombre de livres avec des étudiants augmente. Et c’est le scénario où deux appels distincts sont nécessaires.

Pour éviter des mises à jour séparées dans une table RDBMS, nous mettons à jour les lignes de deux tables avec une seule requête. Vous trouverez ci-dessous la liste des instructions à exécuter avant l’appel de mise à jour.

Liste des requêtes avant la requête proprement dite sur les tables :

  • Créez deux entités nommées library et stu_book.
  • Le schéma pour les deux est partagé ci-dessous :

    schéma des tables de bibliothèque et stu_book

  • Insérez individuellement certaines valeurs communes dans les tableaux, comme indiqué ci-dessous.

    enregistrements insérés dans les tableaux pour présenter le scénario

  • Essayez de mettre en œuvre le cas d’utilisation en effectuant des augmentations ou des diminutions simultanées dans les deux tables.

    plusieurs mises à jour dans deux tables à la fois en utilisant une seule requête

Requête pour exécuter l’instruction MySQL :

UPDATE library l, stu_book s
    SET l.book_count = l.book_count - 2,
        s.book_count = s.book_count + 2
WHERE l.id = s.book_id;

Dans la requête ci-dessus, en interne, la jointure interne combine les deux tables et opère sur la table combinée après avoir vérifié les contraintes sur les tables. Lorsqu’aucun mot-clé n’est spécifié, la jointure interne est appliquée.

Jointures comme jointure externe, la jointure externe droite, l’utilisateur doit utiliser le mot-clé correct. La jointure ne peut être effectuée que dans les cas où les deux tables regroupées ont un attribut similaire/correspondant.

Le mot-clé SET est utilisé avec le mot-clé UPDATE pour définir les nouvelles valeurs dans les lignes existantes. Il remplace les anciennes valeurs en écrivant de nouvelles données dessus.

Ici, set met à jour le nombre de livres de la table stu_book, et le même nombre de comptes est diminué du nombre de livres library.

Le nombre n’est pas mis à jour pour toutes les lignes des deux tables. Au lieu de cela, la restriction est maintenue par le mot-clé WHERE.

Le mot-clé WHERE effectue le filtrage réel des lignes. Le mot-clé filtre la ligne après avoir vérifié les conditions dans les tables.

Ici, ce mot-clé dit library_id doit correspondre à book_id de la table stu_book.

La sortie répertorie le résultat pour le nombre total de lignes affectées dans les deux tables. Vous trouverez ci-dessous la sortie qui confirme le nombre de lignes affectées.

Query OK, 2 rows affected (0.02 sec)
Rows matched: 2  Changed: 2  Warnings: 0

Vous trouverez ci-dessous le résultat final de la requête ci-dessus dans l’environnement d’exécution local ou l’invite de commande.

Capture d’écran d’exécution locale :

sortie après le déclenchement de la mise à jour

Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Article connexe - MySQL Table