De voordelen van ANSI joins in SQL

Onze docent Helma Zijlstra-Westhoff weet ongelofelijk veel en deelt haar kennis dagelijks met de Vijfhart-cursisten. In dit blog vertelt ze over de voordelen van ANSI joins in SQL. 

Tijdens een van mijn cursussen kwam het opnieuw aan het licht: een cursist vertelde me dat veel van zijn collega’s nog steeds de traditionele joins hanteren. Graag vertel ik je wat de voordelen zijn van ANSI joins vergeleken met de traditionele joins. 

Wat zijn ANSI joins?
ANSI joins zijn een gestandaardiseerde manier om joins uit te voeren in SQL. Ze volgen de SQL-standaard die is vastgesteld door de American National Standards Institute (ANSI). Deze stijl van joins gebruikt expliciete JOIN-clausules om de relaties tussen tabellen aan te geven, zoals INNER JOIN, LEFT JOIN, RIGHT JOIN, en FULL JOIN. 

Wat zijn ouderwetse joins?
Ouderwetse joins, ook wel bekend als impliciete joins, maken gebruik van de WHERE-clausule om de join-condities aan te geven. Bijvoorbeeld: 

SELECT *
FROM Tabel1 t1, Tabel2 t2
WHERE t1.column = t2.column; 

In deze aanpak worden de join-condities gemengd met de voorwaarden van de WHERE-clausule, waardoor het soms moeilijker kan zijn om de logica van de query te begrijpen. 

De voordelen van ANSI joins 

  1. Duidelijk en onderhoudbaar
    Een van de belangrijkste voordelen van ANSI joins is de duidelijkheid van de query. Door expliciete JOIN-clausules te gebruiken, wordt het gemakkelijker om de relatie tussen tabellen te begrijpen. Dit maakt de query’s gemakkelijker te onderhouden en te debuggen, vooral bij complexere query’s met meerdere joins.
  2. Betere leesbaar
    ANSI joins verbeteren de leesbaarheid van de query’s, vooral voor diegenen die niet bekend zijn met de specifieke database die wordt gebruikt. De join-condities worden duidelijk gescheiden van de overige voorwaarden in de query, waardoor het gemakkelijker wordt om te zien welke tabellen aan elkaar worden gekoppeld.
  3. Combinatie met outer joins
    Met ANSI joins kunnen eenvoudig OUTER joins worden uitgevoerd, de LEFT JOIN, RIGHT JOIN, en FULL JOIN. Dit biedt meer flexibiliteit bij het combineren van gegevens uit verschillende tabellen. De FULL join is met de ouderwetse syntax überhaupt niet mogelijk; je hebt dan twee query’s nodig die je met een set operator weer aan elkaar verbindt.
  4. Ondersteuning door moderne databases
    Hoewel ouderwetse joins nog steeds worden ondersteund door de meeste databases, worden ANSI joins beschouwd als de moderne standaard. Ze worden beter ondersteund door moderne database engines en zijn de voorkeursmethode voor het schrijven van SQL-query’s in veel professionele omgevingen.

Voorbeeld van ANSI join versus ouderwetse join
Laten we eens kijken naar een voorbeeld van hoe een ANSI join verschilt van een ouderwetse join. We gaan hierbij uit van twee tabellen die een relatie over twee kolommen hebben  

Ouderwetse join:
Als je geluk hebt ziet hij er zo uit: 

SELECT kolomx, kolomy, kolomz
FROM tabel3 t3, tabel4 t4
WHERE t3.koloma = t4.koloma
AND   t3.kolomb = t4.kolomb
AND   t3.kolomc > trunc(sysdate,’mm’) 

Als je minder geluk hebt ziet hij er zo uit: 

SELECT kolomx, kolomy, kolomz
FROM tabel3 t3, tabel4 t4
WHERE t3.koloma = t4.koloma
AND   t3.kolomc > trunc(sysdate,’mm’)
AND   t3.kolomb = t4.kolomb 

ANSI join: 

SELECT kolomx, kolomy, kolomz
FROM tabel3 t3
  INNER JOIN tabel4 t4 ON (t3.koloma = t4.koloma
                            AND   t3.kolomb = t4.kolomb)
WHERE   t4.kolomc > trunc(sysdate,’mm’) 

Nu kunnen de join-voorwaarden niet meer door de overige voorwaarden heen staan.

Mocht je er nu een OUTER join van willen maken dan hoef je niet meer te bedenken dat je TWEE plusjes nodig hebt, je kunt gewoon het woord INNER vervangen door LEFT, RIGHT of FULL, bv: 

SELECT kolomx, kolomy, kolomz
FROM tabel3 t3
  LEFT JOIN tabel4 t4 ON (t3.koloma = t4.koloma
                            AND   t3.kolomb = t4.kolomb)
WHERE   t3.kolomc > trunc(sysdate,’mm’) 

In dit voorbeeld is het duidelijk dat de ANSI join-methode meer leesbaar en beter onderhoudbaar is. 

Conclusie
Hoewel ouderwetse joins nog steeds worden gebruikt, bieden ANSI joins aanzienlijke voordelen op het gebied van duidelijkheid, onderhoud en leesbaarheid van SQL-query’s. Door expliciete JOIN-clausules te gebruiken, kunnen ontwikkelaars efficiënter werken en gemakkelijker complexe query’s begrijpen.  

In onze cursus Oracle Database: SQL fundamenten deel 1 leer je beide manieren want je moet een ouderwetse query wel kunnen lezen als je hem tegenkomt. Maar ik vertel al mijn cursisten dat je wanneer je een nieuwe query maakt je het beste deze ANSI-join syntax kunt gebruiken.  

Ik hoop dat de betreffende cursist zijn collega’s kan overtuigen  

Vijfhart, dat klopt voor jou!

Onderwerpen
Actieve filters: Wis alle filters
Pageloader
PRIVACY VOORWAARDEN

Jouw persoonsgegevens worden opgenomen in onze beschermde database en worden niet aan derden verstrekt. Je stemt hiermee in dat wij jou van onze aanbiedingen op de hoogte houden. In al onze correspondentie zit een afmeldmogelijkheid