Du er her: Hovedside > Artikler > MySQL > Artikkel

Slik bruker du MySQL

Skrevet av: GratisGuide.net

I denne artikkelen skal vi se nærmere på hvordan vi bruker språket SQL for å hente ut informasjon fra en database. Vi viser med eksempler hvordan du bruker SQL og spesielt MySQL. Eksemplene våre er lagt opp slik:

SQL-eksempler er angitt på denne måten

Resultat av SQL-spørringer vises på denne måten

Kort om SQL

SQL står for structured query language, strukturert spørringsspråk, og er en standarisert måte å foreta spørringer mot en database på. SQL i våre eksempler fungerer altså med MySQL.

Litt om eksemplene våre

I eksemplene våre skal vi foreta spørringer mot to tabeller i en database. Våre to tabeller ser slik ut:

Tabellen Ansatte                               Tabellen Avdeling
---------------------------------------------  ---------------------
| ansId | ansFornavn | ansEtternavn | avdId |  | avdId | avdSted   |
---------------------------------------------  ---------------------
|    1  | Kari       | Karlsen      |    3  |  |    1  | Oslo      |
|    2  | Ola        | Olsen        |    1  |  |    2  | Bergen    |
|    3  | Gunn       | Gjertsen     |    1  |  |    3  | Trondheim |
|    4  | Hans       | Hansen       |    2  |  ---------------------
|    5  | Lise       | Larsen       |    3  |
|    6  | Per        | Pålsen       |    3  |
|    7  | Marie      | Matsen       |    2  |
|    8  | Karl       | Knutsen      |    3  |
|    9  | Hanne      | Helgesen     |    1  |
|   10  | Egil       | Eriksen      |    2  |
---------------------------------------------

Her ser vi at vi har to tabeller, den første kalt Ansatte. Den tabellen har fire felt (kolonner) og i tabellen ligger det ti poster (rader). I den andre tabellen, kalt Avdeling, er det to felt og det ligger tre poster i den.

Enkel spørring med SELECT

Vi kan hente all informasjon fra tabellen Ansatte med spørringen nedenfor. Vi velger å hente all data i alle felt (angitt med *):

SELECT * FROM Ansatte

Vi kan også skrive spørringen over på denne måten:

SELECT ansId, ansFornavn, ansEtternavn, avdId FROM Ansatte

Disse to spørringene henter ut data i vilkårlig rekkefølge, det vil si i den rekkefølgen det passer databasen.

Sortering av resultatet med ORDER BY

Hvis vi vil sortere postene, la oss si etter etternavn, kan vi bruke følgende spørring:

SELECT * FROM Ansatte ORDER BY ansEtternavn

- - eller - -

SELECT * FROM Ansatte ORDER BY ansEtternavn ASC

Da vil vi få postene sortert i rekkefølge etter etternavn, som vist nedenfor (vær oppmerksom på at sorteringen følger språkoppsettet til databasen og det er derfor ikke gitt at våre norske tegn - æ ø å - havner på rett plass).

=============================================
| ansId | ansFornavn | ansEtternavn | avdId |
---------------------------------------------
|   10  | Erik       | Eriksen      |    2  |
|    3  | Gunn       | Gjertsen     |    1  |
|    4  | Hans       | Hansen       |    2  |
|    9  | Hanne      | Helgesen     |    1  |
|    1  | Kari       | Karlsen      |    3  |
|    8  | Karl       | Knutsen      |    3  |
|    5  | Lise       | Larsen       |    3  |
|    7  | Marie      | Matsen       |    2  |
|    2  | Ola        | Olsen        |    1  |
|    6  | Per        | Pålsen       |    3  |
=============================================

Begge spørringene ovenfor sorterer postene i stigende rekkefølge. Dersom vi ønsker å sortere i synkende rekkefølge kan vi skrive spørringen slik:

SELECT * FROM Ansatte ORDER BY ansEtternavn DESC

Resultatet blir:

=============================================
| ansId | ansFornavn | ansEtternavn | avdId |
---------------------------------------------
|    6  | Per        | Pålsen       |    3  |
|    2  | Ola        | Olsen        |    1  |
|    7  | Marie      | Matsen       |    2  |
|    5  | Lise       | Larsen       |    3  |
|    8  | Karl       | Knutsen      |    3  |
|    1  | Kari       | Karlsen      |    3  |
|    9  | Hanne      | Helgesen     |    1  |
|    4  | Hans       | Hansen       |    2  |
|    3  | Gunn       | Gjertsen     |    1  |
|   10  | Erik       | Eriksen      |    2  |
=============================================

Velge resultat med WHERE

La oss si vi bare ønsker å hente ut ansatte som hører til Oslo-avdelingen. Vi ser fra Avdeling-tabellen over at Oslo har avdId 1 (men det er verdien til avdId i Ansatte-tabellen vi spør på).

SELECT * FROM Ansatte WHERE avdId = 1

Resultatet vi får fra databasen blir:

=============================================
| ansId | ansFornavn | ansEtternavn | avdId |
---------------------------------------------
|    2  | Ola        | Olsen        |    1  |
|    3  | Gunn       | Gjertsen     |    1  |
|    9  | Hanne      | Helgesen     |    1  |
=============================================

Velge ut og sortere resultat med WHERE og ORDER BY

Vi kan også sortere tabellen som vi gjorde over:

SELECT * FROM Ansatte WHERE avdId = 1 ORDER BY ansEtternavn

Resultatet av spørringen blir slik:

=============================================
| ansId | ansFornavn | ansEtternavn | avdId |
---------------------------------------------
|    3  | Gunn       | Gjertsen     |    1  |
|    9  | Hanne      | Helgesen     |    1  |
|    2  | Ola        | Olsen        |    1  |
=============================================

Begrense resultat med LIMIT

Vi kan også legge til begrensninger. Vi ønsker bare de to første fra Oslo-avdelingen:

SELECT * FROM Ansatte WHERE avdId = 1 ORDER BY ansEtternavn LIMIT 2

Med LIMIT kan vi hente spesifikke poster. For eksempel kan vi hente tredje og fjerne ansatte ved å bruke:

SELECT * FROM Ansatte WHERE avdId = 1 ORDER BY ansEtternavn LIMIT 2, 2

Med LIMIT og én verdi angir vi hvor mange poster vi vil ha (LIMIT 2, to første). Med to verdier angir vi hvor mange poster vi vil ha og fra hvilken post (LIMIT 9, 2, to poster, tiende og ellevte post). Merk deg at 0 er første post.

Slå sammen felter med CONCAT

Det er også mulig å slå sammen verdier fra to felt. Vi har for- og etternavn, og med SQL kan vi slå sammen disse til å bli et fullt navn. Vi lager en slik spørring:

SELECT *, CONCAT (ansFornavn,' ',ansEtternavn) AS ansNavn FROM Ansatte ORDER BY ansEtternavn

Her er resultatet av denne spørringen:

==============================================================
| ansId | ansFornavn | ansEtternavn | avdId | ansNavn        |
--------------------------------------------------------------
|   10  | Erik       | Eriksen      |    2  | Erik Eriksen   |
|    3  | Gunn       | Gjertsen     |    1  | Gunn Gjertsen  |
|    4  | Hans       | Hansen       |    2  | Hans Hansen    |
|    9  | Hanne      | Helgesen     |    1  | Hanne Helgesen |
|    1  | Kari       | Karlsen      |    3  | Kari Karlsen   |
|    8  | Karl       | Knutsen      |    3  | Karl Knutsen   |
|    5  | Lise       | Larsen       |    3  | Lise Larsen    |
|    7  | Marie      | Matsen       |    2  | Marie Matsen   |
|    2  | Ola        | Olsen        |    1  | Ola Olsen      |
|    6  | Per        | Pålsen       |    3  | Per Pålsen     |
==============================================================

Vi kan utvide spørringen til å velge poster etter avdeling, denne gangen alle ansatte i Bergen (som har avdId '2' som vi ser av Avdeling-tabellen):

SELECT *, CONCAT(ansFornavn,' ',ansEtternavn) AS ansNavn FROM Ansatte WHERE avdId = '2' ORDER BY ansEtternavn

Resultatet av denne spørringen blir:

==============================================================
| ansId | ansFornavn | ansEtternavn | avdId | ansNavn        |
--------------------------------------------------------------
|   10  | Erik       | Eriksen      |    2  | Erik Eriksen   |
|    4  | Hans       | Hansen       |    2  | Hans Hansen    |
|    7  | Marie      | Matsen       |    2  | Marie Matsen   |
==============================================================

Til slutt kan vi lage en spørring som henter informasjon fra begge tabeller, for å lage en slags ansatt-liste.

SELECT Ansatte.ansId, CONCAT(Ansatte.ansFornavn,' ',Ansatte.ansEtternavn) AS ansNavn, Avdeling.avdSted FROM Ansatte, Avdeling ORDER BY Ansatte.ansEtternavn

Her har vi igjen slått sammen navnene til et fullt navn. Legg merke til at vi her ikke henter alle felter (*), men har angitt hvilke vi vil ha. Det er brukt tabell-referanser. Siden vi henter informasjonen fra to forskjellige tabeller er det en god idé (og mange ganger påkrevet) å ta med i spørringen hvilken tabell vi vil ha informasjon fra. Vi angir i hvilken tabell feltet vi vil bruke ligger i på denne måten:

[Databasenavn.][Tabellnavn.]Feltnavn

Det som står i [] er valgfritt.

Resultatet av spørringen vår blir:

======================================
| ansId | ansNavn        | avdSted   |
--------------------------------------
|   10  | Erik Eriksen   | Bergen    |
|    3  | Gunn Gjertsen  | Oslo      |
|    4  | Hans Hansen    | Bergen    |
|    9  | Hanne Helgesen | Oslo      |
|    1  | Kari Karlsen   | Trondheim |
|    8  | Karl Knutsen   | Trondheim |
|    5  | Lise Larsen    | Trondheim |
|    7  | Marie Matsen   | Bergen    |
|    2  | Ola Olsen      | Oslo      |
|    6  | Per Pålsen     | Trondheim |
======================================


Warning: main(/home/thomarn1/public_html/elementer/skript/annet_sql.php) [function.main]: failed to open stream: No such file or directory in /home/thomarn1/public_html/artikler/mysql/slik-bruker-du-sql.html on line 190

Warning: main() [function.include]: Failed opening '/home/thomarn1/public_html/elementer/skript/annet_sql.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/thomarn1/public_html/artikler/mysql/slik-bruker-du-sql.html on line 190

Opphavsrett

Ønsker du å gjengi denne artikkelen eller noe fra den må du gjerne gjøre det, men ikke glem kildereferanse. For å lenke til denne artikkelen kan du bruke URL-en http://www.gratisguide.net/artikler/mysql/slik-bruker-du-sql.html.

Tilbake til Artikler / MySQL



Annonse

Annonse

Google

GratisGuide.net
» Forsiden
» Om oss
» Nyhetsbrev
» Lage lenker til oss
» Opphavsrett

Nyhetsklipp
» Hovedside
» RSS-feeds

Artikler
» Hovedside
» Apache webserver
» Domenenavn
» Grafikk og clipart
» HTML og CSS
  » Hjemmeside på 1-2-3
  » Lage en basis-side
» Javascript
» MySQL
» PHP
» Søkemotorer
» WAP og WML
» Webdesign

Ressurs-databasen
» Hovedside
» Dmoz / ODP
  » World/Norsk/
  » Regional/.../Norway/
» Domeneavn/e-post
» Gjestebøker
» Grafikk
» Innhold/syndikert
» Juridisk/nettikette
» Lenke-/bannerbytte
» Programmeringsspråk
  » HTML
  » Javascript
  » MySQL og SQL
  » PHP
  » WML-script
» Reklame/annonsering
» Søkemotorer/kataloger
» Statistikk/tellere
» Topplister
» Vedlikehold
» WAP og WML
» Webdesign-maler
» Webhotell
» Webmaster-forum
» Annet

Bokdatabasen
» Hovedside
» Databaser
» Handel og markedsføring
» Innholdsredigering
» Juridisk
» Programmering
» Programvare
» Websideutvikling
» Generelt

Kodeservice
» Hovedside
» Kodegeneratorer
  » Dato
  » Fylkesliste
  » Meta-merke
  » Rammesett
  » Søkebokser
  » Sprett-opp-vindu
  » Stilark
  » WML

Innholdstjenester
» Hovedside
» Diskusjonsforum
» IP-adresse
» Nyhetsoversikt
» Om dagen i dag