logo

Instruction SQL MERGE

Instruction SQL MERGE combine INSÉRER , SUPPRIMER , et Instructions UPDATE en une seule requête.

dactylographié en boucle foreach

Instruction MERGE en SQL

L'instruction MERGE dans SQL est utilisée pour effectuer des opérations d'insertion, de mise à jour et de suppression sur un table cible basé sur les résultats de JOIN avec un table source . Cela permet aux utilisateurs de synchroniser deux tables en effectuant des opérations sur une table en fonction des résultats de la seconde table.



L'instruction MERGE compare les données entre une table source et une table cible en fonction des champs clés spécifiés. Il effectue les actions appropriées telles que l'insertion de nouveaux enregistrements, la mise à jour des enregistrements existants et la suppression ou le marquage des enregistrements qui ne sont plus présents dans la source.

Cette instruction offre un moyen flexible de gérer les modifications des données et est couramment utilisée dans des scénarios tels que la maintenance Dimensions qui changent lentement ( SCD ) dans FUSIONNER DANS target_table
UTILISER source_table
SUR merge_condition
QUAND CORRESPOND ALORS
UPDATE SET colonne1 = valeur1 [, colonne2 = valeur2 …]
QUAND NE CORRESPOND PAS ALORS
INSÉRER (colonne1 [, colonne2 …])
VALEURS (valeur1 [, valeur2 …]);

Exemple d'instruction SQL MERGE

Supposons qu'il y ait deux tableaux :



  • LISTE DE PRODUITS qui est le tableau qui contient les détails actuels sur les produits disponibles avec les champs P_ID, P_NAME et P_PRICE correspondant à l'ID, au nom et au prix de chaque produit.
  • LISTE MISE À JOUR qui est le tableau qui contient les nouveaux détails sur les produits disponibles avec les champs P_ID, P_NAME et P_PRICE correspondant à l'ID, au nom et au prix de chaque produit.

deux tables


La tâche consiste à mettre à jour les détails des produits dans la PRODUCT_LIST conformément à la UPDATED_LIST.

Solution



Maintenant, afin de mieux expliquer cet exemple, divisons l'exemple en étapes.

Étape 1 : Reconnaître la table TARGET et SOURCE

Ainsi, dans cet exemple, puisqu'il est demandé de mettre à jour les produits dans PRODUCT_LIST selon UPDATED_LIST, donc PRODUCT_LIST agira comme TARGET et UPDATED_LIST agira comme table SOURCE.

table cible et source

Étape 2 : Reconnaître les opérations à effectuer.

Maintenant, comme on peut le constater, il existe trois disparités entre les tables TARGET et SOURCE, à savoir :

1. Le coût du CAFÉ dans TARGET est de 15,00 tandis que dans SOURCE il est de 25,00

 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. Il n'y a pas de produit BISCUIT dans SOURCE mais il est dans TARGET

qu'est-ce qu'obj en java
 PRODUCT_LIST 103 BISCUIT 20.00>

3. Il n'y a pas de produit CHIPS dans TARGET mais il est dans SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

Par conséquent, trois opérations doivent être effectuées dans TARGET en fonction des écarts ci-dessus. Ils sont:

1. Opération de MISE À JOUR

102 COFFEE 25.00>

2. Opération SUPPRIMER

rebase git
103 BISCUIT 20.00>

3. Opération INSÉRER

104 CHIPS 22.00>

Étape 3 : écrivez la requête SQL

Le requête SQL d'effectuer les opérations mentionnées ci-dessus à l'aide du Instruction MERGE est:

SQL
/* Selecting the Target and the Source */ MERGE PRODUCT_LIST AS TARGET  USING UPDATE_LIST AS SOURCE   /* 1. Performing the UPDATE operation */  /* If the P_ID is same,   check for change in P_NAME or P_PRICE */  ON (TARGET.P_ID = SOURCE.P_ID)  WHEN MATCHED   AND TARGET.P_NAME  SOURCE.P_NAME   OR TARGET.P_PRICE  SOURCE.P_PRICE  /* Update the records in TARGET */  THEN UPDATE   SET TARGET.P_NAME = SOURCE.P_NAME,  TARGET.P_PRICE = SOURCE.P_PRICE    /* 2. Performing the INSERT operation */  /* When no records are matched with TARGET table   Then insert the records in the target table */  WHEN NOT MATCHED BY TARGET   THEN INSERT (P_ID, P_NAME, P_PRICE)   VALUES (SOURCE.P_ID, SOURCE.P_NAME, SOURCE.P_PRICE)  /* 3. Performing the DELETE operation */  /* When no records are matched with SOURCE table   Then delete the records from the target table */  WHEN NOT MATCHED BY SOURCE   THEN DELETE /* END OF MERGE */>

Sortir:

 PRODUCT_LIST P_ID P_NAME P_PRICE 101 TEA 10.00  102 COFFEE 25.00 104 CHIPS 22.00>

Ainsi, de cette façon, nous pouvons exécuter ces trois instructions principales en SQL ensemble à l’aide de l’instruction MERGE.

Note: Tout nom autre que cible et source peut être utilisé dans la syntaxe MERGE. Ils sont utilisés uniquement pour vous donner une meilleure explication.

Points importants concernant l'instruction SQL MERGE

  • L'instruction SQL MERGE combine INSÉRER , MISE À JOUR , et SUPPRIMER opérations en une seule instruction, permettant une synchronisation efficace des données entre les tables source et cible.
  • Il offre une flexibilité dans la personnalisation de scripts SQL complexes en gérant plusieurs opérations de manipulation de données en une seule transaction.
  • L'instruction SQL MERGE est couramment utilisée dans des scénarios tels que la maintenance de dimensions à évolution lente (SCD) dans des entrepôts de données.
  • Une indexation appropriée, des conditions de jointure optimisées et un filtrage de la table source pour les enregistrements nécessaires peuvent optimiser les performances de l'instruction MERGE.