aug 142012
 

En database er kun det værd, som informationerne i databasen er værd. Denne tutorial ser på de grundlæggende handlinger med data i en enkelt tabel ved hjælp af CRUD: Create, Read, Update og Delete.

En tabel i MySQL består af en række kolonner (arbejdet med tabeller er beskrevet i MySQL Tutorial – tabeller). Hver kolonne har et navn og en type, fx

name VARCHAR(200);

Kolonnerne er de lodrette rækker, kan man sige. De vandrette rækker indeholder informationerne i tabellen. Et eksempel fra vores mybirthdays tabel (Se MySQL Tutorial – tabeller):

+-------+----------+----------+-------+
| name  | phone    | birthday | email |
+-------+----------+----------+-------+
| Arne  | 12345678 | NULL     | NULL  |
| Bente | 19876543 | NULL     | NULL  |
+-------+----------+----------+-------+

Denne tabel viser i første række at Arne har telefonnummer 12345678 og vi kender ikke fødselsdag eller mail.

  1. Når vi opretter information, så indsættes informationen i tabellen. Det sker med kommandoen INSERT INTO navn VALUES
  2. Læsning af information sker ved at bede MySQL om nogle rækker i tabellen. Kommandoen SELECT * FROM navn; gør arbejdet
  3. Opdatering af information sker med kommandoen UPDATE navn SET
  4. Sletning af data kan ske stykvis med DELETE FROM navn WHERE eller hele møllen på én gang med TRUNCATE navn

Opret information

At oprette information – vi husker CRUD: Create – betyder, at vi indsætter en ny række i en tabel. Det foregår helt simpelt ved at skrive:

INSERT INTO mybirthdays VALUES 
  ("Carla", 86174700, "1990-12-12", "carla@carla.info"), 
  ("Dagmar", 86381448, "1980-01-01", "dagmar@eksempel.dk");

I vores eksempel indsætter vi to rækker på én gang. Det sparer tid at vi kan skrive flere ind på samme tid. Husk kommaet mellem parenteserne. Desuden skal du huske, at selv om datoer ikke er tekster, så skal de skrives mellem anførselstegn.

Anførselstegn kan enten være ” (almindeligt dobbeltanførselstegn) eller ‘ (almindeligt enkeltanførselstegn) – det skal bare være de samme før og efter en tekst.

Lad os nu forestille os, at vi møder Else, der har fødselsdag 1. marts 1912 med telefonnummer 97123118 og hun har ihvertfald ikke nogen computer! Der kan vi indsætte hende i tabellen på en lidt speciel måde:

INSERT INTO mybirthdays (name, phone, birthday) VALUES ("Else", 97123118, "1912-03-01");

På den måde kan vi indsætte en række uden at kende alle kolonner.

Nu har vi en lille tabel med noget indhold, lad os se, hvad der står.

Hent information

At hente information er at lave – tænk CRUD – en Read. Databaser er lidt specielle ved at de giver dig mulighed for at søge efter vandrette rækker af information. Det kan være op til dig, hvor mange du vil have. I udgangspunktet er databaser glade for at give dig alle de rækker, der svarer til det, du gerne vil have.

Lad os starte ovenfra. Skal vi hente alle rækker i en tabel, så skriver vi:

SELECT * FROM mybirthdays;

Og vi får dem alle sammen:

+--------+----------+------------+--------------------+
| name   | phone    | birthday   | email              |
+--------+----------+------------+--------------------+
| Arne   | 12345678 | NULL       | NULL               |
| Bente  | 19876543 | NULL       | NULL               |
| Dagmar | 86381448 | 1980-01-01 | dagmar@eksempel.dk |
| Carla  | 86174700 | 1990-12-12 | carla@carla.info   |
| Else   | 97123118 | 1912-03-01 | NULL               |
+--------+----------+------------+--------------------+

Læg mærke til, at de kolonner i rækkerne, vi ikke har information i står som NULL.

Nu bliver det nemt uoverskueligt at få alle navne med på en og samme tid, så vi har brug for en måde til at begrænse os på. Det kan vi gøre med følgende ændring:

SELECT * FROM mybirthdays WHERE name="Carla";

Så får vi kun rækken med Carla – hvis der altså er en Carla. Vi kunne prøve at skrive

SELECT * FROM mybirthdays WHERE name="Else-Lise";

Det giver et meget kort svar: Empty set – dvs. ingenting.

Hvis du undrer dig over, hvad * mellem SELECT og FROM laver, så kommer forklaringen nu. * betyder at vi gerne vil have alle kolonner. Var vi kun interesseret i Carlas telefonnummer i databasen, så kunne vi skrive:

SELECT name, phone FROM mybirthdays WHERE name="Carla";

Og vi får følgende retur:

+-------+----------+
| name  | phone    |
+-------+----------+
| Carla | 86174700 |
+-------+----------+

Vi får altså kun navn og telefonnummer. Vi kunne nøjes med at skrive:

SELECT phone FROM mybirthdays WHERE name="Carla";

Det giver os resultatet:

+----------+
| phone    |
+----------+
| 86174700 |
+----------+

Vi kan få flere kolonner ved at skrive dem med komma mellem. Vi kan nøjes med en kolonne, hvis det er nok.

En lille nyttig funktion til at se hvor mange der er af en slags hedder COUNT. Den fungerer sådan:

SELECT COUNT(*) FROM mybirthdays;

Vi får resultatet:

+----------+
| count(*) |
+----------+
|        5 |
+----------+

Der er mange flere muligheder med SELECT end jeg har vist her. Det kommer i en senere tutorial.

Nu er tiden nemlig kommet til at give Arne en mailadresse.

Opdatering af information

Arne har fået adressen “arne@vadested.info” og det vil vi lægge ind på den rette plads.

Lad os begynde med at slå Arne op:

SELECT * FROM mybirthdays WHERE name="Arne";

Det giver:

+------+----------+----------+-------+
| name | phone    | birthday | email |
+------+----------+----------+-------+
| Arne | 12345678 | NULL     | NULL  |
+------+----------+----------+-------+

Hvis der var to gange Arne vil vi få et problem, men det er der heldigvis ikke. Vi bruger denne kommando til at ændre Arne oplysninger:

UPDATE mybirthdays SET email="arne@vadested.info" WHERE name="Arne";

Kommandoen fortæller, at vi vil ændre en kolonne til noget andet. Og vi husker med WHERE at fortælle, hvilke rækker det skal gælde. Nu er der kun én Arne, så kun en række bliver opdateret.

Lad os se opdateringen, vi kører

SELECT * FROM mybirthdays WHERE name="Arne";

Og får:

+------+----------+----------+--------------------+
| name | phone    | birthday | email              |
+------+----------+----------+--------------------+
| Arne | 12345678 | NULL     | arne@vadested.info |
+------+----------+----------+--------------------+

Jeg anbefaler altid at bruge SELECT med samme WHERE før en UPDATE. Så kan jeg se, om det er den rigtige række, jeg får fat i. Der er ikke noget i MySQL, der hedder fortryd!

Slet information

Der er to måder at slette information i en tabel. Den ene sletter kun selektivt (men kan slette alt!), mens den anden tømmer hele tabellen. De to måder er:

  1. DELETE FROM mybirthdays
  2. TRUNCATE mybirthdays

Forestil dig, at Else med sine 100 år på bagen er død. Så skal vi ikke ringe til hende på hendes fødselsdag. Derfor skal hun slettes. Det kan vi gøre med:

DELETE FROM mybirthdays WHERE name="Else";

Og det bliver slettet.

HUSK! Der er ikke noget, der hedder fortryd i MySQL!

Glemmer du WHERE name="Else", så sletter du hele tabellen. Og du får det ikke tilbage. Derfor bruger jeg altid en test vha. SELECT for at sikre mig, det ikke går galt. Jeg ville altså skrive:

SELECT * FROM mybirthdays WHERE name="Else";

Svarer det resultat til det forventede, så kører jeg min DELETE.

Dagmar er så imponeret af min fødselsdagsdatabase, så hun vil gerne have en kopi. Naturligvis uden alle min familie og venners fødselsdage og telefonnumre osv. Vi kan tømme tabellen med ét hug:

TRUNCATE mybirthdays;

Og den er tom.


Vi har i denne tutorial gennemgået

  1. At indsætte information vha. INSERT INTO
  2. At hente information vha. SELECT * FROM
  3. At opdatere information vha. UPDATE
  4. At slette information vha. DELETE FROM og TRUNCATE
I den næste tutorial skal vi se på mere avancerede funktioner i SELECT.

 

Share

Sorry, the comment form is closed at this time.