10 jun 2024 De voordelen van ANSI joins in SQL Nieuws 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 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. 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. 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. 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! Gerelateerde artikelen Perplexity.ai: nieuwe standaard in zoeken Discrimineren met beleid Docker: containerbegrip in de IT-wereld