Introducere în Tipuri de uniri în SQL
O clauză Join în SQL servește la combinarea rândurilor din două sau mai multe tabele. Procesul de combinare a rândurilor depinde de o coloană care este legată de ele. Cele patru tipuri diferite de uniri în SQL sunt numite ca unire interioară, unire stânga, unire dreapta și unire completă. Înainte de a putea începe cu adevărat să folosim orice tip de aderare, avem nevoie de un RDBMS sau un sistem relațional de gestionare a bazelor de date în care vom încărca datele. Una dintre modalitățile foarte ușoare de a înțelege unirile este folosirea diagramei Venn. Utilizarea unei diagrame Venn facilitează evaluarea tuturor relațiilor posibile și logice între diferite seturi de date. Să înțelegem asta unul câte unul folosind diagrama Venn. Mai târziu vom înțelege diferența dintre acestea folosind câteva exemple practice. Să presupunem că există două seturi de date în baza noastră de date stocate sub forma tabelului unu și a tabelului doi. Există o oarecare relație între cele două tabele care este specificată sub forma unei chei primare și a unui concept de cheie străină. Dacă vă alăturați două tabele având un fel de relație, reprezentarea diagramei Venn a scenariului va fi ceva de genul,
Suma acestei suprapuneri va determina gradul de similitudine între cele două tabele, adică, tabelul A și tabelul B. Aceasta înseamnă că numărul de înregistrări din tabelul unu, care se potrivesc cu înregistrările din tabelul doi este reprezentat de secțiunea de suprapunere. Acesta este un subset de date. Obținem patru tipuri diferite de uniri pe baza subsetului de date pe care le culegem din cele două tabele.
Sintaxa de Alăturare:
SELECT column-names FROM table-name1 JOIN table-name2 ON column-name1 = column-name2 WHERE condition
Tipuri de uniri în SQL
- Alăturați-vă la interior
- Alăturați-vă stânga
- Alăturați-vă corect
- Alătură-te complet
Mai jos vă explicăm diferite tipuri de uniri în detaliu.
1. Alăturați-vă în interior
Într-o îmbinare interioară, selectăm doar datele care sunt comune în ambele tabele. (adică partea a 3-a aici) Pentru a fi mai precisă, toate înregistrările din ambele tabele care corespund condiției menționate cu unirea sunt alese în această aderare.
Sintaxa Alăturarea interioară:
SELECT column-names FROM table-name1 INNER JOIN table-name2 ON column-name1 = column-name2 WHERE condition
2. Alăturați stânga
În unirea din stânga, selectăm toate datele din tabelul din stânga și din tabelul din dreapta selectăm doar setul de date care se potrivește cu condiția menționată cu unirea (aici zona 1 + 3)
Sintaxa participare la stânga:
SELECT column-names FROM table-name1 LEFT JOIN table-name2 ON column-name1 = column-name2 WHERE condition
3. Alăturați-vă drept
În alăturarea dreaptă, selectăm toate datele din tabelul din dreapta și din tabelul din stânga selectăm doar setul de date care se potrivește cu condiția menționată cu alăturarea (aici 3 + 2)
Sintaxa dreptului de alăturare:
SELECT column-names FROM table-name1 RIGHT JOIN table-name2 ON column-name1 = column-name2 WHERE condition
4. Alătură-te complet
Înscriere completă, toate înregistrările formează ambele tabele fuzionate și selectate indiferent de condiția menționată, odată cu împlinirea sau nu. (aici 1 + 2 + 3)
Sintaxa alăturarii complete:
SELECT column-names FROM table-name1 FULL JOIN table-name2 ON column-name1 = column-name2 WHERE condition
Exemple de uniri în SQL
Luați în considerare cele două tabele prezentate mai jos:
1. Exemplu de ORDER_DETAILS
Comanda din tabel conține detaliile comenzii plasate de client, precum ID-ul comenzii, numărul de produse comandate, suma comenzii, id-ul clientului care a plasat comanda și data la care a fost plasată comanda. Un astfel de fel de tabel poate fi utilizat de orice site web online pentru stocarea detaliilor comenzii.
Tabel ORDER_DETAILS:
Comanda ID | No_of_Items | Cantitatea comenzii | Număr de înregistrare client | Data comandă |
123 | 3 | 5500 | P_1 | 01/20/2019 |
234 | 2 | 6500 | P_12 | 02/10/2019 |
345 | 1 | 10000 | P_13 | 05/27/2019 |
456 | 4 | 4000 | P_14 | 11/07/2019 |
567 | 2 | 20656 | P_1 | 12/15/2019 |
678 | 3 | 15000 | P_11 | 10/27/2019 |
2. Exemplu de CUSTOMER_DETAILS
Acum să luăm un alt tabel în care vor fi stocate detaliile clientului, astfel încât să poată livra comanda la adresele respective. Prin urmare, tabelul de clienți va avea detaliile clientului, precum ID-ul clientului (cust_id), care va fi unic pentru fiecare client. Acum numele și prenumele sunt stocate în câmpul numit - Cust_First_Name și Cust_Last_Name. Celelalte câmpuri vor stoca informații precum ID-ul de e-mail, numărul de telefon al clientului împreună cu adresa, Pincode, orașul și statul. Astfel, putem vedea că tabelul nostru de clienți va arăta ca ceva -
CUSTOMER_DETAILS Tabel:
Cust_Id | Cust_First_Name | Cust_Last_Name | Cod PIN | Abordare | Cust_Mobile | Oraș | Stat | Cust_email |
P_50 | Alice | Petru | 111111 | Str. 330 xyz | 123 | Bangalore | KA | |
P_12 | James | Dsouza | 155511 | 420 abc colonie | 234 | Hyderabad | AP | |
P_15 | dezgoli | Olar | 123456 | 551 mg rutier | 444 | Noida | Delhi | |
P_40 | Miley | Parker | 111121 | Drum de 11 metri | 224 | Bangalore | KA | |
P_10 | Herman | tufiș | 123423 | 34 str . Thanco | 432 | Delhi | Delhi | |
P_18 | Dan | Maro | 134523 | 50 de drum independent | 145 | Gurugram | Haryana | |
P_20 | James | Russel | 111111 | 101 mg rutier | 678 | Bangalore | KA | |
P_1 | Miley | Madison | 100011 | 45. aranjament kaverappa | 987 | Chennai | TN |
Utilizând acum acest exemplu, să înțelegem funcționalitatea unirilor. Putem vedea că relația dintre cele două tabele adică, tabelul ORDER_DETAILS și tabelul CUSTOMER_DETAILS este stabilită prin cheia care are valoarea identității clientului, adică Client_Id, care este o cheie primară în tabelul CUSTOMER_DETAILS și o cheie străină în Tabelul ORDER_DETAILS.
Puține puncte importante de notat aici înainte de a continua sunt:
- Nu toți clienții din tabelul nostru CUSTOMER_DETAILS au trimis o cerere de comandă.
- Nu toată cererea de comandă pe care o avem în tabelul nostru ORDER_DETAILS are un client_id care este prezent în tabelul nostru CUSTOMER_DETAILS, ceea ce înseamnă că pentru unele comenzi nu există detalii despre client.
3. Alăturați-vă înăuntru
Inner Join vă va oferi doar acele înregistrări pentru care condiția este îndeplinită.
Solicitare:
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
ieşire:
Cust_First_Name | Cust_email | No_of_Items | Cantitatea comenzii | Data comandă |
Miley | 3 | 5500 | 01/20/2019 | |
James | 2 | 6500 | 02/10/2019 | |
Miley | 2 | 20656 | 12/15/2019 |
4. Stânga Alăturați-vă
Alăturare stângă vă va oferi toate înregistrările din tabelul din stânga, adică tabelul CUSTOMER_DETAILS. Dacă nu există comenzi plasate de către client, acesta va returna o valoare nulă pentru coloanele din tabelul ORDER_DETAILS.
Solicitare:
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
ieşire:
Cust_First_Name | Cust_email | No_of_Items | Cantitatea comenzii | Data comandă |
Alice | NUL | NUL | NUL | |
James | 2 | 6500 | 02/10/2019 | |
dezgoli | NUL | NUL | NUL | |
Miley | NUL | NUL | NUL | |
Herman | NUL | NUL | NUL | |
Dan | NUL | NUL | NUL | |
James | NUL | NUL | NUL | |
Miley | 3 | 5500 | 01/20/2019 | |
Miley | 2 | 20656 | 12/15/2019 |
5. Alăturați-vă drept
Drept, Join vă va oferi toate înregistrările din tabelul din dreapta, adică din tabelul ORDER_DETAILS. Dacă nu se găsesc înregistrări ale clientului pentru comandă, se va returna o valoare nulă pentru coloanele din tabelul CUSTOMER_DETAILS.
Solicitare:
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
ieşire:
Cust_First_Name | Cust_email | No_of_Items | Cantitatea comenzii | Data comandă |
Miley | 3 | 5500 | 01/20/2019 | |
James | 2 | 6500 | 02/10/2019 | |
NUL | NUL | 1 | 10000 | 05/27/2019 |
NUL | NUL | 4 | 4000 | 11/07/2019 |
Miley | 2 | 20656 | 12/15/2019 | |
NUL | NUL | 3 | 15000 | 10/27/2019 |
6. Alătură-te complet
Full Join vă va oferi toate înregistrările specificate din ambele tabele.
Solicitare:
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
ieşire:
Cust_First_Name | Cust_email | No_of_Items | Cantitatea comenzii | Data comandă |
Alice | NUL | NUL | NUL | |
James | 2 | 6500 | 02/10/2019 | |
dezgoli | NUL | NUL | NUL | |
Miley | NUL | NUL | NUL | |
Herman | NUL | NUL | NUL | |
Dan | NUL | NUL | NUL | |
James | NUL | NUL | NUL | |
Miley | 3 | 5500 | 01/20/2019 | |
Miley | 2 | 20656 | 12/15/2019 | |
NUL | NUL | 1 | 10000 | 05/27/2019 |
NUL | NUL | 4 | 4000 | 11/07/2019 |
NUL | NUL | 3 | 15000 | 10/27/2019 |
Avantajele unirilor în SQL
- Execuție mai rapidă, ceea ce înseamnă recuperare mai rapidă a coloanelor dorite.
- Optimizat, citit și de înțeles
- Creșterea performanței.
Concluzie
După cum s-a văzut, folosim JOIN-uri pentru a adăuga și obține câmpurile din diferite tabele.
- Alăturați-vă interioare preia înregistrări în care condiția dată este îndeplinită.
- Alăturare stângă vă va oferi toate rândurile din tabelul din stânga, chiar și atunci când condiția dată nu se potrivește.
- Right Join vă va oferi toate rândurile din tabelul din stânga, chiar și atunci când condiția dată nu se potrivește.
- Full Join întoarce toate rândurile când există o potrivire într-una din tabele.
- Interogările de înscriere pot fi utilizate cu comenzi de genul - SELECT, INSERT, ACTUALIZARE, Ștergeți.
- De asemenea, unirile se înțeleg cu diferite clauze precum: GRUPA BY, SUB QUERIES, UNDE, FUNCȚII AGRATE, etc.
Articol recomandat
Acesta a fost un ghid pentru Tipuri de uniri în SQL. Aici vom discuta despre diferitele tipuri de uniri în SQL și Avantajele sale împreună cu exemple. Puteți parcurge și alte articole sugerate pentru a afla mai multe -
- Avantajele NoSQL
- Instrumente de management SQL
- Baza de date în SQL
- Wildcard în SQL
- Top 6 tipuri de uniri în MySQL cu exemple