aug 142012
 

Denne tutorial viser hvordan du helt grundlæggende håndterer tabeller i MySQL. Vi gennemgår de fire grundlæggende typer af handlinger med tabeller: Skab en tabel, Læs i en tabel, Opdater tabellen og Fjern tabellen igen.

PHMyAdmin note: i bunden er vist hvordan PHPMyAdmin kan klare jobbet for dig.

Som nævnt er der fire grundlæggende handlinger, vi har brug for med tabeller. Læg mærke til, at vi endnu ikke taler om at putte informationer i tabeller. Vi taler udelukkende om, hvilke handlinger vi kan bruge på tabeller som sådan. De fire muligheder er:

  1. CREATE TABLE mintabel
    Opretter en tabel i databasen med navn mintabel (Engelsk: Create)
  2. DESCRIBE mintabel
    Beskriver tabellen mintabel(Engelsk: Read)
  3. ALTER TABLE mintabel
    Ændrer formatet af tabellen mintabel (Engelsk: Update)
  4. DROP TABLE mintabel
    Sletter tabellen fra databasen – permanent! (Engelsk: Delete)

De fire typer grundlæggende handlinger er kendt som CRUD: Create, Read, Update, Delete. Det er faktisk et generelt mønster, som vi vil genbruge, når vi skal håndtere brugere, informationer i tabeller, filer på harddisken (fx billeder), osv.

Indledende opretter vi hurtigt en ny database til denne tutorial. Læs MySQL Tutorial – databaser hvis du er usikker på proceduren.

CREATE DATABASE IF NOT EXISTS mindatabase;
USE mindatabase;

Nu er vi klar til at oprette en ny tabel.

Opret tabel

En tabel består af en række kolonner (lodret) som har et navn og en type. Navne skal være forskellige i samme tabel, men du kan sagtens i to forskellige tabeller have samme navn. Dvs. der kan være kolonner, der hedder: “name”, “phone”, “address”, “age” i en tabel, men ikke “name”, “name”.

Kolonnetyper

Kolonner har typer. Typerne fortæller MySQL hvad det er for noget, der er i kolonnen. Det hjælper dig med at holde styr på dine informationer. Det hjælper MySQL med at sortere information og vælge information effektivt. Ulempen er, at du er tvunget til at bruge typen. Har du en gang fortalt at kolonnen “age” er et tal, så kan du ikke skrive et ord i kolonnen, det gælder også talord som niogtyve! De mest almindelige typer er:

  • INT og BIGINT
    Et heltal, dvs. tal uden komma, fx: 234. Meget store tal, fx telefonnumre kan gemmes som BIGINT
  • VARCHAR og CHAR
    Korte tekster med en fast maksimal længde, fx: “Jens Hansen”
  • TIME
    Et klokkeslet, fx 11:34 eller 23:59:00
  • DATE
    En dato uden klokkeslet, fx: 23-05-2012
  • DATETIME
    Dato og klokkeslet, fx. 23-05-2012 23:59:00
  • DECIMAL
    Tal med et fast antal decimaler, bruges gerne til valuta, fx: 234,00
  • FLOAT og DOUBLE
    Tal med et flydende antal decimaler og et vist antal cifre, fx: 3214,0345
  • BLOB og TEXT
    Kan indeholde så meget, du har brug for af hvad-som-helst. Gerne lange tekster
  • BOOL eller BOOLEAN
    Noget som er enten sandt (TRUE) eller falsk (FALSE).

Nu vi har beskrevet kolonnetyperne, så kan vi begynde at oprette tabeller.

Brug CREATE TABLE

Kommandoen til at oprette tabeller hedder CREATE TABLE. Vi vil gerne lave en tabel, der holder styr på familie og venners fødselsdage. For at gøre det nemt for os selv, så lægger vi også telefonnummeret ind i tabellen, så vi hver dag kan kontrollere tabellen og ringe til fødselsdagsbørnene.

Vi får brug for tre kolonner:

  • Navn
    Der er tradition for at bruge engelske kolonnenavne, så det bliver til : name.
    Kolonnetypen er VARCHAR, det er en tekst, Vi kan give den en længde på 200 tegn. Der er nok ingen, der har længere navne – som vi bruger i det daglige. Det giver os beskrivelsen af denne kolonne til:
    name VARCHAR(200)
  • Telefon
    Engelsk navn: phone
    Kolonnetypen kan være  et tal af typen BIGINT. Derfor:
    phone BIGINT
  • Fødselsdato
    Engelsk: birthday
    Kolonnetypen bør være en dato: DATE. Det giver os:
    birthday DATE

Vores tabel skal hedde: mybirthdays

CREATE TABLE mybirthdays (
  name VARCHAR(200),
  phone BIGINT,
  birthday DATE);

Og dermed har vi oprettet vores tabel. Vi kan nu gå videre til at se, hvordan den er struktureret.

Hvordan ser tabellen ud?

Når vi taler om tabeller på et overordnet plan, så er det ikke indholdet, vi interesserer os for. Vi interesserer os for, hvordan den er struktureret. Det bruger vi kommandoen DESCRIBE TABLE til.

Lad os prøve at køre kommandoen

DESCRIBE TABLE mybirthdays

Det giver resultatet:

+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| name     | varchar(200) | YES  |     | NULL    |       |
| phone    | bigint(20)   | YES  |     | NULL    |       |
| birthday | date         | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

Læg mærke til, at der er seks kolonner i alt. De betyder i rækkefølge:

  • Field – hvad hedder kolonnen
  • Type – hvilken type er kolonnen
  • Null – Må MySQL tillade, at den er tom
  • Key – betyder at kolonnen bliver brugt til at holde styr på indholdet og gøre opslag hurtigere
    Hvad Key helt præcist gør, vender vi tilbage til i en senere tutorial
  • Default – Hvad er standardværdien for nye informationer
    Det er også emnet for en senere tutorial
  • Extra – her står der ekstra oplysninger til MySQL om kolonnen
    Når vi har et indeks, der tæller op hver gang vi indsætter information, så kan vi  bede MySQL om at tælle op automatisk. Det er den slags, der står her

Når der er ændringer til tabellen

Vi er stadig i gang med at arbejde med, hvordan tabellen ser ud. Det kan være, vi har brug for at ændre tabellen. Forestil dig, at vi gerne vil kunne sende et tillykke på email. I princippet kunne vi gøre sådan her:

DROP TABLE mybirthdays;
CREATE TABLE mybirthdays (
  name VARCHAR(200),
  phone BIGINT,
  birthday DATE, 
  email VARCHAR(200));

Men så sletter vi samtidig alle informationer (DROP sletter en tabel, det ser vi på nedenfor). Det er ikke hensigtsmæssigt. Vi vil gerne bevare alle de gamle informationer og gøre plads til nye. Det gør vi med kommandoen:

ALTER TABLE mybirthdays ADD email VARCHAR(80);

Kommandoen tilføjer en kolonne, som hedder email og som er af typen VARCHAR(200), dvs. en tekst op til 80 tegn lang.

Lad os igen prøve kommandoen DESCRIBE TABLE mybirthdays for at se vores nye kolonner:

+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| name     | varchar(200) | YES  |     | NULL    |       |
| phone    | bigint(20)   | YES  |     | NULL    |       |
| birthday | date         | YES  |     | NULL    |       |
| email    | varchar(80)  | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

Nu tænker du måske, at 80 tegn ikke er meget til en mailadresse. Måske er det nok, men vi kan udvide bredden ved at skrive:

ALTER TABLE mybirthdays MODIFY email VARCHAR(200);

Og så er tabellen lavet om, så der er god plads til lange emailadresser.

Når vi nu sender en mail, så er der vel ingen grund til at bruge telefonen, så vi sletter den kolonne. Det sker ved at skrive:

ALTER TABLE mybirthdays DROP phone;

Nu skal du passe på. Når du sletter en kolonne er alle informationer i kolonnen slettet for evigt!

Læg også mærke til, at ordet DROP altid bruges i forbindelse med at slette noget. Og det er lige det, vi er kommet til nu

Slet en tabel

Når vi vil af med en tabel, så bruger vi DROP. Ordet DROP går igen i alle former for sletninger af struktur i MySQL. Vi opgiver vores tabel og sletter den med:

DROP TABLE mybirthdays;

Og når den er slettet er den væk for altid. Alle informationer lagret i tabellen er også væk.


I denne tutorial har vi set på CRUD på tabeller:

  1. Skab en ny tabel: CREATE TABLE navn (liste med kolonnenavne og typer);
  2. Læs strukturen på tabellen: DESCRIBE TABLE navn
  3. Opdater strukturen i tabellen med ALTER TABLE navn
  4. Fjern tabellen med DROP TABLE navn

Den næste tutorial i rækken beskriver hvordan vi lagrer informationer i en tabel.

Share

Sorry, the comment form is closed at this time.