Introducere la uniri în MySQL

Unirile MySQL joacă un rol important atunci când trebuie să unim două tabele împreună pe baza uneia sau a mai multor valori comune împărțite de două tabele.

Exemplu : Să luăm în considerare că avem două tabele, unul este tabelul angajaților format din angajat_id, phn_no, salariu și departament. Un alt tabel este tabelul de adrese care constă din angajat_id și adresă. Dacă trebuie să aflăm angajat_id, departament și adresă, atunci trebuie să ne alăturăm ambelor tabele care împart câmpul comun ca angajat_id.

Intrebare :

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

Top 6 tipuri de uniri în MySQL

Există diferite tipuri de uniri în MySQL. Înscrierile menționate mai jos apar în utilizarea de zi cu zi și sunt cele mai utile atunci când efectuați numeroase întrebări în scenarii reale de caz.

  1. Alătura interioară
  2. Stânga se alătură
  3. Alătură-te drept
  4. Unire exterioară completă
  5. Auto-se alăture
  6. Alătura încrucișată

1. Alăturați-vă în interior

Alătura interioară returnează valoarea care se potrivește în ambele tabele.

Această porție vine la ieșire așa cum se arată în imaginea de mai sus.

Exemplul # 1:

emp_id Departament Salariu
1001 ACEASTA 1000
1002 CSR 800
1003 ACEASTA 2000

Aceasta este masa angajaților.

emp_id Abordare
1002 Delhi
1003 Bangalore
1005 Bbsr

Iată tabelul cu adresele acelor angajați. Cheia primară emp_id a angajatului din tabelul părinte este utilizată ca cheie străină în tabelul de adrese care este tabelul copil. Vom găsi emp_id-ul, departamentul și adresa unui angajat folosind unirea internă. Deoarece stările de unire interioară Înregistrează înregistrările care sunt prezente / comune în ambele tabele.

Solicitare:

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

Dăm un alias numelui tabelei pentru a evita mai mult timp. În interogarea de mai sus, folosim „emp” alias pentru tabelul angajaților și „anunțuri” pentru tabelul de adrese.

ieşire:

emp_id Departament Abordare
1002 CSR Delhi
1003 ACEASTA Bangalore

La fel ca în exemplul de mai sus emp_id 1002 și 1003 erau comune între ambele tabele, comanda de unire interioară preia ieșirea numai pentru acești angajați.

Exemplul # 2:

Aici avem 2 tabele, table1 & table2. Ambele tabele constau dintr-un atribut fiecare ca coloană A și respectiv coloana B.

Tabelul 1

Coloana A
1
1
2
3
4

Masa 2

Coloana B
1
2
2
3
3
5

Solicitare:

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

ieşire:

Coloana A Coloana B
1 1
1 Nul
2 2
Nul 2
3 3
Nul 3

2. Alăturați stânga

Această unire returnează toate înregistrările din tabelul din stânga și înregistrările potrivite din tabelul din dreapta.

După cum arată diagrama de mai sus, este format din toate înregistrările din tabelul A și din cele comune din A și B.

Exemplul # 1:

Număr de înregistrare client Nume Oraș
1 Harish Cuttack
2 David Bangalore
3 Mahesh Bhubaneswar
4 Sam Kolkata

Tabelul clienților:

Comanda ID Cantitate Număr de înregistrare client
19868 7575.00 4
19976 434, 654.00 2
99680 7457.00 3

Tabelul comenzii:

Vom afla client_id, nume și ordine_id asociate folosind stânga join.

Solicitare:

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

ieşire:

Număr de înregistrare client NumeComanda ID
1 Harish nul
2 David 19976
3 Mahesh 99680
4 Sam 19868

Pe măsură ce am discutat această aderare stânga a preluat toate ID-ul client din tabelul clientului și cele comune între ambele tabele. Pentru clientul „1” acesta va apărea ca „nul” deoarece clientul „1” nu este prezent în tabelul de comenzi.

Exemplul # 2:

Aici avem 2 tabele, table1 & table2. Ambele tabele constau dintr-un atribut fiecare ca coloană A și respectiv coloana B.

Tabelul 1

Coloana A
1
1
2
2
3

Masa 2

Coloana B
1
2
2
4
4
5
5

Solicitare:

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

Coloana A Coloana B
1 1
1 Nul
2 2
2 2
3 Nul

3. Alăturați-vă drept

Această unire returnează toate înregistrările din tabelul din dreapta și cele potrivite din tabelul din stânga.

Diagrama de mai sus arată că înregistrează toate înregistrările din tabelul B și cea comună, care este prezentă în ambele tabele.

Exemplu:

Număr de înregistrare client Nume Oraș
3 Mahesh Bhubaneswar
4 Sam Kolkata
5 Berbec Mumbai

Tabelul clienților:

Comanda ID Cantitate Număr de înregistrare client
19868 7575.00 4
19976 434, 654.00 2
99680 7457.00 3

Tabelul comenzii:

Vom afla client_id, nume și ordine_id asociate acestuia, folosind uniunea potrivită.

Solicitare:

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

ieşire:

Număr de înregistrare client Nume Comanda ID
2 nul 19976
3 Mahesh 99680
4 Sam 19868

Pe măsură ce am efectuat dreptul de a se alătura aici, astfel că interogarea a preluat toate ID-ul clientului din tabelul de comandă și înregistrările comune care se află în ambele tabele.

4. Alătura exterioară completă

Unirea exterioară completă returnează toate înregistrările din ambele tabele dacă există un câmp comun partajat.

Exemplu:

Număr de înregistrare client Nume Oraș
3 Mahesh Bhubaneswar
4 Sam Kolkata
5 Berbec Mumbai

Tabelul clienților:

Comanda ID Cantitate Număr de înregistrare client
19868 7575.00 4
19976 434, 654.00 2
99680 7457.00 3

Tabelul comenzii:

Vom afla client_id, nume și ordine_id asociate acestuia folosind o alătura exterioară completă.

Solicitare:

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

ieşire:

Număr de înregistrare client Nume Comanda ID
2 nul 19976
3 Mahesh 99680
4 Sam 19868
5 Berbec nul

Această aderare completă a extras toate ID-ul clientului din tabelul clientului, precum și tabelul de comenzi.

5. Alăturarea de sine

Self-join este o alăturare obișnuită și aici tabelul se alătură numai cu el însuși.

emp_id Nume Phone_no Oraș Țară
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

Iată tabelul angajaților format din mai multe domenii. Vom afla angajații care locuiesc în același oraș.

Intrebare :

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;

Rezultat :

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

6. Alăturare încrucișată

Această unire produce un rezultat în care numărul de rânduri din primul tabel se înmulțește cu rândurile din al doilea tabel. Acest tip de rezultat se numește Produs cartezian. Dacă folosim clauza WHERE cu această îmbinare, atunci aceasta va funcționa ca o îmbinare interioară.

Exemplu:

Prod_id Numele produsului Prod_unit ID-ul companiei
1 Chex mix buc 12
2 Cheez-l buc 15
3 Biscuit buc 16

Tabel produs :

ID-ul companiei Numele Companiei Company_city
15 Foodies Delhi
16 Jack n Jill Cuttack
17 Natural Bangalore

Tabelul companiei :

Vom aplica o aderare încrucișată la aceste tabele.

Intrebare :

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

Rezultat :

p.product_name p.prod_unit c.company_name
Chex mix buc Foodies
Cheez-l buc Foodies
Biscuit buc Foodies
Chex mix buc Jack n Jill
Cheez-l buc Jack n Jill
Biscuit buc Jack n Jill
Chex mix buc Natural
Cheez-l buc Natural
Biscuit buc Natural

Concluzie

Semnificația acestor aderari este foarte importantă în timp ce lucrează în scenarii în timp real, precum și în unele alte tehnologii. În vizualizări precum Tableau și Power BI, îmbinările joacă un rol vital. Practica structurată este esențială pentru încorporarea acestor noi tehnici și abilități.

Articol recomandat

Acesta este un ghid pentru unirile în MySQL. Aici discutăm primele 6 tipuri de uniri în MySQL precum Inner, Left, Right, Full, Self, Cross și exemplele sale împreună cu interogare și rezultat. puteți parcurge și articolele noastre sugerate pentru a afla mai multe -

  1. Top 10 comenzi MySQL
  2. Introducere pentru operatorii MySQL
  3. MySQL vs SQLite | Top 14 Comparație
  4. Top 23 de funcții MySQL String
  5. Explicați comanda Insert în MySQL cu exemple
  6. Top 6 diferențe de cheie primară față de cheie străină