Dichiarazione di unione SQL Server

Dichiarazione di unione SQL Server

I database riguardano le operazioni CRUD. Creiamo, leggiamo, aggiorniamo ed eliminiamo i dati in varie tabelle di database. Tuttavia, la maggior parte delle operazioni CRUD in un database richiedono una logica separata per le attività, come l'inserimento, l'aggiornamento e l'eliminazione.

Questo può diventare ridondante rapidamente. SQL Server fornisce un modo efficiente di eseguire operazioni CRUD utilizzando l'istruzione Merge. Microsoft ha introdotto l'istruzione Merge in SQL Server 2008 e superiore.

Questo tutorial capirà come utilizzare l'istruzione di unione SQL Server per eseguire più operazioni in un'unica query.

Le basi

Facciamo un esempio di dove hai due tavoli. Le tabelle di destinazione e di origine. Se è necessario aggiornare i valori nella tabella di destinazione in base ai valori delle tabelle di origine, è possibile prendere tre percorsi:

  1. Il primo è dove la sorgente contiene righe mancanti nella tabella di destinazione. È necessario un'istruzione Insert nella tabella di destinazione in tal caso.
  2. Il secondo è dove la tabella di destinazione contiene record mancanti dalla tabella di origine. Qui, abbiamo bisogno di un'istruzione Elimina per rimuovere le righe dal target.
  3. L'ultimo scenario è dove un record in sorgente e target contiene valori diversi. Abbiamo bisogno di un'istruzione di aggiornamento alla tabella di destinazione in tal caso.

Per eseguire le operazioni di cui sopra individualmente, dobbiamo creare tre logiche separate per l'inserto, eliminare e aggiornare le operazioni. Tuttavia, possiamo combinarli usando l'istruzione unione.

Possiamo esprimere la sintassi dell'istruzione unione come mostrato:

Unisci Target_table usando Source_table
A condizione
Se abbinato
Quindi update_operation
Se non abbinato - dalla tabella target
Quindi insert_operation
Se non abbinato per fonte
Quindi elimina;

Identifichiamo la tabella di destinazione e di origine e li specifichiamo nella clausola di unione. Quindi specifichiamo una condizione. La condizione specificata controlla il modo in cui le righe dalla tabella di origine sono abbinate alle tabelle di destinazione. Pensalo come una condizione di join.

Il blocco successivo contiene le azioni da eseguire in base al risultato della condizione specificata.

Se la condizione provoca una corrispondenza, aggiorniamo i record nella tabella di destinazione dalla tabella di origine.

Tuttavia, se i record non sono eguali (dalla tabella di destinazione), inseriamo i record mancanti nella tabella di destinazione.

Infine, se i record non sono eguali (dalla tabella di destinazione), eliminiamo i record senza pari dalla tabella di destinazione.

SQL Server - Unisci esempio

Facciamo un semplice esempio. Supponiamo che abbiamo due tabelle contenenti informazioni sul prodotto come Products_target e Product_Source.

Lo snippet di codice di esempio mostra le query SQL per creare e aggiornare le tabelle specificate.

Usa SalesDB;
Crea table Products_target (
Product_id int not Null Primary Key Identity (1,1),
Product_name Varchar (255) non null,
Prezzo decimale (10,2)
);
Inserisci in Products_target (Product_Name, Price)
VALORI ('Office Desk', 531),
("Sedia da ufficio", 379.99),
("Bottiglia d'acqua", 69.99);
Crea table Products_source (
Product_id int not Null Primary Key Identity (1,1),
Product_name Varchar (255) non null,
Prezzo decimale (10,2)
);
Inserisci in Products_Source (Product_Name, Price)
Valori ("Office Desk", 531.00),
("Lampada da scrivania", 50.00),
("Sedia da ufficio", 699.99),
("Bottiglia d'acqua", 89.95);

Ora abbiamo due tabelle che si esibiscono come target e fonte. I record memorizzati nelle tabelle sono come mostrato:

Per sincronizzare i dati tra la tabella di destinazione e di origine, possiamo eseguire una query di unione come mostrato nell'esempio seguente:

Unisci prodotti_target come t
Utilizzo di Products_Source come s
On (s.Product_id = t.Codice prodotto)
Se abbinato
Quindi aggiornare il set
T.Product_name = s.nome del prodotto,
T.prezzo = s.prezzo
Se non abbinato per bersaglio
Quindi insert (product_name, prezzo)
Valori (s.Product_name, s.prezzo)
Se non abbinato per fonte
Quindi elimina;

Una volta eseguita la query sopra, il server SQL eseguirà le operazioni specificate in base alla condizione risultante.

Possiamo interrogare le tabelle dopo l'operazione di unione come:

Seleziona * da Products_Source;
Seleziona * da Products_target;

I valori risultanti sono come mostrati nell'esempio seguente:


Come noterai, i record della tabella di origine e target sono sincronizzati con i valori aggiornati, inseriti ed eliminati.

Conclusione

Questa guida mostra come lavorare con l'istruzione di unione SQL Server. Ti consente di eseguire insert, aggiornare ed eliminare le operazioni su tabelle in base alle condizioni risultanti.

Grazie per aver letto!