Differenza fondamentale: i join in SQL vengono eseguiti per combinare i dati di due diverse tabelle. Un Inner Join è una condizione che risulta nelle righe che soddisfano la clausola 'where' in "tutte le tabelle"; mentre un outer join è una condizione che si traduce in quelle righe che soddisfano la clausola 'where' in "almeno una delle tabelle".
Quando si implementano i join, vengono create le tabelle temporanee, basate su colonne. Ci dovrebbero essere sempre due tabelle, per le condizioni di join. Queste condizioni, quindi unire i rispettivi componenti di una tabella con gli altri componenti e dare origine a una tabella completamente nuova. L'obiettivo di queste tabelle è di estrarre i dati e le informazioni significativi e richiesti. A seconda delle condizioni, ci sono due tipi di join, i join interni ed esterni.
SQL INNER JOIN Sintassi:
SELECT nome_colonna / i
DA tabella1
INNER JOIN table2
ON table1.column_name = table2.column_name;
La parola chiave INNER JOIN seleziona tutte le righe da entrambe le tabelle fintanto che esiste una corrispondenza tra le colonne in entrambe le tabelle.
I join interni dipendono dalla selezione dei design e delle caratteristiche del database. Di conseguenza, questi giunti interni sono usati nelle equi-join e nelle giunzioni naturali. Nell'equi join, c'è un tipo specifico di confronto che viene usato per pareggiare le due tabelle date. Quindi, questa tabella usa il predicato di uguaglianza. Il join naturale è un tipo di join di Equi.
La sintassi per Equi Join è la seguente:
S ELECT *
DA tabella1, tabella 2
WHERE table1.coloumn_name = table2.coloumn_name;
Se le colonne di un equi-join hanno lo stesso nome, la rispettiva versione SQL fornisce una notazione abbreviata opzionale che può essere espressa dal costrutto USING come:
SELEZIONARE
FROM table1 INTERNO JOIN table2 USING (column_name);
La sintassi per Natural Join è la seguente:
SELEZIONARE
FROM table1 NATURAL JOIN table2;
Un "outer join" non ha bisogno delle condizioni corrispondenti per i record. Questa condizione di join mantiene tutti gli altri record, oltre ai record non corrispondenti. Questo join viene ulteriormente distribuito nelle condizioni di join esterno sinistro, destro e completo, che vengono implementate in base alle condizioni e agli attributi della tabella desiderati.
Left Outer Join
La parola chiave LEFT JOIN restituisce tutte le righe dalla tabella sinistra (tabella1), con le righe corrispondenti nella tabella destra (tabella2). Risulta "NULL" nella parte destra quando non c'è corrispondenza.
Segue la sintassi per Left Outer Join:
SELECT nome_colonna / i
DA tabella1
LEFT OUTER JOIN table2
ON table1.column_name = table2.column_name;
Giusto outer join
La parola chiave RIGHT JOIN restituisce tutte le righe dalla tabella di destra (tabella2), con le righe corrispondenti nella tabella sinistra (tabella1). Il risultato è NULL nella parte sinistra quando non c'è corrispondenza.
Segue la sintassi per Right Outer Join:
SELECT nome_colonna / i
DA tabella1
RIGHT OUTER JOIN table2
ON table1.column_name = table2.column_name;
Full Outer Join
La parola chiave FULL OUTER JOIN restituisce tutte le righe dalla tabella sinistra (tabella1) e dalla tabella destra (tabella2). La parola chiave FULL OUTER JOIN combina entrambi i risultati dei join LEFT e RIGHT.
La sintassi per Full Outer Join è:
SELECT nome_colonna / i
DA tabella1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name;
Confronto tra Inner Join e Outer Join:
Join interno | Outer Join | |
Funzione di base | I join interni sono fondamentalmente utilizzati per trovare righe corrispondenti tra 2 tabelle. | L'outer join conserva le righe di una tabella o di entrambe le tabelle. |
Esistenza di variabili comuni | Qui la variabile comune deve obbligatoriamente essere in entrambi i tavoli. | Qui la variabile dipende solo dalla prima tabella che può o non può essere presente nella seconda tabella. |
ritorna | Inner join restituirà solo le righe in cui esiste una corrispondenza basata sul predicato di join. | Il join esterno restituirà tutte le righe indipendentemente dal fatto che siano basate sulla corrispondenza o non corrispondenti sul predicato di join. |
Abituato a | È utilizzato per visualizzare i record solo quando i record sono presenti su entrambe le tabelle. | È usato per visualizzare tutti i record in una sola tabella. |
Applicabile in | Sono applicabili in: Equi-Join e Unisciti naturale | Sono applicabili come: Left Outer Join Giusto outer join Full Outer Join |