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