Leksjon 1: Tabeller og enkle spørringer
En database er en logisk samling av data. Vi jobber med
databaser via et databasehåndteringssystem (DBMS = DataBase
Management System), ofte ved å bruke spørrespråket SQL. I en
relasjonsdatabase er data organisert i tabeller.
I denne første leksjonen skal du lære hva en databasetabell er,
hvordan slike tabeller lar seg representere digitalt, og hvordan man
kan hente ut informasjon fra tabeller med SQL-spørringer.
Kom i gang med denne leksjonen
Læringsmål
- Kjenne til viktige bruksområder for spørrespråket SQL.
- Forstå forskjellen på en databasetabell og et regneark.
-
Kunne bruke SQL utvalgsspørringer (SELECT-spørringer) for å hente ut
data fra én tabell.
- Kunne velge ut rader og kolonner.
- Kunne sortere radene med hensyn på bestemte kriterier.
-
Kunne bruke funksjoner og operatorer til å lage uttrykk og
betingelser.
- Kunne kjøre SQL-spørringer i phpMyAdmin.
Pensum
Kapittel 2.1-2.4 fra Databasesystemer.
Nettsidene til læreboken
Forelesning
Kapittel 2: Spørringer mot én tabell
De siste lysarkene om gruppering og mengdefunksjoner blir behandlet i
en seinere leksjon, så de kan du bare hoppe over i første omgang.
Video
★
Skjerm
★
Utskrift
Oppgaver
I denne første leksjonen skal vi bruke databaser som er ferdig
definert og fylt med data.
Spørringene vi skal lage vil kun hente data fra én enkelt tabell.
Forberedelse: Kjøre SQL-skript i phpMyAdmin
Du kan løse oppgavene til denne første leksjonen rett i nettleseren:
-
Last ned SQL-skript som oppretter eksempeltabellen
LagAnsatt.sql (høyreklikk og velg
"Lagre" eller lignende).
-
Lagre filen på mappe leksjon01 og åpne skriptet i en editor (f.eks.
Sublime).
-
Logg på
itfag.usn.no/phpmyadmin/
med utdelt brukernavn og passord (publiseres i Canvas ved
semesterstart).
- Velg databasen som er opprettet for deg i venstremenyen.
-
Klikk SQL-knappen øverst i vinduet, lim inn koden fra SQL-skriptet, og
utfør skriptet.
Det er også mulig å åpne SQL-skript i nettleseren og bare
klippe-og-lime herfra og inn i phpMyAdmin, uten å gå veien om Sublime,
men da kan man risikere at norske spesialtegn (æ, ø og å) ikke blir
vist skikkelig. SQL-skriptet er lagret med tegnsett Unicode. Hvis
norske tegn ikke blir vist skikkelig, så kan du prøve å endre tegnsett
til Unicode. Prøv å søke etter "tegnsett" eller "encoding" og navn på
nettleseren.
LagAnsatt.sql
★
itfag.usn.no/phpmyadmin/
Oppgave A: Ansatt
Skriv SQL-spørringer for å hente ut følgende opplysninger:
-
Etternavn og årslønn for ansatte som tjener mer enn 700.000 kroner i
året. Tips: Resultatet skal altså ha 2 kolonner.
-
Etternavn, stilling og årslønn for alle som ikke er sekretærer og
tjener mindre enn 500.000 kroner i året.
-
Alle stillingsbetegnelser som er i bruk, og slik at ingen
stillingsbetegnelser kommer flere ganger.
-
Listen av ansatte sortert først på stilling, og deretter på etternavn.
-
Ansattnummer og navn for alle ansatte født i 1982. Fornavn og
etternavn skal stå i én kolonne adskilt av ett blankt tegn. Utskriften
skal dessuten inneholde årstall for ansettelse.Tips: Bruk
funksjonen CONCAT for å sette sammen tekster. Prøv først å skrive
SELECT CONCAT('a','b','c') i SQL-vinduet. Svaret blir 'abc'. Bruk
funksjonen YEAR for å trekke ut årstallet fra en dato. Se
SQL-dokumentasjonen
til MySQL for eksempler.
-
Etternavn og månedslønn for ansatte i markedsavdelingen. Tips: Bruk
funksjonen ROUND for å avrunde månedslønn til to desimaler, f.eks. vil
ROUND(123.456, 1) gi 123.5.
-
Personer ansatt før 2010 sortert på lønn, de som tjener mest først.
Tips: Skriv konkrete datoer slik: '2018-12-24' (julaften
2018). Du kan alternativt bruke funksjonen YEAR.
-
All informasjon om ansatte som har "sekretær" i tittelen.
Tips: Bruk "jokernotasjon"!
-
Ansattnr og stilling til alle ansatte som er eldre enn 40 år og tjener
mindre enn 450.000 kroner i året. Tips: Funksjonen
DATE_ADD legger et tidsintervall til en dato. F.eks. vil
DATE_ADD('2018-12-24', INTERVAL 3 DAY) returnere datoen '2018-12-27'.
Intervallet kan angis i ulike måleenheter, f.eks. WEEK, MONTH eller
YEAR. CURDATE gir dagens dato. Du må bruke den slik: CURDATE() –
altså med tomme parenteser!
MySQL-dokumentasjonen
Oppgave B: Film
Last ned og utfør SQL-skriptet
LagFilm.sql, som forklart over.
Prøv på oppgave 1a-1e, 1i og 1m fra kapittel 2 i læreboken.
Datasett Film
Oppgave C: Hytte (uten løsning)
Tar med enda noen ekstraoppgaver – disse vil det ikke bli
lagt ut løsning til.
Last ned og kjør SQL-skriptet for eksempel Hytte, og skriv
SQL-spørringer for å hente ut følgende opplysninger:
- Hytter som har både strøm og dusj.
- Hytter med "idyll" i beskrivelsen.
-
Alle hyttene sortert synkende på pris og deretter på avstand fra
alpinanlegg.
- Både hytter med 4 senger og hytter med 8 senger.
-
Beskrivelsen av hyttene, der det første ordet er skrevet med store
bokstaver. I første omgang kan du forutsette at beskrivelsen består av
minst to ord skilt med mellomrom. Tips: Se om du finner nyttige
funksjoner i MySQL-dokumentasjonen.
Datasett Hytte
★
MySQL-dokumentasjonen
Før du går videre
Les oppsummering til kapittel 2 og sjekk at du har forstått følgende
begreper:
- database
- databasehåndteringssystem
- databasesystem
- SQL
- databasetabell
- kolonne
- rad
- utvalgsspørring
- seleksjon
- projeksjon
- sortering
- operator
- funksjon
- uttrykk
- betingelse
Prøv gjerne relevante quiz-spørsmål:
Test deg selv quiz