logo

Istruzione SQL MERGE

Istruzione SQL MERGE combina INSERIRE , ELIMINARE , E Dichiarazioni di aggiornamento in un'unica query.

indice di stringa Java di

Istruzione MERGE in SQL

L'istruzione MERGE in SQL viene utilizzata per eseguire operazioni di inserimento, aggiornamento ed eliminazione su a tabella di destinazione in base ai risultati di JOIN con a tabella di origine . Ciò consente agli utenti di sincronizzare due tabelle eseguendo operazioni su una tabella in base ai risultati della seconda tabella.



L'istruzione MERGE confronta i dati tra una tabella di origine e una tabella di destinazione in base ai campi chiave specificati. Esegue azioni appropriate come l'inserimento di nuovi record, l'aggiornamento di quelli esistenti e l'eliminazione o la segnalazione dei record non più presenti nell'origine.

Questa istruzione fornisce un modo flessibile per gestire le modifiche ai dati ed è comunemente utilizzata in scenari come la manutenzione Dimensioni che cambiano lentamente ( SCD ) In UNISCI IN target_table
USANDO source_table
ON condizione_unione
QUANDO ABBINATO POI
AGGIORNAMENTO SET colonna1 = valore1 [, colonna2 = valore2 …]
QUANDO NON ABBINATO ALLORA
INSERISCI (colonna1 [, colonna2 …])
VALORI (valore1 [, valore2 …]);

Esempio di istruzione SQL MERGE

Supponiamo che ci siano due tabelle:



  • ELENCO_PRODOTTI che è la tabella che contiene i dettagli attuali sui prodotti disponibili con i campi P_ID, P_NAME e P_PRICE corrispondenti all'ID, al nome e al prezzo di ciascun prodotto.
  • AGGIORNATO_LIST che è la tabella che contiene i nuovi dettagli sui prodotti disponibili con i campi P_ID, P_NAME e P_PRICE corrispondenti all'ID, nome e prezzo di ciascun prodotto.

due tavoli


L'attività è aggiornare i dettagli dei prodotti in PRODUCT_LIST secondo UPDATED_LIST.

Soluzione



Ora, per spiegare meglio questo esempio, dividiamo l’esempio in passaggi.

imposta in Java

Passo 1: Riconoscere la tabella TARGET e SOURCE

Quindi in questo esempio, poiché viene chiesto di aggiornare i prodotti in PRODUCT_LIST secondo UPDATED_LIST, quindi PRODUCT_LIST fungerà da TARGET e UPDATED_LIST fungerà da tabella SOURCE.

tabella di destinazione e di origine

Passaggio 2: riconoscere le operazioni da eseguire.

Ora, come si può vedere, ci sono tre disallineamenti tra la tabella TARGET e la tabella SOURCE, che sono:

1. Il costo del CAFFÈ in TARGET è di 15,00 mentre in FONTE è di 25,00

 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. Non c'è nessun prodotto BISCUIT in SOURCE ma è in TARGET

 PRODUCT_LIST 103 BISCUIT 20.00>

3. Non c'è nessun prodotto CHIPS in TARGET ma è in SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

Pertanto, è necessario eseguire tre operazioni nel TARGET in base alle discrepanze di cui sopra. Sono:

1. Operazione di AGGIORNAMENTO

102 COFFEE 25.00>

2. Operazione CANCELLAZIONE

confrontare con la stringa
103 BISCUIT 20.00>

3. Operazione INSERISCI

104 CHIPS 22.00>

Passaggio 3: scrivere la query SQL

IL Interrogazione SQL eseguire le operazioni sopra indicate con l'ausilio del Dichiarazione MERGE È:

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

Produzione:

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

Quindi, in questo modo, possiamo eseguire tutte e tre le istruzioni principali in SQL insieme con l'aiuto dell'istruzione MERGE.

Nota: Nella sintassi MERGE è possibile utilizzare qualsiasi nome diverso da destinazione e origine. Sono usati solo per darti una spiegazione migliore.

Punti importanti sull'istruzione SQL MERGE

  • L'istruzione SQL MERGE combina INSERIRE , AGGIORNAMENTO , E ELIMINARE operazioni in un'unica istruzione, consentendo un'efficiente sincronizzazione dei dati tra le tabelle di origine e di destinazione.
  • Fornisce flessibilità nella personalizzazione di script SQL complessi gestendo più operazioni di manipolazione dei dati in un'unica transazione.
  • L'istruzione SQL MERGE viene comunemente utilizzata in scenari come la gestione delle dimensioni a modifica lenta (SCD) nei data warehouse.
  • L'indicizzazione corretta, le condizioni di join ottimizzate e il filtraggio della tabella di origine per i record necessari possono ottimizzare le prestazioni dell'istruzione MERGE.