logo

Stavek SQL MERGE

Stavek SQL MERGE združuje VSTAVI , IZBRIŠI , in UPDATE izjave v eno samo poizvedbo.

dedovanje java

Stavek MERGE v SQL

Stavek MERGE v SQL se uporablja za izvajanje operacij vstavljanja, posodabljanja in brisanja na a ciljna tabela na podlagi rezultatov JOIN z a izvorna tabela . To uporabnikom omogoča sinhronizacijo dveh tabel z izvajanjem operacij v eni tabeli na podlagi rezultatov iz druge tabele.

Stavek MERGE primerja podatke med izvorno in ciljno tabelo na podlagi določenih ključnih polj. Izvaja ustrezna dejanja, kot je vstavljanje novih zapisov, posodabljanje obstoječih in brisanje ali označevanje zapisov, ki niso več prisotni v viru.



Ta izjava zagotavlja prilagodljiv način za upravljanje sprememb podatkov in se pogosto uporablja v scenarijih, kot je vzdrževanje Počasi spreminjajoče se dimenzije ( SCD ) v ZDRUŽI V ciljno_tabelo
UPORABA izvorne_tabele
ON merge_pogoj
KO SE UJEMA POTEM
UPDATE SET stolpec1 = vrednost1 [, stolpec2 = vrednost2 …]
KO SE NE UJEMA TAKOJ
VSTAVI (stolpec1 [, stolpec2 …])
VREDNOSTI (vrednost1 [, vrednost2 …]);

Primer izjave SQL MERGE

Recimo, da obstajata dve tabeli:

  • PRODUCT_LIST ki je tabela, ki vsebuje trenutne podrobnosti o izdelkih, ki so na voljo s polji P_ID, P_NAME in P_PRICE, ki ustrezajo ID-ju, imenu in ceni vsakega izdelka.
  • POSODOBLJENO_SEZNAM ki je tabela, ki vsebuje nove podrobnosti o izdelkih, ki so na voljo s polji P_ID, P_NAME in P_PRICE, ki ustrezajo ID-ju, imenu in ceni vsakega izdelka.

dve mizi


Naloga je posodobiti podrobnosti izdelkov na seznamu PRODUCT_LIST glede na UPDATED_LIST.

rešitev

Zdaj, da bi bolje razložili ta primer, ga razdelimo na korake.

1. korak: Prepoznajte tabelo CILJ in VIR

Torej v tem primeru, ker je pozvan, da posodobi izdelke v PRODUCT_LIST v skladu s UPDATED_LIST, bo torej PRODUCT_LIST deloval kot TARGET, UPDATED_LIST pa kot tabela SOURCE.

ciljno in izvorno tabelo

2. korak: Prepoznajte operacije, ki jih je treba izvesti.

Kot je zdaj razvidno, obstajajo tri neujemanja med TARGET in SOURCE tabelo, ki so:

1. Cena KAVE v TARGET je 15,00 medtem ko je v SOURCE 25,00

ponavljanje zemljevida v Javi
 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. V SOURCE ni izdelka BISCUIT, vendar je v TARGET

 PRODUCT_LIST 103 BISCUIT 20.00>

3. V TARGET ni izdelka CHIPS, vendar je v SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

Zato je treba izvesti tri operacije v TARGET glede na zgornja odstopanja. To so:

1. Operacija POSODOBITEV

102 COFFEE 25.00>

2. Operacija DELETE

json iz predmeta java
103 BISCUIT 20.00>

3. Operacija INSERT

104 CHIPS 22.00>

3. korak: Napišite poizvedbo SQL

The SQL poizvedba za izvajanje zgoraj omenjenih operacij s pomočjo Stavek 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 */>

Izhod:

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

Tako lahko na ta način izvedemo vse te tri glavne stavke v SQL skupaj s pomočjo stavka MERGE.

Opomba: V sintaksi MERGE je mogoče uporabiti katero koli ime, razen cilja in vira. Uporabljajo se le za boljšo razlago.

Pomembne točke o izjavi SQL MERGE

  • Stavek SQL MERGE združuje VSTAVI , NADGRADNJA , in IZBRIŠI operacije v en sam stavek, kar omogoča učinkovito sinhronizacijo podatkov med izvornimi in ciljnimi tabelami.
  • Zagotavlja prilagodljivost pri prilagajanju zapletenih skriptov SQL z obravnavanjem več operacij manipulacije podatkov v eni transakciji.
  • Stavek SQL MERGE se običajno uporablja v scenarijih, kot je vzdrževanje počasi spreminjajočih se dimenzij (SCD) v podatkovnih skladiščih.
  • Pravilno indeksiranje, optimizirani pogoji združevanja in filtriranje izvorne tabele za potrebne zapise lahko optimizirajo delovanje stavka MERGE.