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.
Hva med NULL
Som vi nevnte tidligere, kan alle feltene i tabellen vår ha en NULL-verdi, som tilsvarer noe av det samme som det gjør i PHP. Vi bruker hovedsaklig verdien NULL i MySQL når det er en kolonne som ikke gjelder for denne raden.
For eksempel, om vi skal legge inn musikkartisten Madonna i tabellen vår, ville vi gjort det med en NULL-verdi på etternavn og e-postadresse. Dette kan vi gjøre på en av to måter, enten ved å eksplisitt sette inn NULL i de relevante feltene når vi setter inn, eller lage en INSERT spørring der de relevante kolonnene ikke er nevnt. Her er begge metodene;
mysql> INSERT INTO person (fornavn, fodselsdato)
-> VALUES ('Madonna', '1958-08-16');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO person (fornavn, etternavn, fodselsdato, epost)
-> VALUES ('Madonna', NULL, '1958-08-16', NULL);
Query OK, 1 row affected (0.00 sec)
Om du nå henter ut alle med fornavn Madonna fra databasen, vil du se følgende;
mysql> SELECT * FROM person WHERE fornavn = 'Madonna'; +---------+-----------+-------------+-------+ | fornavn | etternavn | fodselsdato | epost | +---------+-----------+-------------+-------+ | Madonna | NULL | 1958-08-16 | NULL | +---------+-----------+-------------+-------+ 1 row in set (0.00 sec)
Om du skal lete etter personer som ikke har etternavn i databasen din, vil du måtte bruke en spesiell sjekk for å finne dem, fordi du kan ikke benytte WHERE etternavn = NULL i spørringen siden NULL er en spesialverdi.
mysql> SELECT * FROM person WHERE etternavn = NULL; Empty set (0.00 sec) mysql> SELECT * FROM person WHERE etternavn IS NULL; +---------+-----------+-------------+-------+ | fornavn | etternavn | fodselsdato | epost | +---------+-----------+-------------+-------+ | Madonna | NULL | 1958-08-16 | NULL | +---------+-----------+-------------+-------+ 1 row in set (0.00 sec)
Som du ser krever NULL litt spesiell behandling om du skal hente ut data basert på slike verdier.