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.

Ú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.

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.