logo

SQL příkaz MERGE

SQL příkaz MERGE kombinuje VLOŽIT , VYMAZAT , a AKTUALIZOVAT prohlášení do jednoho dotazu.

jvm v jazyce Java

Příkaz MERGE v SQL

Příkaz MERGE v SQL se používá k provádění operací vložení, aktualizace a odstranění na a cílová tabulka na základě výsledků JOIN with a zdrojová tabulka . To umožňuje uživatelům synchronizovat dvě tabulky prováděním operací na jedné tabulce na základě výsledků z druhé tabulky.



Příkaz MERGE porovnává data mezi zdrojovou tabulkou a cílovou tabulkou na základě zadaných klíčových polí. Provádí příslušné akce, jako je vkládání nových záznamů, aktualizace stávajících a mazání nebo označování záznamů, které již ve zdroji nejsou.

Toto prohlášení poskytuje flexibilní způsob správy změn dat a běžně se používá ve scénářích, jako je údržba Pomalu se mění rozměry ( SCD ) v SLOUČIT DO target_table
POMOCÍ source_table
ON merge_condition
KDYŽ SE PAK TAK VYHODNOTIL
AKTUALIZOVAT SADA sloupec1 = hodnota1 [, sloupec2 = hodnota2 …]
KDYŽ SE TAK NEPŘIDÍ
INSERT (sloupec1 [, sloupec2 …])
HODNOTY (hodnota1 [, hodnota2 …]);

Příklad příkazu SQL MERGE

Předpokládejme, že existují dvě tabulky:



  • SEZNAM PRODUKTŮ což je tabulka, která obsahuje aktuální podrobnosti o dostupných produktech s poli P_ID, P_NAME a P_PRICE odpovídajícími ID, názvu a ceně každého produktu.
  • UPDATED_LIST což je tabulka, která obsahuje nové podrobnosti o dostupných produktech s poli P_ID, P_NAME a P_PRICE odpovídajícími ID, názvu a ceně každého produktu.

dva stoly


Úkolem je aktualizovat podrobnosti o produktech v PRODUCT_LIST podle UPDATED_LIST.

Řešení



Nyní, abychom tento příklad lépe vysvětlili, rozdělme příklad na kroky.

inurl:.git/head

Krok 1: Rozpoznejte tabulku TARGET a SOURCE

Takže v tomto příkladu, protože je požadována aktualizace produktů v PRODUCT_LIST podle UPDATED_LIST, bude tedy PRODUCT_LIST fungovat jako TARGET a UPDATED_LIST bude fungovat jako tabulka SOURCE.

cílová a zdrojová tabulka

Krok 2: Rozpoznejte operace, které mají být provedeny.

Nyní, jak je vidět, existují tři neshody mezi tabulkou TARGET a SOURCE, které jsou:

1. Cena kávy v TARGETu je 15,00, zatímco ve SOURCE je 25,00

 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. Ve SOURCE není žádný produkt BISCUIT, ale je v TARGET

 PRODUCT_LIST 103 BISCUIT 20.00>

3. V TARGET není žádný produkt CHIPS, ale je ve SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

V TARGETu je proto potřeba provést tři operace podle výše uvedených nesrovnalostí. Oni jsou:

1. Operace AKTUALIZACE

102 COFFEE 25.00>

2. Operace DELETE

řetězec zřetězení v jazyce Java
103 BISCUIT 20.00>

3. Operace INSERT

104 CHIPS 22.00>

Krok 3: Napište dotaz SQL

The SQL dotaz provádět výše uvedené operace pomocí prohlášení MERGE je:

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 */>

Výstup:

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

Tímto způsobem tedy můžeme provádět všechny tyto tři hlavní příkazy v SQL společně s pomocí příkazu MERGE.

Poznámka: V syntaxi MERGE lze použít jakýkoli jiný název než cíl a zdroj. Používají se pouze pro lepší vysvětlení.

Důležité body o SQL příkazu MERGE

  • Příkaz SQL MERGE kombinuje VLOŽIT , AKTUALIZACE , a VYMAZAT operace do jednoho příkazu, což umožňuje efektivní synchronizaci dat mezi zdrojovými a cílovými tabulkami.
  • Poskytuje flexibilitu při přizpůsobování složitých SQL skriptů zpracováním více operací manipulace s daty v jedné transakci.
  • Příkaz SQL MERGE se běžně používá ve scénářích, jako je udržování pomalu se měnících dimenzí (SCD) v datových skladech.
  • Správné indexování, optimalizované podmínky spojení a filtrování zdrojové tabulky pro potřebné záznamy mohou optimalizovat výkon příkazu MERGE.