Inleiding tot typen joins in SQL

Een Join-clausule in SQL dient om rijen uit twee of meer tabellen te combineren. Het combineren van rijen hangt af van een kolom die eraan is gerelateerd. De vier verschillende typen joins in SQL worden genoemd als een inner join, left join, right join en full join. Voordat we echt elk type join kunnen gaan gebruiken, hebben we een RDBMS of een relationeel databasebeheersysteem nodig waar we de gegevens laden. Een van de zeer eenvoudige manieren om de joins te begrijpen, is door het Venn-diagram te gebruiken. Met behulp van een Venn-diagram is het eenvoudig om alle mogelijke en logische relaties tussen verschillende gegevenssets te meten. Laten we dit een voor een begrijpen met behulp van het Venn-diagram. Later zullen we het verschil tussen deze begrijpen aan de hand van enkele praktische voorbeelden. Laten we aannemen dat er twee gegevenssets in onze database zijn opgeslagen in de vorm van tabel één en tabel twee. Er is een relatie tussen de twee tabellen die wordt gespecificeerd in de vorm van een primaire sleutel en een concept van een externe sleutel. Als u zich aansluit bij twee tabellen die een soort relatie hebben, ziet de Venn-diagramweergave van het scenario er ongeveer zo uit,

De hoeveelheid van deze overlapping zal de mate van overeenkomst tussen de twee tabellen bepalen, namelijk tabel A en tabel B. Dit betekent dat het aantal records uit tabel één, dat overeenkomt met de records uit tabel twee, wordt vertegenwoordigd door de overlappende sectie. Dit is een subset van gegevens. We krijgen vier verschillende typen joins op basis van de gegevensset die we uit de twee tabellen kiezen.

Syntaxis van Join:

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

Typen joins in SQL

  1. Innerlijke join
  2. Links meedoen
  3. Rechts meedoen
  4. Volledige deelname

Hieronder leggen we verschillende soorten Joins uit in Gedetailleerd.

1. Innerlijke verbinding

In een interne join selecteren we alleen de gegevens die in beide tabellen voorkomen. (dwz deel 3 hier) Om het preciezer te maken, worden alle records uit beide tabellen die overeenkomen met de voorwaarde die met de join wordt genoemd, in deze join gepickt.

Syntaxis van Inner Join:

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

2. Linker deelname

In de linker join selecteren we alle gegevens uit de linker tabel en selecteren we uit de rechter tabel alleen de gegevensset die overeenkomt met de voorwaarde vermeld bij de join (hier gebied 1 + 3)

Syntaxis van Left Join:

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

3. Rechts meedoen

In de juiste join selecteren we alle gegevens uit de rechtertabel en selecteren we uit de linkertabel alleen de gegevensset die overeenkomt met de voorwaarde die wordt vermeld bij de join (hier 3 + 2)

Syntaxis van Right Join:

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

4. Volledige deelname

Bij volledige join worden alle records uit beide tabellen samengevoegd en geselecteerd, ongeacht de voorwaarde dat de join al dan niet heeft voldaan. (hier 1 + 2 + 3)

Syntaxis van volledige deelname:

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

Voorbeelden van Joins in SQL

Overweeg de twee onderstaande tabel:

1. Voorbeeld van een ORDER_DETAILS

De tabelbestelling bevat het detail van de bestelling die door de klant is geplaatst, zoals de bestel-ID, het aantal bestelde producten, het bedrag van de bestelling, de ID van de klant die de bestelling heeft geplaatst en de datum waarop de bestelling is geplaatst. Een dergelijke tabel kan door elke online website worden gebruikt voor het opslaan van de details van de bestelling.

ORDER_DETAILS Tabel:

Order ID No_of_Items ORDER_AMOUNT Klanten ID Besteldatum
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. Voorbeeld van CUSTOMER_DETAILS

Laten we nu een andere tabel nemen waarin de gegevens van de klant worden opgeslagen om de bestelling op hun respectieve adressen te kunnen bezorgen. De klantentabel bevat daarom de details van de klant, zoals klant-ID (cust_id), die uniek zal zijn voor elke klant. Nu worden de voornaam en de achternaam opgeslagen in het veld genaamd - Cust_First_Name en Cust_Last_Name. De andere velden slaan de informatie op, zoals het e-mailadres, het mobiele nummer van de klant, samen met het adres, de pincode, de stad en de staat. We kunnen dus zien dat onze klantentabel er ongeveer zo zal uitzien -

CUSTOMER_DETAILS Tabel:

cust_id Cust_First_Name Cust_Last_Name Pincode Adres Cust_Mobile stad Staat Cust_email
P_50 Alice Peter 111111 330 xyz-straat 123 Bangalore KA
P_12 James Dsouza 155.511 420 abc kolonie 234 Hyderabad AP
P_15 Harry Pottenbakker 123456 551 mg weg 444 Noida Delhi
P_40 Miley Parker 111.121 11 voet weg 224 Bangalore KA
P_10 Herman Struik 123.423 34 ste straat 432 Delhi Delhi
P_18 Dan Bruin 134.523 50 ste onafhankelijke weg 145 Gurugram Haryana
P_20 James Russel 111111 101 mg weg 678 Bangalore KA
P_1 Miley Madison 100011 45 e kaverappa-indeling 987 Chennai TN

Laten we nu dit voorbeeld gebruiken om de functionaliteit van de joins te begrijpen. We kunnen zien dat de relatie tussen de twee tabellen, dat wil zeggen, de tabel ORDER_DETAILS en de tabel CUSTOMER_DETAILS wordt vastgesteld door de sleutel die de waarde heeft van de klant-ID, dwz Klant_Id, die een primaire sleutel is in de tabel CUSTOMER_DETAILS en een externe sleutel in de ORDER_DETAILS-tabel.

Enkele belangrijke punten om op te merken voordat we verder gaan zijn:

  • Niet alle klanten in onze CUSTOMER_DETAILS-tabel hebben een bestelaanvraag geplaatst.
  • Niet alle bestelaanvragen die we in onze ORDER_DETAILS-tabel hebben, hebben een customer_id die aanwezig is in onze CUSTOMER_DETAILS-tabel, wat betekent dat voor sommige bestellingen er geen detail is van de klant.

3. Innerlijke verbinding

Inner Join geeft je alleen die records waarvoor aan de voorwaarde is voldaan.

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

Output:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Besteldatum
Miley 3 5500 2019/01/20
James 2 6500 2019/02/10
Miley 2 20656 2019/12/15

4. Linker deelname

Left Join geeft je alle records uit de linkertabel, dwz de tabel CUSTOMER_DETAILS. Als er geen bestellingen zijn geplaatst door de klant, retourneert deze een nulwaarde voor de kolommen in de tabel 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

Output:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Besteldatum
Alice NUL NUL NUL
James 2 6500 2019/02/10
Harry NUL NUL NUL
Miley NUL NUL NUL
Herman NUL NUL NUL
Dan NUL NUL NUL
James NUL NUL NUL
Miley 3 5500 2019/01/20
Miley 2 20656 2019/12/15

5. Rechts meedoen

Juist, Join geeft je alle records uit de juiste tabel, dwz de tabel ORDER_DETAILS. Als er geen klantrecords zijn gevonden voor de bestelling, retourneert deze een nulwaarde voor de kolommen in de tabel 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

Output:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Besteldatum
Miley 3 5500 2019/01/20
James 2 6500 2019/02/10
NUL NUL 1 10000 2019/05/27
NUL NUL 4 4000 2019/11/07
Miley 2 20656 2019/12/15
NUL NUL 3 15000 2019/10/27

6. Volledige deelname

Full Join geeft je alle records die in beide tabellen zijn opgegeven.

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

Output:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Besteldatum
Alice NUL NUL NUL
James 2 6500 2019/02/10
Harry NUL NUL NUL
Miley NUL NUL NUL
Herman NUL NUL NUL
Dan NUL NUL NUL
James NUL NUL NUL
Miley 3 5500 2019/01/20
Miley 2 20656 2019/12/15
NUL NUL 1 10000 2019/05/27
NUL NUL 4 4000 2019/11/07
NUL NUL 3 15000 2019/10/27

Voordelen van Joins in SQL

  1. Snellere uitvoering wat sneller ophalen van gewenste kolommen betekent.
  2. Geoptimaliseerd, leesbaar en begrijpelijk
  3. Verbetering van de prestaties.

Conclusie

Zoals te zien, gebruiken we JOINs om de velden uit verschillende tabellen toe te voegen en op te halen.

  • Inner Join haalt records op waar aan de gegeven voorwaarde is voldaan.
  • Left Join geeft je alle rijen uit de linkertabel, zelfs als de gegeven voorwaarde niet overeenkomt.
  • Right Join geeft je alle rijen uit de linkertabel, zelfs als de gegeven voorwaarde niet overeenkomt.
  • Volledige deelname retourneert alle rijen als er een overeenkomst is in een van de tabellen.
  • Join-zoekopdrachten kunnen worden gebruikt met opdrachten zoals - SELECT, INSERT, UPDATE, DELETE.
  • Joins kunnen ook opschieten met verschillende clausules zoals - GROUP BY, SUB QUERIES, WHERE, AGGREGATE FUNCTIONS, etc.

Aanbevolen artikel

Dit is een leidraad geweest voor Typen Joins in SQL. Hier bespreken we de verschillende soorten Joins in SQL en de voordelen ervan, samen met voorbeelden. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Voordelen van NoSQL
  2. SQL Management Tools
  3. Database in SQL
  4. Jokerteken in SQL
  5. Top 6 soorten joins in MySQL met voorbeelden