SQL vereenvoudigd: modulaire en begrijpelijke zoekopdrachten maken met CTE's - KDnuggets

SQL vereenvoudigd: modulaire en begrijpelijke zoekopdrachten maken met CTE's – KDnuggets

Bronknooppunt: 3084928

SQL vereenvoudigd: modulaire en begrijpelijke query's maken met CTE's
Afbeelding door auteur 
 

In de datawereld is SQL nog steeds de voertaal voor interactie met databases. 

Het is nog steeds een van de meest gebruikte talen om met data om te gaan en wordt nog steeds beschouwd als een must-have voor elke goede dataprofessional. 

Iedereen die met complexe SQL-query's heeft gewerkt, weet echter dat deze snel kunnen veranderen in logge beesten, die moeilijk te lezen, te onderhouden of opnieuw te gebruiken zijn. 

Dit is de reden waarom het tegenwoordig niet voldoende is om SQL te kennen, we moeten goed zijn in het opstellen van queries. En dit is eigenlijk een soort kunst. 

Dit is waar Common Table Expressions (CTE's) een rol gaan spelen, waardoor de kunst van het schrijven van query's wordt getransformeerd in een meer gestructureerd en toegankelijk ambacht.

Laten we dus samen ontdekken hoe we leesbare en herbruikbare query's kunnen coderen.

Als u zich afvraagt ​​wat een CTE is, bevindt u zich in het juiste artikel. 

Een Common Table Expression (CTE) is een tijdelijke resultatenset die is gedefinieerd binnen het uitvoeringsbereik van een enkele SQL-instructie. 

 

Het zijn tijdelijke tabellen waarnaar binnen één enkele query vele malen kan worden verwezen en die doorgaans worden gebruikt om complexe joins en subquery's te vereenvoudigen, met als uiteindelijk doel de leesbaarheid en organisatie van SQL-code te vergroten.

Ze zijn dus een krachtig hulpmiddel om complexe zoekopdrachten in eenvoudiger delen op te splitsen.

Dit is waarom u zou moeten overwegen om CTE's te gebruiken:

  • Modulariteit: Je kunt complexe logica opsplitsen in leesbare brokken.
  • Leesbaarheid: Het maakt het begrijpen van de stroom van SQL-query's eenvoudiger.
  • Herbruikbaarheid: Er kan meerdere keren naar CTE's worden verwezen in één enkele zoekopdracht, waardoor herhaling wordt vermeden.

De magie begint met de WITH-clausule, die aan uw hoofdquery voorafgaat en verschillende tijdelijke tabellen (CTE's) met aliassen definieert.

Daarom moeten we onze zoekopdracht altijd starten met het commando “WITH” om te beginnen met het definiëren van onze eigen CTE's. Door CTE's te gebruiken, kunnen we elke complexe SQL-query opsplitsen in: 

– Kleine tijdelijke tabellen die gerelateerde variabelen berekenen. 

– Een finaletabel die alleen de variabelen neemt die we als output willen hebben.

En dit is precies de MODULAIRE aanpak die we in elke code willen!

 

SQL vereenvoudigd: modulaire en begrijpelijke query's maken met CTE's
Afbeelding door auteur
 

Door CTE's in onze zoekopdrachten te gebruiken, kunnen we het volgende doen:

– Voer een tijdelijke tabel EENMAAL uit en verwijs er MEERDERE keren naar.

– Verbeter de leesbaarheid en vereenvoudig complexe logica.

– Herbruikbaarheid van code en modulair ontwerp bevorderen.

Om dit beter te begrijpen, kunnen we een praktisch voorbeeld nemen van Airbnb-advertenties in Barcelona. 

Stel je voor dat we de prestaties van vermeldingen per wijk willen analyseren en vergelijken met de algemene prestaties van de stad. U moet informatie verzamelen over buurten, individuele appartementen, verhuurders en prijzen.

Om dit te illustreren gebruiken we de BinnenAirbnb tabel van Barcelona, ​​die er als volgt uitziet: 

 

SQL vereenvoudigd: modulaire en begrijpelijke query's maken met CTE's
 

Een naïeve aanpak zou ertoe kunnen leiden dat u geneste subquery's maakt die snel een onderhoudsnachtmerrie worden, zoals deze:

Code door auteur

In plaats daarvan kunnen we CTE's gebruiken om onze vraag in logische secties op te delen, die elk een stukje van de puzzel definiëren.

  • Buurtgegevens: Maak een CTE om gegevens per buurt samen te vatten.
  • Informatie over appartement en gastheer: Definieer CTE's voor details over appartementen en hosts.
  • Statistieken voor de hele stad: Nog een CTE om statistieken op stadsniveau te verzamelen ter vergelijking.
  • Eindmontage: Combineer de CTE's in een definitieve SELECT-instructie om de gegevens op samenhangende wijze te presenteren.

 

SQL vereenvoudigd: modulaire en begrijpelijke query's maken met CTE's
Afbeelding door auteur
 

En we zouden eindigen met de volgende vraag:

Code door auteur

Door CTE's te gebruiken, zetten we een potentieel monsterlijke enkele zoekopdracht om in een georganiseerde reeks gegevensmodules. Deze modulaire aanpak maakt de SQL-code intuïtiever en aanpasbaar aan veranderingen. 

Als er nieuwe vereisten ontstaan, kunt u CTE's aanpassen of toevoegen zonder de hele zoekopdracht te herzien.

Nadat u uw CTE's heeft vastgesteld, kunt u deze opnieuw gebruiken om vergelijkende analyses uit te voeren. Als u bijvoorbeeld buurtgegevens wilt vergelijken met statistieken voor de hele stad, kunt u verwijzen naar uw CTE's in een reeks JOIN-bewerkingen. 

Dit bespaart niet alleen tijd, maar houdt ook uw code efficiënt, omdat u dezelfde zoekopdracht niet twee keer hoeft te herhalen!

CTE's zijn een bewijs van het principe dat een beetje structuur veel oplevert bij het programmeren. Door CTE's te gebruiken, kunt u duidelijkere, beter onderhoudbare en herbruikbare SQL-query's schrijven. 

Het stroomlijnt het ontwikkelingsproces van query's en maakt het eenvoudiger om complexe logica voor het ophalen van gegevens aan anderen te communiceren.

Onthoud: de volgende keer dat u op het punt staat een monster met meerdere joins, geneste subquery's te schrijven, kunt u overwegen om het op te splitsen met CTE's. 

Je toekomstige zelf – en iedereen die jouw code zou kunnen lezen – zal je dankbaar zijn.
 
 

Joseph Ferrer is een analytisch ingenieur uit Barcelona. Hij is afgestudeerd in natuurkunde en werkt momenteel op het gebied van datawetenschap toegepast op menselijke mobiliteit. Hij is een parttime contentmaker die zich richt op datawetenschap en -technologie. U kunt contact met hem opnemen via LinkedIn, Twitter or Medium.

Tijdstempel:

Meer van KDnuggets