Ting 2 Søk i databaser med SQL-spørringer

En database er enkelt forklart en lagringsløsning for data. Vi forholder oss til tusenvis av databaser hver dag. I banken er kundeopplysninger om deg lagret i en database. Hos mobiloperatøren din er kundeopplysningene lagret i en database. Hvis du er på Facebook, så er alle opplysninger om deg lagret i en database. På Finn er alle annonsene lagret i en database. Google har en database over de fleste nettstedene på internett, og når du søker så ser den gjennom databasen sin og forsøker å gi deg de mest relevante resultatene. En database er med andre ord en måte å lagre og organisere data, slik at den blir lettere tilgjengelig.

Også i bibliotekene kommer vi bort i databaser. All informasjon knyttet til samlingene våre og brukerne våre for eksempel, ligger lagret i databaser.

Facebook, Finn, Google og de fleste andre databaser har gjort det enkelt å søke etter informasjon som ligger i deres baser. Denne tingen ser på hvordan søke i databaser uten et forenklet søkegrensesnitt, men med et spørrespråk kalt SQL.

Oppdag

Rader og Kolonner

En enkel måte å se for seg en databasetabell på er som et regneark. Alle regneark er bygget opp av rader og kolonner. Hver kolonne har et unikt navn som identifiserer kolonnen i tabellen den befinner seg i. En tabell som holder brukerinformasjon til en nettside kan, for eksempel, inneholde følgende kolonner:

Brukernavn, Fornavn, Mellomnavn, Etternavn, Gateadresse, Postnummer, Passord osv…

All informasjon i en tabell er lagret i rader. I eksempelet overfor vil hver bruker lagres på en egen rad, slik at all informasjon om bruker med brukernavn «abc» befinner seg på samme rad i tabellen:

+-------------+---------+------------+-----------+---------------+------------+----------+

| Brukernavn  | Fornavn | Mellomnavn | Etternavn | Gateadresse   | Postnummer | Passord  |

+-------------+---------+------------+-----------+---------------+------------+----------+

| joachim     | Joachim | Haageen    | Bøe       | Storgata 155G | 1203       | pass     |

| arnebn      | Arne    |            | Nilsen    | Storgata 155H | 1203       | abcdefgh |

| knutkarlsen | Knut    |            | Karlsen   | Maregata 1    | 1245       | gtrde    |

+-------------+---------+------------+-----------+---------------+------------+----------+

SQL

SQL står for Structured Query Language, som grovt oversatt betyr Strukturert Spørringespråk. Med dette menes det at man kan spørre etter data som ligger i databasen ved å bruke et eget spørrespråk. Et eksempel på dette er:

SELECT navn, telefonnummer FROM kundeliste

Denne spørringen kunne for eksempel hentet ut navn og telefonnummer til alle kundene som var lagret i databasens kundeliste. For de fleste er det unødvendig å lære seg dette hvis man skal lage hjemmeside, siden et publiseringsverktøy er laget slik at det stiller disse spørringene for oss. Så når man søker etter produkter i nettbutikker, så kan det godt være at det går SQL-spørringer til en database, når man bruker nettbutikkens søkefelt.

SQL kan gjøre mer enn å søke i en database:

  • SQL kan utføre spørringer mot en database
  • SQL kan hente data fra en database
  • SQL kan sette inn poster i en database
  • SQL kan oppdatere poster i en database
  • SQL kan slette poster fra en database
  • SQL kan lage nye databaser
  • SQL kan lage nye tabeller i en database
  • SQL kan lage visninger i en database
  • SQL kan angi tillatelser på tabeller, prosedyrer og visninger

Utforsk

W3schools har laget en interaktiv opplæring på SQL som tar for seg de ulike elementene i SQL. Se litt på dette kurset og bli bedre kjent med hvordan SQL-spørringer formes.

W3Schools på pc-skjerm

W3schools har også laget demobaser hvor man kan teste ut de forskjellige funksjonene i SQL. Her ligger en kundetabell, oversikt over produkter og leverandører, ordretabell med flere. Prøv følgende søk for å se hvordan SQL-spørringene fungerer (NB! Dere må legge inn anførselstegnene manuelt på nytt):

  • SELECT ContactName FROM Customers; (Henter ut kontaktnavn fra tabellen 'Customers')
  • SELECT * FROM Customers WHERE Country='Sweden' (Henter ut bare de svenske kundene fra tabellen 'Customers'. Ligger det også norske kunder i denne demobasen?)
  • SELECT * FROM [Suppliers] WHERE Country='Norway'; (Henter ut norske leverandører fra basen 'Suppliers').
  • Til slutt: Prøv denne litt kompliserte søkestrengen som søker i flere av tabellene og se hvilke kunder som har bestilt Gudbrandsdalsost:
SELECT Customers.CustomerName
FROM Products, OrderDetails, Orders, Customers
WHERE Products.ProductName='Gudbrandsdalsost' AND
OrderDetails.ProductID=Products.ProductID AND
OrderDetails.OrderID=Orders.OrderID AND
Orders.CustomerID=Customers.CustomerID;

Reflekter

  • Er det både fordeler og ulemper ved å søke gjennom brukervennlige grensesnitt og ikke rett i databasene? Mister vi noe?

Quiz