Introduzione a Joins in MySQL

MySQL Joins svolge un ruolo importante quando dobbiamo unire due tabelle insieme in base a uno o più valori comuni condivisi da due tabelle.

Esempio : consideriamo che abbiamo due tabelle, una è la tabella dei dipendenti composta da employee_id, phn_no, stipendio e dipartimento. Un'altra tabella è la tabella degli indirizzi che consiste in dipendente_id e indirizzo. Se dobbiamo scoprire ID_impiegato, dipartimento e indirizzo, dobbiamo unire entrambi i tavoli che condividono il campo comune come impiegato_id.

Query :

SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;

I 6 migliori tipi di join in MySQL

Esistono diversi tipi di join in MySQL. I join di seguito indicati si trovano nell'uso quotidiano e sono molto utili quando si eseguono molte query in scenari reali.

  1. Join interno
  2. Join sinistro
  3. Unisciti a destra
  4. Join esterno completo
  5. Self-join
  6. Cross join

1. Join interno

Il join interno restituisce il valore corrispondente in entrambe le tabelle.

Questa porzione arriva nell'output come mostrato nella figura sopra.

Esempio 1:

emp_id Dipartimento Stipendio
1001 IT 1000
1002 CSR 800
1003 IT 2000

Questa è la tabella dei dipendenti.

emp_id Indirizzo
1002 Delhi
1003 Bangalore
1005 BBSR

Ecco la tabella degli indirizzi di quei dipendenti. La chiave primaria emp_id dell'impiegato della tabella padre viene utilizzata come chiave esterna nella tabella degli indirizzi che è la tabella figlio. Troveremo emp_id, dipartimento e indirizzo di un dipendente utilizzando il join interno. Perché stati di join interno Recupera i record presenti / comuni in entrambe le tabelle.

Query:

SELECT emp.emp_id, emp.department, ads.address
FROM employee AS emp
INNER JOIN address AS ads
ON emp.emp_id = ads.emp_id;

Diamo un alias al nome della tabella solo per evitare più tempo. Nella query sopra, usiamo l'alias 'emp' per la tabella dei dipendenti e 'ads' per la tabella degli indirizzi.

Produzione:

emp_id Dipartimento Indirizzo
1002 CSR Delhi
1003 IT Bangalore

Come nell'esempio precedente emp_id 1002 e 1003 erano comuni tra le due tabelle, il comando join interno recupera l'output solo per questi dipendenti.

Esempio n. 2:

Qui abbiamo 2 tabelle, table1 e table2. Entrambe le tabelle sono costituite da un attributo ciascuno rispettivamente come colonna A e colonna B.

Tabella 1

Colonna A
1
1
2
3
4

Tavolo 2

Colonna B
1
2
2
3
3
5

Query:

If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;

Produzione:

Colonna A Colonna B
1 1
1 Nullo
2 2
Nullo 2
3 3
Nullo 3

2. Join sinistro

Questo join restituisce tutti i record dalla tabella di sinistra e i record corrispondenti dalla tabella di destra.

Come mostra il diagramma sopra, è costituito da tutti i record della tabella A e da quelli comuni di A e B.

Esempio 1:

Identificativo del cliente Nome Città
1 Harish Cuttack
2 David Bangalore
3 Mahesh Bhubaneswar
4 Sam Kolkata

Tabella dei clienti:

ID ordine Quantità Identificativo del cliente
19868 7.575, 00 4
19976 434.654, 00 2
99.680 7.457, 00 3

Tabella degli ordini:

Scopriremo customer_id, name e order_id associati utilizzando il join sinistro.

Query:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;

Produzione:

Identificativo del cliente NomeID ordine
1 Harish nullo
2 David 19976
3 Mahesh 99.680
4 Sam 19868

Come discusso, questo join sinistro ha recuperato tutti gli ID cliente dalla tabella dei clienti e quelli comuni tra le due tabelle. Per customer_id '1' verrà visualizzato come 'null' perché '1' customer_id non è presente nella tabella degli ordini.

Esempio n. 2:

Qui abbiamo 2 tabelle, table1 e table2. Entrambe le tabelle sono costituite da un attributo ciascuno rispettivamente come colonna A e colonna B.

Tabella 1

Colonna A
1
1
2
2
3

Tavolo 2

Colonna B
1
2
2
4
4
5
5

Query:

If we apply left join on above 2 tables,
SELECT * FROM table1
LEFT JOIN table2
ON columnA = columnB;

Colonna A Colonna B
1 1
1 Nullo
2 2
2 2
3 Nullo

3. Partecipa a destra

Questo join restituisce tutti i record dalla tabella di destra e quelli corrispondenti dalla tabella di sinistra.

Il diagramma sopra mostra che recupera tutti i record dalla tabella B e quello comune presente in entrambe le tabelle.

Esempio:

Identificativo del cliente Nome Città
3 Mahesh Bhubaneswar
4 Sam Kolkata
5 ariete Mumbai

Tabella dei clienti:

ID ordine Quantità Identificativo del cliente
19868 7.575, 00 4
19976 434.654, 00 2
99.680 7.457, 00 3

Tabella degli ordini:

Scopriremo customer_id, name e order_id associati usando il join giusto.

Query:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;

Produzione:

Identificativo del cliente Nome ID ordine
2 nullo 19976
3 Mahesh 99.680
4 Sam 19868

Mentre eseguiamo il join corretto qui, la query ha recuperato tutti gli ID cliente dalla tabella degli ordini e i record comuni che si trovano in entrambe le tabelle.

4. Join esterno completo

Il join esterno completo restituisce tutti i record da entrambe le tabelle se è presente un campo comune condiviso.

Esempio:

Identificativo del cliente Nome Città
3 Mahesh Bhubaneswar
4 Sam Kolkata
5 ariete Mumbai

Tabella dei clienti:

ID ordine Quantità Identificativo del cliente
19868 7.575, 00 4
19976 434.654, 00 2
99.680 7.457, 00 3

Tabella degli ordini:

Scopriremo customer_id, name e order_id ad esso associati utilizzando un join esterno completo.

Query:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
FULL OUTER JOIN order ord
ON cust.customer_id = ord.customer_id;

Produzione:

Identificativo del cliente Nome ID ordine
2 nullo 19976
3 Mahesh 99.680
4 Sam 19868
5 ariete nullo

Questo join esterno completo ha recuperato tutti gli ID cliente dalla tabella clienti e dalla tabella ordini.

5. Auto-join

Il self-join è un join regolare e qui la tabella si unisce solo a se stessa.

emp_id Nome PHONE_NO Città Nazione
1001 R. Madhvan 9687687698 Bangalore India
1002 Gobu Sharma 9856453423 Pune India
1003 Debasish Das 8765456787 Mumbai India
1004 Amit Rout 4567788635 Pune India
1005 Sambit Kar 8789887873 Hyderabad India

Ecco la tabella dei dipendenti composta da diversi campi. Scopriremo i dipendenti che vivono nella stessa città.

Query :

SELECT e1.name AS Employee_name1, e2.name AS employee_name2, e1.City
FROM employee e1, employee e2
WHERE e1.name e2.name
AND e1.city = e2.city;

Uscita :

Employee_name1 Employee_name2 e1.city
Gobu Sharma Amit Rout Pune
Amit Rout Gobu Sharma Pune

6. Cross Join

Questo join produce un risultato in cui il numero di righe nella prima tabella viene moltiplicato per le righe nella seconda tabella. Questo tipo di risultato è chiamato Prodotto cartesiano. Se utilizziamo la clausola WHERE con questo join, funzionerà come join interno.

Esempio:

prod_id Nome del prodotto Prod_unit Codice Identificativo dell'azienda
1 Mix Chex Pz 12
2 Cheez-it Pz 15
3 Biscotto pezzi 16

Tabella dei prodotti :

Codice Identificativo dell'azienda Nome della ditta Company_city
15 Foodies Delhi
16 Jack n Jill Cuttack
17 Naturale Bangalore

Tavolo dell'azienda :

Applicheremo un cross join a queste tabelle.

Query :

SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;

Uscita :

p.product_name p.prod_unit c.company_name
Mix Chex Pz Foodies
Cheez-it Pz Foodies
Biscotto Pz Foodies
Mix Chex Pz Jack n Jill
Cheez-it Pz Jack n Jill
Biscotto Pz Jack n Jill
Mix Chex Pz Naturale
Cheez-it Pz Naturale
Biscotto Pz Naturale

Conclusione

Il significato di questi join è molto importante mentre si lavora in scenari in tempo reale e anche in alcune altre tecnologie. In visualizzazioni come Tableau e Power BI, i join svolgono un ruolo vitale. La pratica strutturata di questo è la chiave per incorporare queste nuove tecniche e abilità.

Articolo raccomandato

Questa è una guida ai join in MySQL. Qui discutiamo i primi 6 tipi di join in MySQL come Inner, Left, Right, Full, Self, Cross e i suoi esempi insieme a Query e Output. puoi anche consultare i nostri articoli suggeriti per saperne di più -

  1. I 10 migliori comandi MySQL
  2. Introduzione agli operatori MySQL
  3. MySQL vs SQLite | Top 14 Confronto
  4. Le 23 principali funzioni della stringa MySQL
  5. Spiega Inserisci comando in MySQL con esempi
  6. Le 6 differenze principali tra chiave primaria e chiave esterna