SQL forenklet: Lag modulære og forståelige spørringer med CTE-er - KDnuggets

SQL forenklet: Lag modulære og forståelige spørringer med CTEer – KDnuggets

Kilde node: 3084928

SQL forenklet: Lag modulære og forståelige spørringer med CTE-er
Bilde av forfatter 
 

I dataverdenen står SQL fortsatt som lingua franca for interaksjon med databaser. 

Fremdeles i dag står det som et av de mest brukte språkene for å håndtere data og regnes fortsatt som et must for enhver god dataprofesjonell. 

Alle som har jobbet med komplekse SQL-spørringer vet imidlertid at de raskt kan bli til uhåndterlige beist – vanskelige å lese, vedlikeholde eller gjenbruke. 

Dette er grunnen til at det i dag ikke er nok å kunne SQL, vi må være flinke til å lage spørringer. Og dette er faktisk en type kunst. 

Det er her Common Table Expressions (CTEs) kommer inn i bildet, og transformerer kunsten å skrive spørringer til et mer strukturert og tilgjengelig håndverk.

Så la oss sammen finne ut hvordan du kan kode lesbare og gjenbrukbare spørringer.

Hvis du lurer på hva en CTE er, er du inne i den riktige artikkelen. 

Et Common Table Expression (CTE) er et midlertidig resultatsett som er definert innenfor utførelsesomfanget til en enkelt SQL-setning. 

 

De er tidsmessige tabeller som kan refereres til mange ganger i en enkelt spørring og brukes vanligvis til å forenkle komplekse sammenføyninger og underspørringer, med det endelige målet å øke lesbarheten og organiseringen av SQL-kode.

Så de er et kraftig verktøy for å dele opp komplekse søk i enklere deler.

Her er grunnen til at du bør vurdere å bruke CTEer:

  • modularitet: Du kan bryte ned kompleks logikk i lesbare biter.
  • lesbarhet: Det gjør det enklere å forstå flyten av SQL-spørringer.
  • gjenbruk: CTE-er kan refereres flere ganger i en enkelt spørring, og unngår repetisjon.

Magien begynner med WITH-klausulen, som går foran hovedspørringen din og definerer forskjellige tidstabeller (CTE) med aliaser.

Derfor må vi alltid starte spørringen vår med "WITH"-kommandoen for å begynne å definere egne CTE-er. Ved å bruke CTE-er kan vi dele opp alle komplekse SQL-spørringer i: 

– Små tidstabeller som beregner relaterte variabler. 

– En finaletabell som bare tar de variablene vi ønsker som output.

Og dette er nettopp den MODULÆRE tilnærmingen vi ønsker i enhver kode!

 

SQL forenklet: Lag modulære og forståelige spørringer med CTE-er
Bilde av forfatter
 

Så ved å bruke CTE-er i søkene våre kan vi:

– Kjør en tidstabell EN gang og referer til den FLERE ganger.

– Forbedre lesbarheten og forenkle kompleks logikk.

– Fremme gjenbrukbarhet av kode og modulær design.

For å forstå dette bedre kan vi ta et praktisk eksempel på Airbnb-oppføringer i Barcelona. 

Tenk deg at vi ønsker å analysere ytelsen til oppføringer etter nabolag og sammenligne den med byens generelle ytelse. Du må samle informasjon om nabolag, individuelle leiligheter, verter og priser.

For å eksemplifisere dette, vil vi bruke InsideAirbnb Tabell over Barcelona, ​​som ser slik ut: 

 

SQL forenklet: Lag modulære og forståelige spørringer med CTE-er
 

En naiv tilnærming kan føre til at du oppretter nestede underspørringer som raskt blir et vedlikeholdsmareritt som det som følger:

Kode etter forfatter

I stedet kan vi bruke CTE-er til å dele opp søket vårt i logiske deler – hver definerer en del av puslespillet.

  • Nabolagsdata: Opprett en CTE for å oppsummere data etter nabolag.
  • Leilighet og vertsinformasjon: Definer CTE-er for detaljer om leiligheter og verter.
  • Byomfattende beregninger: En annen CTE for å samle statistikk på bynivå for sammenligning.
  • Sluttmontering: Kombiner CTE-ene i en siste SELECT-setning for å presentere dataene sammenhengende.

 

SQL forenklet: Lag modulære og forståelige spørringer med CTE-er
Bilde av forfatter
 

Og vi ville ende opp med følgende spørsmål:

Kode etter forfatter

Ved å bruke CTE-er gjør vi en potensielt monstrøs enkeltspørring til et organisert sett med datamoduler. Denne modulære tilnærmingen gjør SQL-koden mer intuitiv og tilpasningsdyktig til endringer. 

Hvis nye krav dukker opp, kan du justere eller legge til CTE-er uten å overhale hele spørringen.

Når du har etablert CTE-ene dine, kan du gjenbruke dem til å utføre sammenlignende analyser. For eksempel, hvis du ønsker å sammenligne nabolagsdata mot byomfattende beregninger, kan du referere til CTE-ene dine i en serie JOIN-operasjoner. 

Dette sparer ikke bare tid, men holder også koden din effektiv, siden du ikke trenger å gjenta den samme spørringen to ganger!

CTE-er er et bevis på prinsippet om at litt struktur går langt i programmering. Ved å ta i bruk CTE-er kan du skrive klarere, mer vedlikeholdbare og gjenbrukbare SQL-spørringer. 

Det effektiviserer spørringsutviklingsprosessen og gjør det enklere å kommunisere kompleks datainnhentingslogikk til andre.

Husk at neste gang du skal begynne å skrive et multi-join, nestet underspørringsmonster, bør du vurdere å bryte det ned med CTEer. 

Ditt fremtidige jeg – og alle andre som kan lese koden din – vil takke deg.
 
 

Josep Ferrer er en analyseingeniør fra Barcelona. Han ble uteksaminert i fysikkingeniør og jobber for tiden i Data Science-feltet brukt på menneskelig mobilitet. Han er en deltidsinnholdsskaper med fokus på datavitenskap og teknologi. Du kan kontakte ham på Linkedin, Twitter or Medium.

Tidstempel:

Mer fra KDnuggets