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.
- Alătura interioară
- Stânga se alătură
- Alătură-te drept
- Unire exterioară completă
- Auto-se alăture
- 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 | Nume | Comanda 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 -
- Top 10 comenzi MySQL
- Introducere pentru operatorii MySQL
- MySQL vs SQLite | Top 14 Comparație
- Top 23 de funcții MySQL String
- Explicați comanda Insert în MySQL cu exemple
- Top 6 diferențe de cheie primară față de cheie străină