Panoramica dei tipi di join in SQL Server
La clausola Join, la parola chiave JOIN è unita più tabelle in un set di risultati. La clausola FROM dovrà includere tutte le tabelle. Separa ogni tabella con una clausola WHERE in genere inclusa.
Possiamo inserire l'espressione booleana che restituisce vero o falso e tali espressioni possono fare riferimento a colonne in tutte le tabelle.
Tipi di join in SQL Server
Esistono diversi tipi di join
- CROSS JOIN
- UNIONE INTERNA
- ISCRIVITI ESTERNI
- SINISTRA ESTERNO UNISCITI
- ISCRIVITI ESTERNO GIUSTO
- UNISCITI ESTERNI COMPLETI
- SELF JOIN
Cerchiamo di comprendere ciascuno di questi join in dettaglio: -
1) Cross Join
- Questo è il JOIN più semplice
- Restituisce tutte le righe da entrambe le tabelle
- Nessuna clausola WHERE
- Questo è anche il meno utile
- È molto inefficiente
- Crea un prodotto cartesiano
- Parola chiave CROSS implicita
Esempio
Quindi tutti dalla prima tabella con tutti i dati della seconda tabella senza alcun tentativo di corrispondenza, quindi questa è la cosa che non vuoi fare.
Cerca la clausola FROM in cui sono presenti più tabelle e non esiste alcuna clausola WHERE.
2) Inner Join
Output della query:
Le tue righe iniziale e ultima hanno valori di coordinamento coinvolti con C2. Le file centrali di solito non si incontrano. Il risultato dell'ultima estremità fornisce tutti i valori attraverso le righe iniziali e iniziali, ma non include quella riga della sezione centrale non corrispondente.
- Questo è il tipico JOIN
- Ciò ha enfatizzato la natura relazionale del database
- Ci consente di abbinare il valore della colonna in una delle tabelle al valore della colonna in un'altra delle tabelle.
- La chiave primaria in una delle tabelle e una chiave esterna in una delle altre tabelle.
Esempio
Qui p.person_id è la nostra chiave primaria nella nostra tabella delle persone,
email_address_person_id è la nostra chiave esterna nella tabella degli indirizzi email.
Diamo un'occhiata al tavolo delle persone
Abbiamo quelle quattro file. E poi tutte le partite all'interno della tabella degli indirizzi e-mail.
Quindi, alla fine, dovremmo prendere tre persone perché abbiamo una persona Shannon che non ha un indirizzo e-mail
Uscita query:
Quindi otteniamo i dati solo dove c'è una corrispondenza tra le due colonne in ciascuna delle tabelle
3) Join esterno
- INNER JOIN non tratta i valori NULL
- OUTER JOIN funziona anche quando non c'è corrispondenza nella seconda tabella.
- Colonne NULL se nessuna corrispondenza nella seconda tabella
- FULL OUTER JOIN restituisce tutte le righe unite
- NULL quando nessuna corrispondenza in nessuna delle tabelle
a) Join esterno sinistro
Output della query: Sei anche iniziale, le ultime righe hanno valori di coordinamento coinvolti con C2. Le file centrali di solito non si incontrano. Il risultato dell'ultima fine potrebbe mantenere tutte le righe della prima tabella, ma in realtà tralascerà la riga non corrispondente attraverso la seconda tabella.
- Un altro JOIN relativo a NULL
- Tutte le righe dal lato sinistro verranno restituite
- NULL per tavolo laterale destro non corrispondente
Esempio
Uscita query:
Si nota che esiste una riga nella tabella Persona che non ha valori nella tabella degli indirizzi e-mail. Quindi il LEFT OUTER JOIN ci darà.
b) Join esterno destro
Output della query:
Sei anche iniziale, le ultime righe hanno valori di coordinamento coinvolti con C2. Le file centrali di solito non si incontrano. Il risultato dell'ultima fine potrebbe mantenere tutte le righe della seconda tabella, ma in realtà tralascerà la riga non corrispondente attraverso la prima tabella.
- Di fronte a JOIN ESTERNO SINISTRA
- Verranno restituite tutte le righe dal lato destro
- NULL per una tabella laterale sinistra non corrispondente
Esempio Uscita query:
Otteniamo tre risultati. Ecco il nostro risultato UNIONE ESTERNA DESTRA in cui abbiamo la riga della tabella degli indirizzi e-mail che non ha una riga corrispondente nella tabella di destra.
4) Join esterno completo
Esempio
Uscita query:
Riusciamo a combinare il risultato di LEFT OUTER JOIN e RIGHT OUTER JOIN
5) Self Join
- SELF non è una parola chiave. È solo questa l'idea che puoi un tavolo su se stesso
- Strano ma a volte utile
- Nessuna sintassi speciale
- La stessa tabella sul lato sinistro e destro di JOIN
- Utile quando una tabella contiene dati gerarchici
Esempio
SELEZIONARE *
DA ordini
ISCRIVITI alle iscrizioni
ON ordini.subscription_id = subscriptions.subscription_id;
Otteniamo la tabella degli ordini e la tabella degli abbonamenti e UNISCiamo alla tabella utilizzando SELEZIONA tutte le colonne.
Per ottenere il risultato
Conclusione:
I join sono il modo in cui realizziamo davvero il modello relazionale. Il modello relazionale consiste nel separare i dati, normalizzarli in più tabelle, ma in grado di riunirli di nuovo quando vogliamo vedere quelle relazioni. E i diversi tipi di join ci consentono di farlo in modi leggermente diversi.
Articoli consigliati
Questa è stata una guida ai tipi di join nel server SQL. Qui discutiamo la panoramica e i tipi di join in SQL con i loro esempi. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -
- Che cos'è SQL Server?
- Carriere in SQL Server
- Formazione SQL PL
- Operatori MySQL
- I 6 migliori tipi di join in MySQL con esempi