Den beste måten å lære SQL på er ofte å se et konkret eksempel. I denne artikkelen bruker vi en liten nettbutikk som modell. Da kan du følge hele kjeden fra tabellstruktur til ferdig spørring. Målet er å vise hvordan en database kan deles opp i flere tabeller, og hvordan SQL binder dem sammen igjen. Dette er helt typisk for oppgaver på VGS og i praktisk dataarbeid.
Se også [databaser i praksis](/ressursbank/artikler/databaser/) og [tabeller og relasjoner](/ressursbank/artikler/tabeller/) hvis du vil forstå modellen enda bedre.
Eksempeldatabase: en enkel nettbutikk
La oss tenke oss tre tabeller. Den første heter kunder og inneholder kunde_id, navn og e-post. Den andre heter produkter og inneholder produkt_id, produktnavn, kategori og pris. Den tredje heter bestillinger og inneholder bestilling_id, kunde_id, produkt_id og dato. Dette er en klassisk modell fordi kundedata, produktdata og ordredata hører sammen, men ikke bør blandes i én stor tabell.
Når data deles opp på denne måten, blir det lettere å vedlikeholde og oppdatere dem. Hvis en kunde bytter e-postadresse, oppdaterer du bare én rad i kunden-tabellen. Hvis en pris endrer seg, oppdaterer du produkt-tabellen. Bestillingene kan fortsatt peke på de riktige objektene ved hjelp av id-feltene. SQL bruker disse koblingene når du vil se data samlet.
Først: hent ut alle produkter
La oss starte enkelt. Du vil se alle produkter i butikken, sortert etter pris.
```sql SELECT produktnavn, kategori, pris FROM produkter ORDER BY pris DESC; ```
Denne spørringen er enkel, men den viser tre viktige ting. Du velger bestemte kolonner, du leser fra én tabell, og du sorterer resultatet. Dersom oppgaven ber deg om dyreste produkter først, er dette nok. Når du leser resultatet, ser du raskt hvilke varer som ligger høyest i prislisten.
Deretter: filtrer bare varene i én kategori
Nå vil du kanskje se bare hodetelefoner eller bare skoleutstyr. Da bruker du WHERE.
```sql SELECT produktnavn, pris FROM produkter WHERE kategori = 'skoleutstyr'; ```
Her får du kun varer som tilhører kategorien skoleutstyr. Dette er typisk for oppgaver der du skal vise et utvalg, ikke hele datasettet. Det er også en god måte å lære at tekstverdier ofte må stå i enkle anførselstegn i SQL.
Hent ut antall bestillinger per kunde
Nå kommer det mer interessante. Du vil vite hvor mange bestillinger hver kunde har gjort. Dette krever at du grupperer dataene.
```sql SELECT kunde_id, COUNT() AS antall_bestillinger FROM bestillinger GROUP BY kunde_id ORDER BY antall_bestillinger DESC; ```