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 databaseserver software software software SQL SQL SQL 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 Je moet dus de context van een database kennen Voorbeeld: het getal 37 op zich zegt niet zo veel Lichaamstemperatuur: geen koorts Bloeddruk: veel te laag
Wat is een database? Eigenlijk een heel simpele tabel Bestaat uit Rijen Kolommen Andere termen Kolom: velden of attributen Rij: records of entiteiten
Een voorbeeld Tabel T_voertuig Rij Kolom merk type prijs_per_maand Asprilla Exclusiv € 26,00 GT € 29,00 Rimi € 32,00 Garvin Luxe € 12,00 Modio € 14,00 Vespa GHT € 20,00 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 Bekijk nu de database in SQLite
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 Database SELECT * FROM T_voertuig T_voertuig merk type prijs_per_maand Asprilla Exclusiv € 26,00 GT € 29,00 Rimi € 32,00 Garvin Luxe € 16,00 Modio € 14,00 Vespa GHT € 20,00 Pronto € 22,00
Resultaat T_voertuig merk type prijs_per_maand Asprilla Exclusiv € 26,00 GT € 29,00 Rimi € 32,00 Garvin Luxe € 12,00 Modio € 14,00 Vespa GHT € 20,00 Pronto € 22,00
Wat houdt het in? SELECT * FROM T_voertuig T_voertuig SELECT * Selecteer alles FROM T_voertuig Uit de tabel ‘T_voertuig’ T_voertuig merk type prijs_per_maand Asprilla Exclusiv € 26,00 GT € 29,00 Rimi € 32,00 Garvin Luxe € 16,00 Modio € 14,00 Vespa GHT € 20,00 Pronto € 22,00
Een eenvoudige query (2) Mens Geef een overzicht met daarin alleen de merken van de scooters Database SELECT merk FROM T_voertuig T_voertuig merk type prijs_per_maand Asprilla Exclusiv € 26,00 GT € 29,00 Rimi € 32,00 Garvin Luxe € 16,00 Modio € 14,00 Vespa GHT € 20,00 Pronto € 22,00
Resultaat T_voertuig merk Asprilla Garvin Vespa
Wat houdt het in? SELECT merk FROM T_voertuig T_voertuig SELECT merk Selecteer alleen de kolom ‘merk’ FROM T_voertuig Uit de tabel ‘T_voertuig’ T_voertuig merk Asprilla Garvin 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 GT € 29,00 Rimi € 32,00
Wat houdt het in? SELECT * FROM T_voertuig WHERE merk = "Asprilla" Selecteer alles FROM T_voertuig Uit de tabel ‘T_voertuig’ WHERE merk = "Asprilla" Alleen als het merk gelijk is aan "Asprilla" Let op: een string, dus aanhalingstekens!
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 type prijs_per_maand Garvin Luxe € 12,00 Modio € 14,00
Wat houdt het in? SELECT * FROM T_voertuig WHERE prijs_per_maand < 20 SELECT * Selecteer alles FROM T_voertuig Uit de tabel ‘T_voertuig’ WHERE prijs_per_maand < 20 Alleen als het bedrag per maand kleiner is dan 20 Let op: een getal, dus geen aanhalingstekens!
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 attributen (kolommen) FROM tabel of tabellen WHERE voorwaarde
Voorbeeld 5 Datatypen
Een datum Mens Database Geef een overzicht van alle contracten met een ingangsdatum vanaf mei 1998 Database SELECT * FROM T_contract WHERE ingangsdatum >= 19980501 Let op: deze syntax kan per database verschillen!
Resultaat Contracten
Boolean gegevens Mens Database 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 SELECT * FROM T_contract WHERE einddatum IS NULL NULL betekent ‘leeg’ 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 en OR of NOT niet