UNION e UNION ALL sono i due operatori SQL più essenziali utilizzati nel database per combinare il set di risultati di più tabelle. Questi operatori ci consentono di utilizzare più query SELECT, recuperare i risultati desiderati e quindi combinarli in un output finale . In questo articolo vedremo in cosa differiscono tra loro. Prima di fare un confronto, discuteremo brevemente di questi operatori.
Cos'è un operatore dell'Unione?
L'operatore Union in MySQL ci consente di combinare due o più risultati da più query SELECT in un unico set di risultati. Ha una funzionalità predefinita per rimuovere le righe duplicate dai tavoli. Questa sintassi dell'operatore utilizza sempre il nome della colonna nella prima istruzione SELECT come nome della colonna dell'output.
MySQL L’Unione deve seguire queste regole fondamentali:
- Il numero e l'ordine delle colonne dovrebbero essere gli stessi in tutte le query.
- La posizione delle colonne corrispondenti di ciascuna query di selezione deve avere un tipo di dati compatibile.
- Il nome della colonna selezionata nelle diverse query SELECT deve essere nello stesso ordine.
- Il nome della colonna della prima query SELECT sarà il nome della colonna dell'output.
NOTA: dobbiamo sapere che Union e Join sono diversi.
- JOIN combina i dati di più tabelle diverse, mentre UNION combina i dati di più tabelle simili.
- JOIN aggiunge l'output orizzontalmente, mentre UNION combina il risultato impostato verticalmente.
La rappresentazione visiva di seguito lo spiega più chiaramente:
Per leggere ulteriori informazioni sull'operatore dell'Unione, clicca qui.
Cos'è Union All?
L'operatore UNION ALL combina due o più risultati di più query SELECT e restituisce tutti i record in un unico set di risultati. Non rimuove le righe duplicate dall'output delle istruzioni SELECT.
Possiamo capirlo con la seguente rappresentazione visiva.
Operatore Unione vs. Unione Tutti
La seguente tabella comparativa spiega rapidamente le principali differenze:
UNIONE | UNIONE TUTTI |
---|---|
Combina il set di risultati di più tabelle e restituisce record distinti in un unico set di risultati. | Combina il set di risultati di più tabelle e restituisce tutti i record in un unico set di risultati. |
Di seguito è riportata la base sintassi dell'operatore UNIONE: SELEZIONA elenco_colonne DA tabella1 UNIONE SELEZIONA elenco_colonne DA tabella2; | Di seguito è riportata la base sintassi dell'operatore UNION ALL: SELEZIONA elenco_colonne DA tabella1 UNIONE TUTTI SELEZIONA elenco_colonne DA tabella2; |
Ha una funzione predefinita per eliminare le righe duplicate dall'output. | Non ha alcuna funzionalità per eliminare le righe duplicate dall'output. |
Suo le prestazioni sono lente perché ci vuole tempo per trovare e rimuovere i record duplicati. | Suo le prestazioni sono veloci perché non elimina le righe duplicate. |
La maggior parte degli utenti di database preferisce utilizzare questo operatore. | La maggior parte degli utenti del database non preferisce utilizzare questo operatore. |
Unione e Unione Tutti Esempio
Cerchiamo di comprendere le differenze tra gli operatori Union e Union All attraverso un esempio. Supponiamo di avere una tabella denominata ' Alunno ' E ' Studente2 ' che contiene i seguenti dati:
Tabella: Studente
Tabella: Studente2
La seguente istruzione SQL restituisce il file nome distinto delle città da entrambe le tabelle utilizzando la query UNION:
SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City;
Dopo aver eseguito l'istruzione precedente, otterremo l'output seguente perché l'operatore Union restituisce solo valori distinti.
La seguente istruzione SQL restituisce tutti i nomi delle città inclusi i duplicati da entrambe le tabelle utilizzando la query UNION ALL:
SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City;
Dopo aver eseguito l'istruzione precedente, otterremo l'output seguente perché l'operatore Union All restituisce interi record senza eliminare valori distinti.