Introduktion Til Sql

Structured Query Language (SQL) er et sprog der benyttes til at arbejde med databaser. Sproget benyttes til at indsætte, hente, og slette data, samt til at oprette, ændre, og slette tabeller.

I det følgende benytter vi blog databasen. Blog databasen er tilgængelig via phpmyadmin på http://skyen.iftek.dk/phpmyadmin. Der vil i artiklen forekomme en række SQL kommandoer, det forventes at du prøver kommandoerne af i phpmyadmin. Hvis du ikke har nogle indlæg i din blog, skal du starte med at oprette nogle - du vil altid kunne slette disse igen senere.

phpmyadmin.png

For at udføre kommandoerne i phpmyadmin skal du vælge din blog database i venstre side, og klikke på fanebladdet SQL. Herefter skriver du SQL ind og trykket på Go.

Dataudtræk

Den mest benyttede kommando i SQL er SELECT kommandoen. SELECT bruges til at hente data ud af databasen. Lad os kigge på en simple forespørgsel der arbejder på tabellen der indeholder dine blogindlæg:

SELECT title FROM posts

Kommandoen oversat fra SQL til dansk: Udvælg attributten title fra tabellen posts og returner samtlige rækker i tabellen. Man kan udvælge flere attributter ved at angive navnet på disse adskilt af komma.

SELECT id, title, body FROM posts

Tit ønskes alle attributter inkluderet i resultatet. I stedet for at angive samtlige attributter benyttes *.

SELECT * FROM posts

Vores kommando henter indtil videre alle blogposts ud af databasen. Til forsiden af din blog vil det være nyttigt at reducere dette til fx 5 indlæg. Dette gøres ved at benytte kommandoen LIMIT. LIMIT tager et argument som angiver antallet der skal hentes.

SELECT * FROM posts LIMIT 5

Husk at afprøve forespørgslen i phpmyadmin!

Indtil videre returnerer forespørgslen 5 tilfældige resultater. I din blog returneres de seneste nyheder. Dette er realiseret ved at sortere resultater efter datoen indlægget er skrevet. Der kan enten sorteres stigende eller faldende, i tilfældet med bloggen ønsker vi nyhederne sorteret faldende efter datoen.

I SQL sorteres ved at anvende kommadoen ORDER BY. ORDER BY tager en attribut som argument - denne angiver søjlen der skal sorteres efter. Efter attributten angives om der skal sorteres stigende eller faldende. I SQL hhv. ASC, og DESC der kommer af de engelske udtryk ascending og descending.

En forespørgsel der henter de seneste 5 indlæg ud (dvs. sorteret faldende efter datoen):

SELECT * FROM posts ORDER BY created_at DESC LIMIT 5

Betingede dataudtræk

Indlæg i bloggen er enten udgivet eller under udarbejdelse. Indlæg der endnu ikke er færdige fremgår kun hvis du er logget ind. Der er altså tale om en betingelse der skal være opfyldt for at at indlæg bliver vist for brugere der ikke er logget ind.

Betingelser i SQL angives med WHERE kommandoen. Kommandoen tager en test der evaluerer til sandt eller falsk som argument. Et eksempel demonstrerer hvordan:

En forespørgsel der henter alle udgivede indlæg ud:

SELECT * 
FROM posts 
WHERE is_published = 1

is_published er en attribut på indlæg i databasen der enten er 1 eller 0 - dvs. sandt eller falsk. Eksemplet benyttede en lig med test, en anden form for test er større end eller mindre end test. Lad os hente alle indlæg ud der er er skrevet før den første Oktober.

SELECT * 
FROM posts
WHERE created_at <  '2011-10-01'

Betingelser kan sættes sammen vha. AND og OR. En forespørgsel der trækker indlæg ud i et fx et datointerval bliver nødt til at benytte disse.

Alle nyheder skrevet i oktober

SELECT * 
FROM posts
WHERE created_at >=  '2011-10-01' AND created_at < '2011-11-01'
Medmindre andet er angivet, er indholdet af denne side licenseret under Creative Commons Attribution-NonCommercial 3.0 License