SQL - UNION vs JOIN: Una Guida Completa per Principianti

Ciao là, appassionati di SQL in erba! Sono entusiasta di essere il tuo guida in questo viaggio emozionante attraverso il mondo dell'SQL. Oggi, scopriremo i misteri di UNION e JOIN, due potenti operazioni SQL che potrebbero sembrare confuse all'inizio ma diventeranno presto i tuoi migliori amici nella manipolazione dei dati. Allora, prenditi una tazza di caffè, mettiti comodo e tuffiamoci dentro!

SQL - Union vs Join

Comprensione delle Basi

Prima di addentrarci nelle complessità di UNION e JOIN, iniziiamo con una semplice analogia. Immagina di organizzare una festa e di avere due liste di invitati: una per i tuoi amici e un'altra per la tua famiglia. Ora, hai due opzioni:

  1. Unire entrambe le liste in una lista grande (è come una UNION)
  2. Scoprire quali dei tuoi amici sono anche tuoi parenti (è come una JOIN)

Interessante, vero? Esploriamo dettagliatamente ciascuna di queste operazioni.

Funzionamento di UNION

Cos'è UNION?

UNION è come un maestro elencatore in SQL. Prende due o più istruzioni SELECT e combina i loro risultati in un singolo set di risultati. È perfetto quando vuoi unire dati da tabelle diverse che hanno una struttura simile.

UNION in Azione

Immaginiamo di avere due tabelle: employees_usa e employees_uk. Vuoi ottenere una lista di tutti i dipendenti, indipendentemente dalla loro posizione.

SELECT first_name, last_name, country
FROM employees_usa
UNION
SELECT first_name, last_name, country
FROM employees_uk;

Questa query ti darà una lista combinata di tutti i dipendenti dalle sedi USA e UK. Bel pezzo, vero?

UNION ALL: Il Cugino Includente

Ora, cosa fare se vuoi includere le voci duplicate? È qui che entra in gioco UNION ALL.

SELECT product_name, category
FROM products_2021
UNION ALL
SELECT product_name, category
FROM products_2022;

Questa query elencherà tutti i prodotti del 2021 e del 2022, inclusi i duplicati se un prodotto era disponibile in entrambi gli anni.

Punti Chiave da Ricordare

  1. UNION rimuove le righe duplicate per impostazione predefinita
  2. UNION ALL tiene tutte le righe, inclusi i duplicati
  3. Il numero e l'ordine delle colonne devono essere gli stessi in tutte le istruzioni SELECT
  4. I tipi di dati delle colonne corrispondenti devono essere compatibili

Funzionamento di JOIN

Cos'è JOIN?

Se UNION è un elencatore, JOIN è come un matchmaker. Combina righe da due o più tabelle basate su una colonna correlata tra di loro. È perfetto quando vuoi recuperare dati distribuiti su più tabelle.

Tipi di JOIN

Scopriamo i diversi tipi di JOIN utilizzando una divertente analogia. Immagina di essere a una festa danzante:

  1. INNER JOIN: Solo accoppia ballerini che sanno la stessa danza
  2. LEFT JOIN: Accoppia tutti i ballerini dalla parte sinistra, anche se non hanno un partner
  3. RIGHT JOIN: Accoppia tutti i ballerini dalla parte destra, anche se non hanno un partner
  4. FULL JOIN: Accoppia tutti i ballerini, anche se alcuni finiscono per ballare da soli

JOIN in Azione

Vediamo come funzionano questi JOIN in query SQL reali:

INNER JOIN

SELECT customers.name, orders.order_date
FROM customers
INNER JOIN orders ON customers.id = orders.customer_id;

Questa query ti mostrerà tutti i clienti che hanno effettuato ordini, insieme alle date degli ordini.

LEFT JOIN

SELECT employees.name, departments.dept_name
FROM employees
LEFT JOIN departments ON employees.dept_id = departments.id;

Questa query elencherà tutti i dipendenti, anche quelli non assegnati a nessun dipartimento.

RIGHT JOIN

SELECT products.name, categories.category_name
FROM products
RIGHT JOIN categories ON products.category_id = categories.id;

Questa query mostrerà tutte le categorie, anche quelle senza prodotti.

FULL JOIN

SELECT students.name, courses.course_name
FROM students
FULL JOIN enrollments ON students.id = enrollments.student_id
FULL JOIN courses ON enrollments.course_id = courses.id;

Questa query elencherà tutti gli studenti e tutti i corsi, anche se alcuni studenti non si sono iscritti a nessun corso o alcuni corsi non hanno studenti.

UNION vs JOIN: La Confrontazione

Ora che abbiamo esplorato sia UNION che JOIN, confrontiamoli lateralmente:

Aspetto UNION JOIN
Scopo Combina righe da tabelle simili Combina colonne da tabelle correlate
Risultato Combinazione verticale (più righe) Combinazione orizzontale (più colonne)
Struttura della Tabella Deve avere lo stesso numero di colonne Può avere un numero diverso di colonne
Gestione dei Duplicati Rimuove i duplicati (tranne UNION ALL) Tiene tutte le righe corrispondenti
Prestazioni Generalmente più veloce per grandi dataset Può essere più lento per join complessi
Caso d'Uso Combinare dati simili da fonti diverse Recuperare dati correlati su tabelle diverse

Conclusione: Scegliere tra UNION e JOIN

Allora, quando dovresti usare UNION e quando optare per JOIN? Ecco una semplice regola da seguire:

  • Usa UNION quando vuoi combinare dati simili da diverse tabelle in una singola lista.
  • Usa JOIN quando vuoi recuperare dati correlati distribuiti su più tabelle.

Ricorda, come scegliere lo strumento giusto per un lavoro, la scelta tra UNION e JOIN dipende dalle tue specifiche esigenze di dati. Con la pratica, svilupperai un'intuizione su quale utilizzare in diverse situazioni.

Spero che questa guida ti abbia aiutato a demistificare UNION e JOIN. Continua a praticare, rimani curioso, e prima di sapere, ballerai attraverso le query SQL come un professionista! Buon codice!

Credits: Image by storyset