Miniles SQL - NSG Groenewoud

advertisement
Nijmeegse Scholengemeenschap Groenewoud
Miniles gegevensbanken bevragen met SQL
In deze miniles gaat het over gegevensbanken of databases. Dit zijn bestanden waarin gegevens
kunnen worden opgeslagen. Het is dan van belang dat je op een eenvoudige manier informatie kunt
opvragen uit die vaak zeer grote bestanden. Toepassingen zijn er bij banken en
verzekeringsmaatschappijen maar ook de leerling-administratie van de NSG is in een database
opgeslagen. Als je daar gegevens uit wilt ophalen kun je dat doe met behulp van een zoekvraag of
een query.
Als je op Google iets opzoekt wordt er ook een query gemaakt en uitgevoerd en als het goed is krijg
je binnen een fractie van een seconde een hele berg websites aangedragen waarin je de door jou
gevraagde informatie kunt vinden.
De zoekvragen worden gesteld in een daarvoor ontwikkelde zoektaal: SQL (Structured Query
Language)
Bij deze miniles gebruiken we het programma AccSQL dat je op de informaticawebsite kunt vinden
onder het tabblad LINKS en de basishandleiding SQL
Een database bestaat uit één of meer tabellen. Een gegeven in zo’n tabel noemen we een record. Elk
record bestaat uit meerdere al dan niet ingevulde velden. Een voorbeeld van zo’n tabel is een tabel
met persoonsgegevens.
Tabel: persoonsgegevens
voornaam
Jan
Piet
Jasper
Malou
Janine
Joop
Adri
achternaam
Janssen
Paaltjens
Vaandrik
Mertens
Groothuis
Doedelmans
Aardmans
geslacht
M
M
M
V
V
M
M
adres
Kalverstraat 49
Mosterdlaan 123
Modelstraat 23
Jadeplein 12
Merellaan 67
Morgenster 23
Eikendreef 98
postcode
1123 BS
8765 AK
6543 HG
6521 KW
6598 BH
5647 KJ
6581 JK
plaats
Amsterdam
Rotterdam
Nijmegen
Nijmegen
Groesbeek
Arnhem
Malden
telefoon
010-1234567
020-7654321
024-8796541
024-9876543
024-3977777
026-1237890
024-3589999
Basishandleiding SQL
Een basis zoekvraag bestaat uit de volgende onderdelen:
SELECT
<veld1>, <veld2>, etc
FROM
<tabel>
Het SELECT element wordt gebruikt om een of meerdere velden uit een tabel op te vragen. Als er
meerdere velden worden bevraagd, dienen deze door een komma te worden gescheiden.
Het FROM element wordt gebruikt om aan te geven uit welke tabel of tabellen er gekozen wordt.
Als er meerdere tabellen worden bevraagd, dienen deze door een komma te worden gescheiden.
Voorbeeld van een zoekvraag:
Je wilt van alle personen de voornamen, de achternamen en het adres weten. De query ziet er dan als
volgt uit:
SELECT voornaam, achternaam, adres
FROM persoonsgegevens
Miniles SQL
1
Piet Geelen
Nijmeegse Scholengemeenschap Groenewoud
Dit levert als resultaat op:
voornaam
Jan
Piet
Jasper
Malou
Janine
Joop
Adri
achternaam
Janssen
Paaltjens
Vaandrik
Mertens
Groothuis
Doedelmans
Aardmans
adres
Kalverstraat 49
Mosterdlaan 123
Modelstraat 23
Jadeplein 12
Merellaan 67
Morgenster 23
Eikendreef 98
Nu kan het zijn dat je alleen maar personen uit Nijmegen wilt zien in het resultaat. Dan heb je te
maken met een voorwaarde, namelijk de personen moeten uit Nijmegen komen.
Voor de eerste voorwaarde gebruik je in SQL het WHERE element
De zoekvraag kan er dan zo uitzien:
SELECT
FROM
WHERE
voornaam, achternaam, plaats
persoonsgegevens
plaats = “Nijmegen”
Let op!
Als je in een voorwaarde in dit geval de plaats vergelijkt met een serie letters/karakters dan moet je
die serie letters tussen dubbele aanhalingstekens plaatsen.
Als je iets vergelijkt met een getal, dan mogen die aanhalingstekens niet gebruikt worden. Merk op
dat bij de telefoonnummers een streepje is verwerkt. Dat betekent dat dit dan geen getallen zijn!
Het resultaat van de query is nu:
voornaam
Jasper
Malou
achternaam
Vaandrik
Mertens
plaats
Nijmegen
Nijmegen
Je kunt ook gegevens sorteren; getallen van laag naar hoog en omgekeerd en letters van a tot z
(oplopend) en omgekeerd (aflopend). Daarvoor gebruik je het ORDER BY element. Indien je
oplopend wilt sorteren kun je de toevoeging ASC gebruiken, bij aflopend sorteren moet je de
toevoeging DESC gebruiken.
Voorbeeld van een zoekvraag:
Stel je wilt de persoonsgegevens allereerst op geslacht sorteren (aflopend) en vervolgens op
achternaam (oplopend).
Let op!
Als je alle velden van een tabel in het resultaat wilt zien hoef je niet alle veldnamen op te schrijven
maar kun je gebruik maken van een zogenaamde wildcard. In dit geval het sterretje ( * )
SELECT
*
FROM
persoonsgegevens
ORDER BY geslacht DESC, achternaam
Miniles SQL
2
Piet Geelen
Nijmeegse Scholengemeenschap Groenewoud
Het resultaat is dan
voornaam
Janine
Malou
Adri
Joop
Jan
Piet
Jasper
achternaam
Groothuis
Mertens
Aardmans
Doedelmans
Janssen
Paaltjens
Vaandrik
geslacht
V
V
M
M
M
M
M
adres
Merellaan 67
Jadeplein 12
Eikendreef 98
Morgenster 23
Kalverstraat 49
Mosterdlaan 123
Modelstraat 23
postcode
6598 BH
6521 KW
6581 JK
5647 KJ
1123 BS
8765 AK
6543 HG
plaats
Groesbeek
Nijmegen
Malden
Arnhem
Amsterdam
Rotterdam
Nijmegen
telefoon
024-3977777
024-9876543
024-3589999
026-1237890
010-1234567
020-7654321
024-8796541
Het is natuurlijk ook mogelijk om een zoekvraag uit te voeren waar meerdere voorwaarden worden
gesteld. We hebben eerder aangegeven dat de eerste voorwaarde met het WHERE element werd
gesteld. Elke volgende voorwaarde waaraan een zoekvraag ook moet voldoen wordt met het AND
element aangegeven.
Voorbeeld van een zoekvraag:
Stel je wil gegevens uit de tabel halen waarvoor geldt dat de personen uit Nijmegen moeten komen
en bovendien ook nog van het vrouwelijke geslacht dienen te zijn.
De query ziet er dan als volgt uit:
SELECT
FROM
WHERE
AND
*
persoonsgegevens
plaats = “Nijmegen”
geslacht = “V”
Het resultaat is dan
voornaam
Malou
achternaam
Mertens
geslacht
V
adres
Jadeplein 12
postcode
6521 KW
plaats
Nijmegen
telefoon
024-9876543
Het kan ook voorkomen dat je een zoekvraag stelt waarin je aangeeft dat je een keuze hebt uit 2 of
meer voorvaarden. In dat geval wordt voor de tweede en elke volgende voorwaarde het OR element
gebruikt.
Voorbeeld van een zoekvraag:
Stel je wil gegevens uit de tabel halen waarvoor geldt dat de personen uit Malden of uit Groesbeek
moeten komen. Het resultaat moet oplopend gesorteerd worden op plaats.
De query ziet er dan als volgt uit:
SELECT
FROM
WHERE
OR
*
persoonsgegevens
plaats = “Malden”
plaats = “Groesbeek”
Het resultaat is dan
voornaam
Janine
Adri
Miniles SQL
achternaam
Groothuis
Aardmans
geslacht
V
M
adres
Merellaan 67
Eikendreef 98
3
postcode
6598 BH
6581 JK
plaats
Groesbeek
Malden
telefoon
024-3977777
024-3589999
Piet Geelen
Nijmeegse Scholengemeenschap Groenewoud
Het kan zijn dat bepaalde velden geen informatie bevat. Dat veld is dus leeg. Om dat te achterhalen
maak je gebruik van het IS NULL element.
Voorbeeld van een zoekvraag:
Stel je wil weten of van iemand de postcode onbekend is.
De query ziet er dan als volgt uit:
SELECT
FROM
WHERE
*
persoonsgegevens
postcode IS NULL
In ons geval zal de resultaattabel bestaan uit 0 records omdat van iedereen de postcode is ingevuld.
Stel je bent op zoek naar gegevens van een persoon uit een database, maar je weet niet hoe die
persoon precies heet. Je weet wel dat de achternaam met een “V” begon. Hoe los je dat dan op?
Je kunt dan gebruik maken van de wildcard “%” en het LIKE element.
De query ziet er dan als volgt uit:
SELECT
FROM
WHERE
*
persoonsgegevens
achternaam LIKE “V%”
Het resultaat is dan
voornaam
Jasper
Miniles SQL
achternaam
Vaandrik
geslacht
M
adres
Modelstraat 23
4
postcode
6543 HG
plaats
Nijmegen
telefoon
024-8796541
Piet Geelen
Nijmeegse Scholengemeenschap Groenewoud
Keuze van de database
1.
2.
3.
4.
5.
Ga naar de website van informatica ( http://www.groenewoud.nl/subsites/informatica )
Kies het tabblad Links
Kijk onder het kopje Minilessen
Daarin staat de database leerlingen
Sla die op in je map op de computer
Het werken met AccSQL
1.
2.
3.
4.
5.
6.
Ga naar de website van informatica ( http://www.groenewoud.nl/subsites/informatica )
Kies het tabblad Links
Kijk onder het kopje Minilessen
Daarin staat een link naar AccSQL.
Klik op de link en kies 2 maal voor uitvoeren
Het programma wordt geopend.
•
•
•
•
•
•
•
•
•
Klik op het menu-item Bestand
Kies voor Openen
Selecteer de database leerlingen die je daarvoor hebt opgeslagen
Ga nu naar het menu-item Database
Kies voor tabellen. Je ziet nu bovenaan een map Leerlingen staan
Dubbelklik daarop en de gegevens van de tabel worden zichtbaar.
Ga weer naar het menu-item Database en kies nu voor SQL
Je krijgt nu een venster te zien waarin je de queries kunt maken en uitvoeren.
Aan de linkerkant zie je nu dat je een keuze hebt tussen het tabelvenster en het SQL-venster.
Opdrachten
Je mag bij alle opdrachten in het SELECT element het * gebruiken.
1.
2.
3.
4.
Welke leerlingen komen uit Utrecht? Sorteer de records aflopend op achternaam
Welke meisjes komen er uit Houten? Sorteer ze oplopend op klas.
Welke leerlingen hebben geen telefoon?
Welke leerlingen wonen in Utrecht in een straat waarin in ieder geval 2 a’s achter elkaar
voorkomen?
5. Welke leerlingen wonen in Bunnik of zitten in klas 4a?
6. Welke leerlingen hebben een postcode die begint met 35?
Miniles SQL
5
Piet Geelen
Download