· Andrea Pollini · basi dati · 2 min read

Quali sono le differenze tra "INNER JOIN" e "OUTER JOIN"

La differenza tra INNER JOIN e OUTER JOIN è uno dei concetti fondamentali della progettazione di database relazionali. In questo articolo, esaminiamo le differenze tra INNER JOIN e OUTER JOIN e quando è opportuno utilizzare ciascuno di essi.

La differenza tra INNER JOIN e OUTER JOIN è uno dei concetti fondamentali della progettazione di database relazionali. In questo articolo, esaminiamo le differenze tra INNER JOIN e OUTER JOIN e quando è opportuno utilizzare ciascuno di essi.

INNER JOIN e OUTER JOIN sono due tipi di join utilizzati in SQL per combinare dati da due o più tabelle. La differenza principale tra di loro sta nel modo in cui gestiscono i dati che non coincidono tra le tabelle.

INNER JOIN:

  • Restituisce solo le righe in cui c’è un record corrispondente in entrambe le tabelle.
  • Pensa all’intersezione di due insiemi di dati. Mantiene solo i punti dati comuni.

Esempio:

Supponiamo di avere due tabelle: Clienti e Ordini. La tabella Clienti contiene informazioni sui clienti, mentre la tabella Ordini contiene informazioni sugli ordini effettuati dai clienti.

SELECT *
FROM Clienti
INNER JOIN Ordini
ON Clienti.IDCliente = Ordini.IDCliente;

Questa query restituirà solo le righe della tabella Clienti per cui esiste un ordine corrispondente nella tabella Ordini. In altre parole, mostrerà solo i clienti che hanno effettuato almeno un ordine.

OUTER JOIN:

  • Restituisce tutti i record da una tabella (solitamente la sinistra) e li abbina all’altra tabella.

  • I dati mancanti nelle righe non abbinate vengono riempiti con valori nulli.

  • Esistono tre tipi di OUTER JOIN a seconda della tabella di cui si desidera mantenere tutti i record:

    • LEFT OUTER JOIN: Mantiene tutti i record dalla tabella di sinistra e li abbina alla tabella di destra.
    • RIGHT OUTER JOIN: Mantiene tutti i record dalla tabella di destra e li abbina alla tabella di sinistra.
    • FULL OUTER JOIN: Mantiene tutti i record da entrambe le tabelle e li combina in base ai criteri di corrispondenza.

Esempio:

SELECT *
FROM Clienti
LEFT OUTER JOIN Ordini
ON Clienti.IDCliente = Ordini.IDCliente;

Questa query restituirà tutti i record dalla tabella Clienti, anche se non hanno un ordine corrispondente nella tabella Ordini. Le righe senza un ordine corrispondente nella tabella Ordini avranno valori nulli per le colonne della tabella Ordini.

Riepilogo:

FunzionalitàINNER JOINOUTER JOIN
Corrispondenza datiEntrambe le tabelleUna tabella (solitamente sinistra)
Dati non coincidentiScartatiRiempiti con valori nulli
RisultatoIntersezioneUnione (con valori nulli)

INNER JOIN è utile quando si desiderano solo i dati che coincidono in entrambe le tabelle. OUTER JOIN è utile quando si desiderano tutti i dati da una tabella, anche se non hanno un corrispondenza nell’altra tabella.

Back to Blog

Related Posts

View All Posts »
Python e PostgreSQL: gestione di database

Python e PostgreSQL: gestione di database

Scopri come utilizzare Python per interagire con un database PostgreSQL, un sistema di gestione di database open source ampiamente utilizzato per la sua affidabilità e flessibilità.

Definizione di base di dati

Definizione di base di dati

Una base di dati è una raccolta di dati strutturati, organizzati in modo da consentire l'archiviazione, la gestione, la ricerca, l'aggiornamento e la manipolazione efficiente delle informazioni e progettati per essere usati in applicazioni differenti e da differenti utenti.

Definzione di DBMS

Definzione di DBMS

Esistono diversi tipi di basi di dati, a seconda della loro struttura, della tecnologia utilizzata e del modello di dati utilizzato.