Module VII - hoofdstuk 5 deel 1

advertisement
Module 7 – Hoofdstuk 5 (1)
SQL – een begin
Inleiding
• Wat is het verschil tussen data en
informatie?
• Data zijn een verzameling feiten,
meestal opgeslagen in een database
• Data vormen de grondstof van informatie
Een voorbeeld
• Een ziekenhuis heeft een grote database met
patiëntgegevens
• Deze data staat opgeslagen op een
databaseserver
• De data wordt opgevraagd vanaf meerdere pc’s
in het ziekenhuis en verwerkt tot informatie
• Er wordt doorgaans maar een deel van de data
opgevraagd
Van gegevens naar informatie
de gewenste
informatie
data uit een database
op een databaseserver
data uit de database halen
en verwerken
De techniek
SQL is de taal
(Structured
Query Language)
waarmee een
databaseserver
en software met
elkaar kunnen
‘praten’
databaseserver
netwerk
SQL
SQL
SQL
software
software
software
gebruiker
gebruiker
gebruiker
SQL
• M.b.v. SQL kun je gegevens van een database
invoeren, bewerken en opvragen
• Deze taal ga je leren
• Let op: data wordt pas informatie als het geplaatst
wordt in een bepaalde context
Voorbeeld: het getal 37 op zich zegt niet zo
veel
Lichaamstemperatuur: geen koorts
Bloeddruk: veel te laag
• Je moet dus de context van een database kennen
Wat is een database?
• Eigenlijk een heel simpele tabel
• Bestaat uit
– Rijen
– Kolommen
• Andere termen
– Kolom:
– Rij:
velden of attributen
records of entiteiten
Een voorbeeld
Tabel T_voertuig
merk
type
prijs_per_maand
Asprilla
Exclusiv
€ 26,00
Asprilla
GT
€ 29,00
Asprilla
Garvin
Rimi
€ 32,00
Luxe
€ 12,00
Garvin
Modio
€ 14,00
Vespa
GHT
€ 20,00
Vespa
Pronto
€ 22,00
Rij
Kolom
Doel van database
• Over zo veel mogelijk informatie
beschikken d.m.v. de opslag van zo
weinig mogelijk data
Hoe?
• Door meerdere tabellen te koppelen
We gaan werken met
een database met
vier tabellen
Deze database bevat
gegevens van klanten
die bij een
tweewielerzaak een
scooter huren
Mensen vs. database
• Ieder spreekt zijn eigen taal
• Mensen:
Nederlands, Engels, Turks
informatie
• Database:
SQL (Structured Query Language)
data
De taal van de database
• Mensen praten met mensen door middel
van ‘zinnen’
• Mensen praten met databases door
middel van ‘queries’
Een eenvoudige query (1)
• Mens
Geef een overzicht van alle gegevens van de
scooters
T_voertuig
• Database
SELECT *
FROM T_voertuig
merk
Asprilla
Asprilla
Asprilla
Garvin
Garvin
Vespa
Vespa
type
Exclusiv
GT
Rimi
Luxe
Modio
GHT
Pronto
prijs_per_maand
€ 26,00
€ 29,00
€ 32,00
€ 16,00
€ 14,00
€ 20,00
€ 22,00
Resultaat
T_voertuig
merk
type
prijs_per_maand
Asprilla
Exclusiv
€ 26,00
Asprilla
GT
€ 29,00
Asprilla
Garvin
Rimi
€ 32,00
Luxe
€ 12,00
Garvin
Modio
€ 14,00
Vespa
GHT
€ 20,00
Vespa
Pronto
€ 22,00
Wat houdt het in?
SELECT *
FROM T_voertuig
• SELECT *
– Selecteer alles
• FROM T_voertuig
– Uit de tabel ‘T_voertuig’
T_voertuig
merk
type
prijs_per_maand
Asprilla
Exclusiv
€ 26,00
Asprilla
GT
€ 29,00
Asprilla
Rimi
€ 32,00
Garvin
Luxe
€ 16,00
Garvin
Modio
€ 14,00
Vespa
GHT
€ 20,00
Vespa
Pronto
€ 22,00
Een eenvoudige query (2)
• Mens
Geef een overzicht met daarin alleen de
merken van de scooters
T_voertuig
• Database
SELECT merk
FROM T_voertuig
merk
Asprilla
Asprilla
Asprilla
Garvin
Garvin
Vespa
Vespa
type
Exclusiv
GT
Rimi
Luxe
Modio
GHT
Pronto
prijs_per_maand
€ 26,00
€ 29,00
€ 32,00
€ 16,00
€ 14,00
€ 20,00
€ 22,00
Resultaat
T_voertuig
merk
Asprilla
Asprilla
Asprilla
Garvin
Garvin
Vespa
Vespa
Wat houdt het in?
SELECT merk
FROM T_voertuig
T_voertuig
merk
• SELECT merk
– Selecteer alleen de kolom ‘merk’
• FROM T_voertuig
– Uit de tabel ‘T_voertuig’
Asprilla
Asprilla
Asprilla
Garvin
Garvin
Vespa
Vespa
Een eenvoudige query (3)
• Mens
Geef een overzicht van alle gegevens van de
scooters van het merk ‘Asprilla’
• Database
SELECT *
FROM T_voertuig
WHERE merk = "Asprilla"
Resultaat
T_voertuig
merk
type
prijs_per_maand
Asprilla
Exclusiv
€ 26,00
Asprilla
GT
€ 29,00
Asprilla
Rimi
€ 32,00
Wat houdt het in?
SELECT *
FROM T_voertuig
WHERE merk = "Asprilla"
• SELECT *
– Selecteer alles
• FROM T_voertuig
– Uit de tabel ‘T_voertuig’
Let op: een string, dus
aanhalingstekens!
• WHERE merk = "Asprilla"
– Alleen als het merk gelijk is aan "Asprilla"
Maar je kunt het toch ook direct in
de hele tabel bekijken?
• Jij wel, maar een computer niet
• Normaal gesproken heb je een zeer
grote database
• Wij gebruiken nu een heel kleine
database zodat het overzichtelijk blijft
Een eenvoudige query (4)
• Mens
Geef een overzicht van alle gegevens van de
scooters die per maand minder dan 20 euro
kosten
• Database
SELECT *
FROM T_voertuig
WHERE prijs_per_maand < 20
Resultaat
T_voertuig
merk
Garvin
type
prijs_per_maand
Luxe
€ 12,00
Garvin
Modio
€ 14,00
Wat houdt het in?
SELECT *
FROM T_voertuig
WHERE prijs_per_maand < 20
• SELECT *
– Selecteer alles
• FROM T_voertuig
Let op: een getal, dus geen
aanhalingstekens!
– Uit de tabel ‘T_voertuig’
• WHERE prijs_per_maand < 20
– Alleen als het bedrag per maand kleiner is dan 20
Lijst met relatie-operatoren
•
•
•
•
•
•
=
<>
>
>=
<
<=
gelijk aan
niet gelijk aan
groter dan
groter dan of gelijk aan
kleiner dan
kleiner dan of gelijk aan
Samenvatting tussendoor
• Structuur selectiequery:
SELECT
FROM
WHERE
attributen (kolommen)
tabel of tabellen
voorwaarde
Voorbeeld 5
• Datatypen
Een datum
• Mens
Geef een overzicht van alle contracten met
een ingangsdatum vanaf mei 1998
• Database
Let op: deze syntax kan
per database verschillen!
SELECT *
FROM T_contract
WHERE ingangsdatum >= 19980501
Resultaat
Contracten
Boolean gegevens
• Mens
Geef een overzicht van alle contracten met
een verzekering
• Database
SELECT *
FROM T_contract
WHERE verzekering = 1
1 als waar (true)
0 als onwaar (false)
Resultaat
Contracten
Niet ingevulde records
• Mens
Welke contracten hebben nog geen
einddatum?
• Database
NULL betekent ‘leeg’
SELECT *
FROM T_contract
WHERE einddatum IS NULL
Let op: niet ‘=‘ maar ‘IS’
Resultaat
Contracten
Een eenvoudige query (6)
• Mens
Geef een overzicht van alle gegevens van de
scooters van het merk ‘Vespa’ die per maand 22
euro of meer kosten
• Database
SELECT *
FROM T_voertuig
WHERE merk = "Vespa"
AND prijs_per_maand >= 22
Resultaat
T_voertuig
merk
type
prijs_per_maand
Vespa
Pronto
€ 22,00
Wat houdt het in?
SELECT *
FROM T_voertuig
WHERE merk = "Vespa"
AND prijs_per_maand >= 22
• WHERE merk = "Vespa"
– Alleen als het merk gelijk is aan "Vespa"
• AND prijs_per_maand >= 22
– EN het bedrag per maand groter of gelijk aan 22
Lijst met logische operatoren
• AND
• OR
• NOT
en
of
niet
Download