Hvordan opprette tabeller og database i MySQL

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009

Hvordan oppretter man tabeller i en MySQL database for å så å benytte denne i forbinnelse med login?

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Administrere MySQL med phpMyAdmin

For å gjøre dette litt grundig, vil jeg forklare hvordan en MySQL-database fungerer.

  1. Man har én eller flere databaser.
  2. I hver database har man tabeller (tables).
  3. I hver tabell har man felter (fields).

For å kontakte databasen må man bruke et databaseadministrasjonsprogram, man må også ha en databasebruker med rettigheter til å hente ut, legge til eller endre data i databasen. Mange webhotell kommer med én database og én databasebruker, mens andre, litt bedre webhotell gir deg muligheter til å opprette flere databaser og tilknytte brukere til disse databasene.

One gir f.eks. kun én databasebruker med alle rettigheter i én database, informasjonen om disse finner man i velkomstmailen man får fra One etter at man har kjøpt webhotell.

På webhotell hos f.eks. BlueHost har man ingen forhåndsdefinerte databaser, men må selv opprette en database og en databasebruker i MySQL. Dette er fordi man kan lage mange databaser og databasebrukere per webhotell hos BlueHost.

Administrere MySQL

Når man har en database, så er tiden moden for å legge tables (tabeller) i den. For å administrere en MySQL-database kreves det at man har et databaseverktøy, eller at man tar seg av administrasjonen gjennom kommandolinjen. Det mest populære er dog å bruke et WEBGUI som heter phpMyAdmin. Et webGUI lar deg administrere databasen gjennom nettleseren.

Hos både BlueHost, One og andre gode webhoster er phpMyAdmin ferdig installert, mens i andre tilfeller hender det man må legge inn phpMyAdmin selv.

Logge på phpMyAdmin hos One

For å logge på phpMyAdmin hos One går man til http://dbadmin.one.com og logger på med brukernavnet og passordet man fikk tilsendt i velkomstmailen.

Logge på phpMyAdmin hos BlueHost

For å logge på phpMyAdmin hos BlueHost, må man først logge på cPanel. Deretter finner man frem til phpMyAdmin under Databases.

Logget inn i phpMyAdmin

Når man er logget inn i phpMyAdmin har man tilgang til en rekke verktøy. Disse varierer ut fra hvilke rettigheter (privileges) databasebrukeren har for den enkelte database.

Fra phpMyAdmin kan man blant annet ta backup, gjenopprette fra backup, lage nye tabeller i databasen og lage felter i tabellene.

Litt tables i databasen

Det gjelder å lage logiske tables som holder de dataene som har en eller annen relasjon til hverandre. F.eks. kan det være lurt å lagre all informasjon om brukere i en tabell med navnet user_table el.l.

Man bør også ha som mål å kjenne til såkalt normalisering. Kort forklart innebærer det å ikke lagre samme data to ganger, men heller bruke nøkler for å binne forskjellige typer data til hverandre. Dog blir dette temaet for bredt til å gå inn på i akkurat denne guiden, men som alltid er du velkommen til å spørre hva databasenormalisering dreier seg om i en annen tråd. :)

Lage tables i phpMyAdmin

For å lage tables i phpMyAdmin, velger man først hvilken database man skal opprette tabellen i. Databasen velges i oversikten over databaser fra menyen til venstre.

Det er først når man har valgt hvilken database man vil jobbe med at man kan opprette tabeller, og dette gjøres ved å skrive inn ønsket navn på tabellen, og antall felter man vil ha i den. Merk at navnet ikke kan inneholde mellomrom, æøå osv. God praksis er å bruke engelske navn, samt. bytte ut mellomrom med underscore (_).

På bildet nedenfor oppretter vi tabellen user_table med 3 felter, hvor hvert felt skal inneholde forskjellige typer data.

Lage table i MySQL database

Når man har klikket på "utfør", vil man bli tatt videre til et nytt skjermbilde hvor man skal definere forskjellige ting for feltene i tabellen.

Sette datatyper for feltene i tabellen

I MySQL databaser gir man feltene forskjellige datatyper, og datatypen man velger skal være relevant for hva slags data den skal holde.

Det finnes mange forskjellige datatyper, men noen er mer vanlige enn andre. Vi skal ikke gå inn på alle de forskjellige datatypene her, men bruke de som er formålstjenelig å bruke for de dataene vi skal lagre. I vår tabell skal vi legge inn en brukerID, et navn og en epostadresse.

Siden brukerID utelukkende består av tall, ønsker vi å bruke datatypen INT (for integer).

For epostadressen og navnet bruker vi Varchar. Ett felt av datatypen varchar kan maks holde 255 tegn, hvilket holder både for et navn og en epostadresse.

Det er unormalt at en brukerID vil holde flere tegn enn 6, samt. at navn og epostadresser sjelden er lenger enn 65 tegn, derfor definerer vi makslengden på disse til hhv. 6, 65 og 65 tegn som vist på bildet nedenfor.

phpMyAdmin lager table i MySQL

Som man ser på illustrasjonen har man også en rekke andre valg. Blant annet kan man definere en standard for hva som skal legges inn i feltet, dersom kun noen av feltene populeres med data. I vårt tilfelle ønsker vi utelukkende data hvor samtlige felter er populert i hver rad (ett record, dvs. en bruker er én rad i tabellen).

For feltet user_id har vi satt "UNSIGNED" under "Attributter", dette er fordi brukerID utelukkende skal bestå av positive tall. Vi ønsker ikke at feltet skal kunne innholde "NULL" (som betyr ingenting), derfor har vi ikke ticket av for det.

Videre skal hver brukerID i tabellen være unik, derfor setter vi "Indeks" til "PRIMARY". Dette feltet kan senere brukes for å binde data mellom flere tabeller sammen (MySQL er en relasjonsdatabase).

Vi ønsker ikke "AUTO_INCREMENT", dette er kjekt dersom man vil at brukerID skal begynne på 1, og bevege seg oppover til 2, 3, 4, ... automatisk hver gang en ny bruker legges inn.

Ser over og forsikrer oss om at alt er riktig, og klikker deretter "Lagre".

Legge inn data i feltene i tabellen

Vi er nå klare til å legge inn data i tabellen. Dette gjør vi ved å klikke på "Sett inn" øverst i menyen når vi ser på tabellen vi har opprettet. Vi får da opp mulighet for å legge inn én eller flere brukere i tabellen vår.

I vårt tilfelle har vi lagt inn en bruker med user_id = 1, user_name = "Svett Mann" og user_email = "svett@mann.no". Vi klikker så på "Utfør" for å legge inn data som vist på bildet under.

phpMyAdmin legge inn data i MySQL

Gratulerer, du har nå laget din første tabell med felter og lagt inn data i feltene. Man kan selvsagt legge inn flere data i feltene, slik at man får øvd seg på å skrive SQL-spørringer.

Kjøre spørringer i databasen

Ved å kjøre SQL-queryer kan man hente hente ut den informasjonen man ønsker fra databasen. Dette gjøres enten ved å bruke phpMyAdmin til å lage såkalte SQL-queryer (SQL-spørringer) eller lære seg SQL selv (SQL står for Structured Query Language).

SQL er et enkelt, men likevel komplisert språk, hovedsakelig basert på Engelsk. Du kan f.eks. legge inn noen nye data i tabellen din, og kjøre disse spørringene fra phpMyAdmin under fanen "SQL".

SELECT * FROM user_table;
SELECT user_name, user_email FROM user_table;
SELECT user_name, user_email
  FROM user_table
    WHERE user_id = 1;
SELECT * FROM user_table
  LIMIT 1;
SELECT user_name, user_email
  FROM user_table
    WHERE user_id > 1
      LIMIT 2;

Indenteringen osv ovenfor er kun for å gjøre ting mer oversiktelig for deg. Det spiller ingen rolle om hele kommandoen kommer på samme linje. Det viktigste er at man avslutter en spørring med et semikolon (;).

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
Hva menes med det siste

Skjønte ingenting av det siste jeg...

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Vi tar bare det som omhandler

Vi tar bare det som omhandler MySQL-databasen og phpMyAdmin i denne tråden, resten av spørsmålet ditt er flyttet til tråden med spørmål om login mot database.

Ikke tenk så mye på hva du skal gjøre med dette, konsentrer deg heller om akkurat det jeg skrev i denne guiden, da dette er ytterst relevant å kunne før man tenker på hvordan man skal bruke HTML og PHP for å spørre etter og fetche data fra databasen.

Hva er det du ikke forstår? Fikk du kjørt spørringene? Hvis ja, fikk du ut data? Så du noen sammenheng mellom spørringene og data du fikk tilbake?

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
Altså, de kodene du skrev,

Altså, de kodene du skrev, hvor skriver man de? Til å begynne med

Altså, det funker inne på SQL menyen da, som du sa... Men, hva gjør jeg med det?

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
De kodene er SQL (Structured

De kodene er SQL (Structured Query Language). Ved å skrive slike foretar man såkalte SQL-spørringer til databasen. Disse kan kjøres mot databasen ved hjelp av PHP, gjennom CLI (Command Line Interface), eller som du skal gjøre nå: Gjennom phpMyAdmin.

For å kjøre noen spørringer, gå inn i phpMyAdmin, velg først database så tabell fra menyen til venstre i phpMyAdmin. I hovedvinduet får du da opp informasjon om tabellen. Klikk på fanen SQL som vist på illustrasjonen nedenfor for å kjøre SQL-queryer.

Kjøre SQL queries fra phpMyAdmin til MySQL

Skriv inn SQL-spørringen i hovedvinduet og klikk på "Utfør" når du vil kjøre spørringen. Du får da opp resultatene av den aktuelle spørringen.

For å kjøre en ny spørring klikker du tilbake i nettleseren din og prøver en ny kommando. Begynn med disse kommandoene:

SQL queries (SQL-spørringer)

Hent all informasjon fra table

Her bruker vi stjerne * som er et såkalt wildcard, det innebærer at vi ber om alt. Du skal mao. få opp alle data lagret i denne tabellen når du kjører denne spørringen.

SELECT * FROM user_table;

Hent noen fields fra table

I dette eksemplet henter vi kun feltene user_name og user_email fra tabellen user_table. Vi utelukker mao. user_id.

SELECT user_name, user_email FROM user_table;

Legg merke til at vi skiller de feltene vi ønsker å hente fra tabellen fra hverandre med komma.

Hent spesifikke data fra table

I dette eksemplet henter vi feltene user_name og user_email fra tabellen user_table der user_id er lik 1.

SELECT user_name, user_email
  FROM user_table
    WHERE user_id = 1;

Hent spesifikke data

Her henter vi ut feltene user_name og user_email fra tabellen user_table fra tabellen user_table der feltet user_id er større enn 1, men vi vil kun ha 2 resultater.

SELECT user_name, user_email
  FROM user_table
    WHERE user_id > 1
      LIMIT 2;

Hadde ikke hatt med LIMIT 2, så ville alle rader i databasen hvor feltet user_id var større enn 1 blitt returnert.

SQL queries med PHP

Når du har fått litt teken på SQL-spørringer, så er tiden moden for å bruke PHP til å foreta spørringene mot databasen.

Man kan da kombinere input fra brukeren for å hente frem akkurat de data som er ønskelig.

I denne videoen forklarer jeg hvordan Finn bruker query stringen i URL for å hente ut informasjon, for tilfellet riktig annonse. Den kan være kjekk å se for å forstå sammenhengene.

Hvis du har sett den før, så anbefaler jeg deg likevel til å se den igjen. Da du etter å ha forstått SQL litt mer ser hvordan URL'en hos finn danner grunnlaget for hvilke kriterier spørringen skal inneholde.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
Jeg har fått det til inne i

Jeg har fått det til inne i phpMyAdmin/SQL, sett hvordan ting funker etc. Akkurat det var ikke så vansklig å skjønne.

Det er heller hvordan jeg kan bruke det til noe nyttig, og som sagt, på den måten jeg ønsker...

 

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Lag ny tråd, hilsen trådhitler

Bra, da foreslår jeg at du oppretter en ny tråd (haha, tipper du blir oppgitt nå) og spør hvordan man bruker PHP for å kjøre SQL spørringer mot MySQL. :)

Etter vi har gjennomgått det, så tror jeg du vil sitte igjen med et WOW! Det gjorde i alle fall jeg, den gangen jeg brukte kraften i PHP sammen med MySQL for første gang. Idéene strømmet på, og jeg laget ekstremt mye småtterier, f.eks. ting som parset diverse rundt på nettet (lagret ting på nettet i min database), slik at jeg kunne søke i det etterpå.

Hente data fra MySQL med SQL queries via PHP

For de som vil lære å hente ut data fra MySQL ved hjelp av PHP, er det en videreføring av denne guiden her.

Svar på forumemnet

(If you're a human, don't change the following field)
Your first name.
Innholdet i dette feltet blir holdt privat og vil ikke bli vist offentlig.