Guide: PHP- & MySQL-innføring: Kapittel 8
Tid for databaser
Vi har til nå dekket svært mye av språket PHP; i dag tar vi tak i MySQL og introduserer begreper som relasjonsdatabase.
Uthenting av data
Vi har til nå lagd en tabell, og satt inn noe data i den. Du har kanskje satt inn noe ekstra data i forhold til hva jeg gjorde, og det går bra; men du kan få forskjellige resultater enn vi gjør i våre eksempler her.
Siden tabellen vår er så liten (den har bare 5 rader), kan det være praktisk å hente ut alle dataene som er her; og det gjøres svært enkelt med en SELECT-spørring;
mysql> SELECT * FROM person; +---------+------------+-------------+-----------------------+ | fornavn | etternavn | fodselsdato | epost | +---------+------------+-------------+-----------------------+ | Vegard | Larsen | 1984-02-23 | vegard AT hardware.no | | Ola | Nordmann | 1974-04-12 | ola AT eksempel.no | | Kari | Nordkvinne | 1932-01-29 | kari AT eksempel.no | | Per | Olsen | 2003-02-01 | per AT eksempel.no | | Knut | Olsen | 1943-10-12 | knut AT eksempel.no | +---------+------------+-------------+-----------------------+ 5 rows in set (0.00 sec)
Her ser du at vi har fått ut dataene i den rekkefølgen vi la den inn (det er ikke nødvendigvis tilfellet). Alt vi har lagt inn er der fremdeles. * indikerer at vi vil ha data fra alle kolonner i tabellen. Det er gjerne ikke så interessant, sett at vi ville ha listen alfabetisert etter etternavn;
mysql> SELECT * FROM person ORDER BY etternavn; +---------+------------+-------------+-----------------------+ | fornavn | etternavn | fodselsdato | epost | +---------+------------+-------------+-----------------------+ | Vegard | Larsen | 1984-02-23 | vegard AT hardware.no | | Kari | Nordkvinne | 1932-01-29 | kari AT eksempel.no | | Ola | Nordmann | 1974-04-12 | ola AT eksempel.no | | Per | Olsen | 2003-02-01 | per AT eksempel.no | | Knut | Olsen | 1943-10-12 | knut AT eksempel.no | +---------+------------+-------------+-----------------------+ 5 rows in set (0.00 sec)
Om du studerer listen nøye, ser du gjerne at Per kommer før Knut, selv om det alfabetisk ikke er korrekt. En ny spørring fikser på det;
mysql> SELECT * FROM person ORDER BY etternavn, fornavn; +---------+------------+-------------+-----------------------+ | fornavn | etternavn | fodselsdato | epost | +---------+------------+-------------+-----------------------+ | Vegard | Larsen | 1984-02-23 | vegard AT hardware.no | | Kari | Nordkvinne | 1932-01-29 | kari AT eksempel.no | | Ola | Nordmann | 1974-04-12 | ola AT eksempel.no | | Knut | Olsen | 1943-10-12 | knut AT eksempel.no | | Per | Olsen | 2003-02-01 | per AT eksempel.no | +---------+------------+-------------+-----------------------+ 5 rows in set (0.00 sec)
Du kan selvsagt bruke ORDER BY til å sortere på de andre kolonnene også; f.eks. kan du rangere etter alder slik som dette;
mysql> SELECT * FROM person ORDER BY fodselsdato DESC; +---------+------------+-------------+-----------------------+ | fornavn | etternavn | fodselsdato | epost | +---------+------------+-------------+-----------------------+ | Per | Olsen | 2003-02-01 | per AT eksempel.no | | Vegard | Larsen | 1984-02-23 | vegard AT hardware.no | | Ola | Nordmann | 1974-04-12 | ola AT eksempel.no | | Knut | Olsen | 1943-10-12 | knut AT eksempel.no | | Kari | Nordkvinne | 1932-01-29 | kari AT eksempel.no | +---------+------------+-------------+-----------------------+ 5 rows in set (0.00 sec)
Her har vi lagt til nøkkelordet DESC (en forkortelse for descending) for å indikere at vi ønsker den største datoen først, dvs. den yngste personen.
Kanskje er vi bare interessert i å hente ut en gitt kolonne fra tabellen vår, la oss si at vi skal lage en e-postliste og vi bare trenger e-postadressene;
mysql> SELECT epost FROM person; +-----------------------+ | epost | +-----------------------+ | vegard AT hardware.no | | ola AT eksempel.no | | kari AT eksempel.no | | per AT eksempel.no | | knut AT eksempel.no | +-----------------------+ 5 rows in set (0.00 sec)
Som du ser kan vi bruke MySQL til å hente ut nøyaktig den informasjonen vi trenger fra en tabell, ved å benytte enkle spørringer.