Introduzione ai tipi di join in SQL

Una clausola Join in SQL ha lo scopo di combinare righe da due o più tabelle. Il processo di combinazione delle righe dipende da una colonna ad esse correlata. I quattro diversi tipi di join in SQL sono denominati come join interno, join sinistro, join destro e full join. Prima di poter davvero iniziare a utilizzare qualsiasi tipo di join, abbiamo bisogno di un RDBMS o di un sistema di gestione di database relazionali in cui caricare i dati. Uno dei modi molto semplici per comprendere i join è l'uso del diagramma di Venn. L'uso di un diagramma di Venn semplifica la misurazione di tutte le relazioni possibili e logiche tra i diversi set di dati. Cerchiamo di capirlo uno per uno usando il diagramma di Venn. Più avanti capiremo la differenza tra questi usando alcuni esempi pratici. Supponiamo che nel nostro database siano presenti due set di dati archiviati sotto forma di Tabella 1 e Tabella 2. Esiste una relazione tra le due tabelle specificata sotto forma di chiave primaria e concetto di chiave esterna. Se si uniscono due tabelle con una sorta di relazione, la rappresentazione del diagramma di Venn dello scenario sarà qualcosa del genere,

La quantità di questa sovrapposizione determinerà l'entità della somiglianza tra le due tabelle, ovvero la tabella A e la tabella B. Ciò significa che il numero di record della tabella uno, che corrispondono ai record della tabella due, è rappresentato dalla sezione di sovrapposizione. Questo è un sottoinsieme di dati. Otteniamo quattro diversi tipi di join in base al sottoinsieme di dati che stiamo raccogliendo dalle due tabelle.

Sintassi di Join:

SELECT column-names FROM table-name1 JOIN table-name2 ON column-name1 = column-name2 WHERE condition

Tipi di join in SQL

  1. Inner Join
  2. Sinistra Join
  3. Partecipa a destra
  4. Partecipazione completa

Di seguito spieghiamo i diversi tipi di join in dettaglio.

1. Join interno

In un join interno, selezioniamo solo i dati comuni in entrambe le tabelle. (cioè, parte 3 qui) Per renderlo più preciso, tutti i record di entrambe le tabelle corrispondenti alla condizione menzionata con il join vengono raccolti in questo join.

Sintassi di Inner Join:

SELECT column-names FROM table-name1 INNER JOIN table-name2 ON column-name1 = column-name2 WHERE condition

2. Join sinistro

Nel join sinistro, selezioniamo tutti i dati dalla tabella di sinistra e dalla tabella di destra selezioniamo solo il set di dati che corrisponde alla condizione menzionata con il join (qui area 1 + 3)

Sintassi del join sinistro:

SELECT column-names FROM table-name1 LEFT JOIN table-name2 ON column-name1 = column-name2 WHERE condition

3. Partecipa a destra

Nel join destro, selezioniamo tutti i dati dalla tabella destra e dalla tabella sinistra selezioniamo solo il set di dati che corrisponde alla condizione menzionata con il join (qui 3 + 2)

Sintassi di Right Join:

SELECT column-names FROM table-name1 RIGHT JOIN table-name2 ON column-name1 = column-name2 WHERE condition

4. Partecipazione completa

Nell'unione completa, tutti i record di entrambe le tabelle vengono uniti e selezionati indipendentemente dalla condizione menzionata con l'unione soddisfatta o meno. (qui 1 + 2 + 3)

Sintassi di Full Join:

SELECT column-names FROM table-name1 FULL JOIN table-name2 ON column-name1 = column-name2 WHERE condition

Esempi di join in SQL

Considera le due tabelle riportate di seguito:

1. Esempio di un ORDER_DETAILS

L'ordine della tabella contiene i dettagli dell'ordine effettuato dal cliente, come l'id dell'ordine, il numero di prodotti ordinati, l'importo dell'ordine, l'id del cliente che ha effettuato l'ordine e la data in cui è stato effettuato l'ordine. Tale tipo di tavolo può essere utilizzato da qualsiasi sito Web online per la memorizzazione dei dettagli dell'ordine.

ORDER_DETAILS Tabella:

ID ordine No_of_Items Ammontare dell'ordine Identificativo del cliente Data dell'ordine
123 3 5500 P_1 2019/01/20
234 2 6500 P_12 2019/02/10
345 1 10000 P_13 2019/05/27
456 4 4000 P_14 2019/11/07
567 2 20656 P_1 2019/12/15
678 3 15000 P_11 2019/10/27

2. Esempio di CUSTOMER_DETAILS

Ora prendiamo un altro tavolo in cui verranno archiviati i dettagli del cliente in modo da poter consegnare l'ordine ai rispettivi indirizzi. La tabella dei clienti avrà quindi i dettagli del cliente come id cliente (cust_id) che sarà unico per ogni cliente. Ora il nome e il cognome sono memorizzati nel campo chiamato - Cust_First_Name e Cust_Last_Name. Gli altri campi memorizzeranno le informazioni come l'id e-mail, il numero di cellulare del cliente insieme all'indirizzo, codice PIN, città e stato. Quindi, possiamo vedere che la nostra tabella dei clienti sarà simile a:

Tabella CUSTOMER_DETAILS:

Cust_Id Cust_First_Name Cust_Last_Name Codice PIN Indirizzo Cust_Mobile Città Stato Cust_email
P_50 Alice Peter 111111 330 xyz street 123 Bangalore KA
P_12 Giacomo Dsouza 155.511 Colonia di 420 abc 234 Hyderabad AP
P_15 Harry Vasaio 123456 551 mg di strada 444 Noida Delhi
P_40 miley Parker 111121 11 piedi di strada 224 Bangalore KA
P_10 Herman cespuglio 123423 34 th thanco Street 432 Delhi Delhi
P_18 Dan Marrone 134523 50 a strada indipendente 145 Gurugram Haryana
P_20 Giacomo Russel 111111 101 mg di strada 678 Bangalore KA
P_1 miley Madison 100011 45 ° layout kaverappa 987 Chennai TN

Ora usando questo esempio, cerchiamo di capire la funzionalità dei join. Possiamo vedere che la relazione tra le due tabelle, ovvero la tabella ORDER_DETAILS e la tabella CUSTOMER_DETAILS, viene stabilita dalla chiave che ha il valore dell'ID cliente, ovvero Customer_Id, che è una chiave primaria nella tabella CUSTOMER_DETAILS e una chiave esterna nella ORDER_DETAILS tabella.

Alcuni punti importanti da notare qui prima di procedere sono:

  • Non tutti i clienti nella nostra tabella CUSTOMER_DETAILS hanno effettuato una richiesta d'ordine.
  • Non tutte le richieste d'ordine che abbiamo nella nostra tabella ORDER_DETAILS hanno un customer_id che è presente nella nostra tabella CUSTOMER_DETAILS, il che significa che per alcuni ordini non ci sono dettagli del cliente.

3. Join interno

Inner Join ti fornirà solo i record per i quali è soddisfatta la condizione.

Query:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
inner join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Produzione:

Cust_First_Name Cust_email No_of_Items Ammontare dell'ordine Data dell'ordine
miley 3 5500 2019/01/20
Giacomo 2 6500 2019/02/10
miley 2 20656 2019/12/15

4. Join sinistro

Left Join ti fornirà tutti i record dalla tabella di sinistra, ovvero la tabella CUSTOMER_DETAILS. Se non ci sono ordini effettuati dal cliente, verrà restituito un valore null per le colonne nella tabella ORDER_DETAILS.

Query:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
left join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Produzione:

Cust_First_Name Cust_email No_of_Items Ammontare dell'ordine Data dell'ordine
Alice NULLO NULLO NULLO
Giacomo 2 6500 2019/02/10
Harry NULLO NULLO NULLO
miley NULLO NULLO NULLO
Herman NULLO NULLO NULLO
Dan NULLO NULLO NULLO
Giacomo NULLO NULLO NULLO
miley 3 5500 2019/01/20
miley 2 20656 2019/12/15

5. Partecipa a destra

Bene, Join ti fornirà tutti i record dalla tabella giusta, ovvero la tabella ORDER_DETAILS. Se non sono stati trovati record dei clienti per l'ordine, verrà restituito un valore null per le colonne nella tabella CUSTOMER_DETAILS.

Query:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
right join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Produzione:

Cust_First_Name Cust_email No_of_Items Ammontare dell'ordine Data dell'ordine
miley 3 5500 2019/01/20
Giacomo 2 6500 2019/02/10
NULLO NULLO 1 10000 2019/05/27
NULLO NULLO 4 4000 2019/11/07
miley 2 20656 2019/12/15
NULLO NULLO 3 15000 2019/10/27

6. Partecipazione completa

Full Join ti darà tutti i record specificati da entrambe le tabelle.

Query:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
full join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Produzione:

Cust_First_Name Cust_email No_of_Items Ammontare dell'ordine Data dell'ordine
Alice NULLO NULLO NULLO
Giacomo 2 6500 2019/02/10
Harry NULLO NULLO NULLO
miley NULLO NULLO NULLO
Herman NULLO NULLO NULLO
Dan NULLO NULLO NULLO
Giacomo NULLO NULLO NULLO
miley 3 5500 2019/01/20
miley 2 20656 2019/12/15
NULLO NULLO 1 10000 2019/05/27
NULLO NULLO 4 4000 2019/11/07
NULLO NULLO 3 15000 2019/10/27

Vantaggi dei join in SQL

  1. Esecuzione più rapida che significa recupero più rapido delle colonne desiderate.
  2. Ottimizzato, leggibile e comprensibile
  3. Aumento delle prestazioni.

Conclusione

Come visto, usiamo i JOIN per aggiungere e ottenere i campi da diverse tabelle.

  • Inner Join recupera i record in cui viene soddisfatta la condizione specificata.
  • Sinistra Join ti darà tutte le righe dalla tabella di sinistra, anche quando la condizione data non corrisponde.
  • Right Join ti darà tutte le righe dalla tabella di sinistra, anche quando la condizione data non corrisponde.
  • Full Join restituisce tutte le righe quando c'è una corrispondenza in una delle tabelle.
  • Le query di join possono essere utilizzate con comandi come: SELEZIONA, INSERISCI, AGGIORNA, ELIMINA.
  • I join vanno anche d'accordo con diverse clausole come: GROUP BY, SUB QUERIES, DOVE, FUNZIONI AGGREGATE, ecc.

Articolo raccomandato

Questa è stata una guida ai tipi di join in SQL. Qui discutiamo i diversi tipi di join in SQL e i suoi vantaggi insieme ad esempi. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. Vantaggi di NoSQL
  2. Strumenti di gestione SQL
  3. Database in SQL
  4. Carattere jolly in SQL
  5. I 6 migliori tipi di join in MySQL con esempi