Inner join e outer join sono due modi utili per unire tabelle di database ed eseguire query sui dati da più tabelle. In questo articolo, esamineremo la differenza tra inner join e outer join in SQL.
Unione interna
Inner join restituisce righe da due o più tabelle in cui almeno una colonna ha lo stesso valore in tutte le tabelle. Se non sono presenti valori comuni, non vengono restituite righe.
Ecco la sintassi di inner join:
select * from table1 INNER JOIN table2 on table1.column_name = table2.column_name; OR select * from table1 JOIN table2 on table1.column_name = table2.column_name;
Unione esterna
Il join esterno restituisce righe da due o più tabelle in cui almeno una colonna ha un valore comune, nonché righe in cui la condizione di join non riesce. Esistono 3 tipi di outer join:
Unisci esterno sinistro
In questo caso, tutte le righe della tabella sinistra vengono mantenute nel risultato, nel caso in cui le sue condizioni di unione corrispondano ad altre tabelle, vengono restituiti i valori delle loro colonne, altrimenti vengono restituiti valori null per quelle colonne. Ecco la sintassi del join esterno sinistro.
select * from table1 LEFT OUTER JOIN table2 on table1.column_name = table2.column_name;
Unisciti all'esterno destro
In questo caso, tutte le righe della tabella di destra vengono mantenute nel risultato, nel caso in cui le sue condizioni di unione corrispondano ad altre tabelle, vengono restituiti i valori delle loro colonne, altrimenti vengono restituiti valori nulli per quelle colonne.
Ecco la sintassi del join esterno destro
select * from table1 RIGHT OUTER JOIN table2 on table1.column_name = table2.column_name;
Partecipazione esterna completa
In questo caso, vengono restituite tutte le righe di entrambe le tabelle. Se la condizione di unione è soddisfatta, le colonne vengono popolate utilizzando i valori di entrambe le tabelle. Se la condizione di join ha esito negativo, i valori di una delle tabelle vengono popolati in colonne e il resto viene popolato come null.
Differenza tra Inner join e Outer join in SQL
Ecco le differenze principali tra inner join e outer join.
Unione interiore
- Restituisce solo righe con valori di colonna comuni.
- Puoi usare la clausola INNER JOIN o JOIN. Entrambi hanno lo stesso effetto
- Restituisce null quando non ci sono valori di colonna corrispondenti tra due (o più) tabelle
- Inner Join è più veloce di Outer Join
- È utile eseguire ricerche su più tabelle
- In termini matematici, restituisce l'intersezione di due insiemi (tabelle)
Unisciti esterni
- Restituisce valori da una o più tabelle anche se non ci sono valori di colonna corrispondenti
- Per le righe senza attributi corrispondenti, restituisce null per le colonne rimanenti
- Full Outer Join e Full Join hanno lo stesso effetto.
- È più lento di inner join
- Viene utilizzato per ottenere informazioni complete in due o più tabelle
- Il join esterno completo non è supportato in MySQL. È disponibile in PostgreSQL, SQL Server, Oracle e altri database popolari.
Hai bisogno di uno strumento di reporting per MySQL? Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!