logo

Instrukcja SQL MERGE

Instrukcja SQL MERGE łączy WSTAWIĆ , USUWAĆ , I AKTUALIZUJ oświadczenia w jedno zapytanie.

co to jest obj w Javie

Instrukcja MERGE w SQL

Instrukcja MERGE w języku SQL służy do wykonywania operacji wstawiania, aktualizowania i usuwania na pliku tabela docelowa na podstawie wyników JOIN z a tabela źródłowa . Dzięki temu użytkownicy mogą synchronizować dwie tabele, wykonując operacje na jednej tabeli w oparciu o wyniki z drugiej tabeli.



Instrukcja MERGE porównuje dane pomiędzy tabelą źródłową i docelową na podstawie określonych pól kluczowych. Wykonuje odpowiednie działania, takie jak wstawianie nowych rekordów, aktualizacja istniejących oraz usuwanie lub oznaczanie rekordów, których już nie ma w źródle.

Ta instrukcja zapewnia elastyczny sposób zarządzania zmianami danych i jest powszechnie używana w scenariuszach takich jak konserwacja Powoli zmieniam wymiary ( SCD ) W POŁĄCZ SIĘ Z tabelą docelową
KORZYSTANIE Z tabeli_źródłowej
ON warunek_łączenia
KIEDY DOPASOWANO
UPDATE SET kolumna1 = wartość1 [, kolumna2 = wartość2…]
KIEDY NIE DOPASOWANO WTEDY
WSTAW (kolumna1 [, kolumna2…])
WARTOŚCI (wartość1 [, wartość2…]);

Przykład instrukcji SQL MERGE

Załóżmy, że istnieją dwie tabele:



  • LISTA PRODUKTÓW czyli tabela zawierająca aktualne szczegóły dotyczące dostępnych produktów z polami P_ID, P_NAME i P_PRICE odpowiadającymi identyfikatorowi, nazwie i cenie każdego produktu.
  • ZAKTUALIZOWANA LISTA czyli tabela zawierająca nowe szczegóły dotyczące dostępnych produktów z polami P_ID, P_NAME i P_PRICE odpowiadającymi identyfikatorowi, nazwie i cenie każdego produktu.

dwa stoły


Zadanie polega na zaktualizowaniu szczegółów produktów na LISTIE PRODUCT zgodnie z UPDATED_LIST.

Rozwiązanie



Teraz, aby lepiej wyjaśnić ten przykład, podzielmy go na kroki.

Krok 1: Rozpoznaj tabelę TARGET i SOURCE

Zatem w tym przykładzie, ponieważ poproszono o aktualizację produktów na LIŚCIE PRODUCT zgodnie z listą UPDATED_LIST, zatem PRODUCT_LIST będzie działać jako TARGET, a UPDATED_LIST będzie działać jako tabela SOURCE.

tabela docelowa i źródłowa

Krok 2: Rozpoznaj operacje, które należy wykonać.

Jak widać, istnieją trzy niezgodności między tabelami TARGET i SOURCE, którymi są:

1. Koszt KAWY w TARGET wynosi 15,00 natomiast w SOURCE 25,00

 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. W ŹRÓDLE NIE ma produktu BISKUPOWEGO, ale jest w TARGET

przycinanie ciągu Java
 PRODUCT_LIST 103 BISCUIT 20.00>

3. W TARGET nie ma produktu CHIPS, ale jest on w ŹRÓDŁO

 UPDATED_LIST 104 CHIPS 22.00>

Dlatego w TARGET-ie należy wykonać trzy operacje zgodnie z powyższymi rozbieżnościami. Oni są:

1. Operacja AKTUALIZUJ

102 COFFEE 25.00>

2. USUŃ operację

deterministyczne automaty skończone
103 BISCUIT 20.00>

3. Operacja WSTAW

104 CHIPS 22.00>

Krok 3: Napisz zapytanie SQL

The Zapytanie SQL wykonać powyższe operacje za pomocą Oświadczenie MERGE Jest:

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

Wyjście:

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

W ten sposób możemy wykonać wszystkie trzy główne instrukcje w języku SQL za pomocą instrukcji MERGE.

Notatka: W składni MERGE można użyć dowolnej nazwy innej niż cel i źródło. Są one używane wyłącznie w celu lepszego wyjaśnienia.

Ważne uwagi dotyczące instrukcji SQL MERGE

  • Instrukcja SQL MERGE łączy WSTAWIĆ , AKTUALIZACJA , I USUWAĆ operacje w jedną instrukcję, umożliwiając efektywną synchronizację danych pomiędzy tabelami źródłowymi i docelowymi.
  • Zapewnia elastyczność w dostosowywaniu złożonych skryptów SQL poprzez obsługę wielu operacji manipulacji danymi w jednej transakcji.
  • Instrukcja SQL MERGE jest powszechnie używana w scenariuszach takich jak utrzymywanie wolno zmieniających się wymiarów (SCD) w hurtowniach danych.
  • Prawidłowe indeksowanie, zoptymalizowane warunki łączenia i filtrowanie tabeli źródłowej pod kątem niezbędnych rekordów mogą zoptymalizować wydajność instrukcji MERGE.