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.
Tabeller
Med all vår nyervervede kunnskap om datatyper, er det på tide å opprette vår første tabell. Tabellen vi lager skal brukes til å lagre en liste over personer, med fornavn, etternavn, fødselsdato og e-postadresse. For enkelhets skyld kaller vi tabellen vår person.
For å opprette en tabell, bruker vi en SQL-setning som kalles CREATE TABLE. Uten å gå videre inn på syntaksen, presenterer vi bare spørringen her, og så skal vi gjennomgå den etterpå. Slik ser den ut når vi skriver den direkte inn i MySQL-prompten.
mysql> CREATE TABLE person (
-> fornavn VARCHAR(255),
-> etternavn VARCHAR(255),
-> fodselsdato DATE,
-> epost VARCHAR(255)
-> );
Query OK, 0 rows affected (0.03 sec)
MySQL indikerer nederst at spørringen var OK, og at ingen rader ble påvirket, noe som betyr at vi ikke satte inn noe faktisk data. Syntaksen for CREATE TABLE er ganske enkel; først kommer navnet på tabellen vi skal lage. Deretter følger deklarasjonen av kolonnene, separert av komma. En kolonne begynnes med navnet på kolonnen, etterfulgt av datatypen og en eventuell størrelse (merk at DATE ikke krever noen størrelse).
Om du vil sjekke om tabellen din ble korrekt opprettet, prøv å skrive "DESCRIBE person;". Forhåpentligvis blir resultatet som følger;
mysql> DESCRIBE person; +-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | fornavn | varchar(255) | YES | | NULL | | | etternavn | varchar(255) | YES | | NULL | | | fodselsdato | date | YES | | NULL | | | epost | varchar(255) | YES | | NULL | | +-------------+--------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
Hver rad som vi nå setter inn i person-tabellen, vil nå bestå av et fornavn, et etternavn, en fødselsdato og en e-postadresse. Om du ser i Default-kolonnen i beskrivelsen, ser du også at alle disse verdiene kan settes til NULL (tilsvarer NULL i PHP), og at dette faktisk er standardverdien.
Vi ønsker nå gjerne å sette inn noe data i tabellen vår, slik at vi har noe å teste mot. Vi gjør dette enkelt ved å bruke en INSERT INTO-spørring;
mysql> INSERT INTO person (fornavn, etternavn, fodselsdato, epost)
-> VALUES ('Vegard', 'Larsen', '1984-02-23', 'vegard AT hardware.no');
Query OK, 1 row affected (0.00 sec)
Du får en indikasjon på at innsettingen var vellykket, og at en rad i tabellen ble påvirket. Du kan sette inn flere rader, slik at vi har noe å teste med;
mysql> INSERT INTO person (fornavn, etternavn, fodselsdato, epost)
-> VALUES
-> ('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');
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
Her ser du at vi har satt inn flere verdier i en spørring, og at vi får noe mer informasjon ut fra MySQL i dette tilfellet. Nå har vi nok data til å begynne å undersøke innholdet i tabellen.