I comandi SQL JOIN: per un’analisi dei dati efficiente
I comandi SQL JOIN sono fondamentali per interrogare e modificare i database relazionali. Consentono di combinare dati provenienti da diverse tabelle in un’unica tabella risultato, facilitando così l’analisi dei dati. Tra i vari tipi di comandi JOIN, ricordiamo INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN, ognuno adatto a un uso specifico.
Cosa sono i comandi SQL JOIN?
SQL è il linguaggio di programmazione standard per lavorare con i database, sia on-premise sia su cloud. Non consente solo di creare database relazionali, ma anche di interrogare dati mediante comandi SQL. La categoria di comandi più importanti e ampiamente utilizzati è SQL JOIN.
Queste espressioni consentono di interrogare, collegare e raggruppare i dati in modo chiaro da varie tabelle. L’unico requisito è la presenza di una connessione logica tra le tabelle, stabilita dalle corrispondenti chiavi primarie ed esterne.
Le chiavi primarie e le chiavi esterne sono fondamentali per il corretto funzionamento dei comandi JOIN SQL. Le chiavi primarie identificano le righe in modo univoco e non possono contenere valori nulli, mentre le chiavi esterne stabiliscono collegamenti tra le tabelle. Ad esempio, in una tabella dipendenti, “ID dipendente” funge da chiave primaria, mentre in una tabella automobili, la chiave primaria sarà “ID auto”. Entrambe le tabelle possono collegarsi con “ID auto” come chiave esterna nella tabella dei dipendenti.
Quali tipi di comandi SQL JOIN esistono?
I comandi JOIN sono numerosi e servono a vari scopi. Cominciamo osservando più da vicino alcuni parametri di base:
- SELECT: specifica le colonne di dati da visualizzare all’interno di un’istruzione SQL JOIN. Con un asterisco (*) consente di selezionare tutto il database.
- FROM: serve a specificare la tabella o le tabelle da cui i dati devono essere recuperati o uniti con altre tabelle.
- Comando JOIN: unisce, combina o confronta i dati selezionati da più tabelle secondo una condizione specificata, creando un set di risultati temporaneo.
- ON: specifica la condizione di JOIN, cioè il criterio secondo il quale le righe delle tabelle coinvolte in JOIN vengono raggruppate.
La sintassi di base contiene gli stessi parametri o altri simili per la maggior parte dei comandi SQL JOIN e si presenta come segue:
SELECT colonnaA, colonnaB, …
FROM tabellaA
Comando JOIN tabellaB
ON tabellaA.colonna = tabellaB.colonna
sqlCerchi una soluzione sicura e dalla performance elevata per la gestione dei database? L’hosting server SQL di IONOS ti fornisce la soluzione ideale per server e hosting, soddisfando standard elevati per la protezione dei dati. Tra le opzioni disponibili ricordiamo server cloud, server virtuali (VPS), server dedicati e hosting Linux con MSSQL, MySQL o MariaDB.
- Traffico illimitato e fino a 1 Gbit/s di larghezza di banda
- Storage SSD NVMe veloce
- Plesk Web Host Edition incluso
Nel paragrafo successivo presentiamo i principali comandi SQL JOIN.
SQL INNER JOIN
Questo comando unisce dati di due tabelle diverse in un’unica tabella, se i valori corrispondenti sono presenti in una colonna comune alle due tabelle. INNER JOIN è un comando JOIN usato spesso per impostazione predefinita, qualora non si selezioni un tipo JOIN concreto.
Esempio pratico:
INNER JOIN viene utilizzato nella tabella “ordini” con le colonne “numero dell’ordine”, “ID cliente”, ID prodotto”, “data dell’ordine”, nonché della tabella “clienti” con la colonna “ID cliente”, “cognome” e “indirizzo”. La colonna “ID cliente” funge da chiave primaria per “clienti” e da chiave esterna in “ordini”. In base all’ID cliente, INNER JOIN riunisce tutti gli ordini e dati clienti nella tabella risultato.
Questa la sintassi del comando SQL INNER JOIN:
SELECT ordini.numero dell’ordine, cliente.cognome, ordini.ID prodotto, ordini.dat dell’ordine
FROM ordini
INNER JOIN clienti
ON ordini.ID cliente = clienti.ID cliente
sqlOUTER JOIN
OUTER JOIN è un termine generico che fa riferimento a un tipo di JOIN in SQL, ad esempio i comandi LEFT JOIN, RIGHT JOIN e FULL JOIN. Diversamente da INNER JOIN, SQL OUTER JOIN non raggruppa solo righe corrispondenti in diverse tabelle, ma anche righe identiche con il valore NULL. Per una spiegazione più dettagliata rimandiamo ai comandi LEFT JOIN, RIGHT JOIN e FULL JOIN.
SQL LEFT JOIN
Il comando LEFT JOIN raggruppa tutti i valori di una tabella a sinistra con i valori corrispondenti di una tabella a destra. Qualora non esistano valori corrispondenti, il comando restituisce il valore NULL.
Esempio pratico:
SQL LEFT JOIN unisce sia record di dati corrispondenti che non corrispondenti di una tabella di sinistra “clienti” con una tabella di destra “veicoli” utilizzando la colonna comune “ID veicolo”. A differenza di INNER JOIN, il comando restituisce valori non corrispondenti con NULL.
Questa la sintassi del comando SQL LEFT JOIN:
SELECT *
FROM clienti
INNER JOIN veicoli
ON clienti.ID veicolo = veicoli.ID veicolo
sqlSQL RIGHT JOIN
Il comando RIGHT JOIN raggruppa i valori di una tabella di destra con i valori corrispondenti di una tabella di sinistra. Qualora i valori non corrispondano, il comando restituisce un valore NULL nelle colonne della tabella di sinistra.
Esempio pratico:
In base all’ID cliente, SQL RIGHT JOIN inserisce i valori da una tabella di destra “clienti”, tutti i valori selezionati da una tabella di sinistra “ordini”. Qualora i valori non corrispondano, il comando restituisce il valore NULL, ad esempio se per un ID cliente non esistono né ordini, né il cognome.
Questa la sintassi del comando SQL RIGHT JOIN:
SELECT ordini.numero dell’ordine, cliente.cognome, ordini.ID prodotto, ordini.data dell’ordine
FROM clienti
RIGHT JOIN ordini
ON ordini.ID_cliente = clienti.ID cliente
sqlSQL FULL JOIN
Il comando FULL JOIN è una combinazione di LEFT JOIN e RIGHT JOIN ed è anche conosciuto come FULL OUTER JOIN. Tale comando unisce tutti i record di dati e le colonne di entrambe le tabelle. Se tali valori non corrispondono, vengono restituiti valori NULL.
Esempio pratico:
in base all’ID cliente, il comando FULL JOIN raggruppa tutti i dati corrispondenti e non corrispondenti della tabella di destra “collaboratori” con la tabella di sinistra “reparto”. Qualora non sia possibile assegnare un reparto specifico, questo presenta un valore NULL.
Di seguito la sintassi del comando SQL FULL JOIN:
SELECT *
FROM collaboratori
FULL JOIN clienti
ON collaboratori.ID reparto = reparto.ID reparto
sqlCROSS JOIN
CROSS JOIN è noto anche come JOIN cartesiano. Combina ciascuna riga della tabella di sinistra con ciascuna riga della tabella di destra, indipendentemente dalla presenza o meno di sovrapposizioni. Poiché restituisce tutte le combinazioni possibili tra i dati delle due tabelle, non ha bisogno della clausola ON per la condizione JOIN.
Esempio pratico:
CROSS JOIN unisce tutti i dati della tabella “prodotti” a destra con la tabella “ordini” a sinistra.
Questa la sintassi del comando SQL CROSS JOIN:
SELECT *
FROM prodotti
CROSS JOIN ordini
sqlNATURAL JOIN
Il comando NATURAL JOIN unisce tutti i record di dati di due tabelle in base alle colonne comuni. Il parametro ON viene omesso perché non è richiesta l’esistenza di una colonna comune. Poiché il comando unisce automaticamente colonne comuni della tabella, la clausola ON non è necessaria.
Esempio pratico:
Il comando NATURAL JOIN unisce le tabelle “team” e “reparto” in base alle colonne comuni fra le due tabelle. Il comando restituisce risultati solo se esiste almeno una colonna comune.
SQL NATURAL JOIN si scrive in questo modo:
SELECT *
FROM ordini
NATURAL JOIN clienti
sqlSQL SELF JOIN
Il comando SQL SELF JOIN si usa per unire una tabella a sé stessa, trattandola sia come tabella di sinistra che di destra. Per un’operazione SELF JOIN puoi quindi utilizzare qualsiasi altro comando. Nella sintassi, t1
e t2
fungono da alias per la tabella di destra e di sinistra, in quanto sono la stessa tabella.
Questa la sintassi di base riprendendo l’esempio LEFT JOIN:
SELECT *
FROM tabellaA AS t1
LEFT JOIN tabellaA AS t2
ON t1.nome colonna = t2.nome colonna
sqlPer una rapida panoramica sulle possibili applicazioni del linguaggio SQL, consulta anche la nostra introduzione a SQL con esempi.