Inleiding Is dit boek het juiste boek voor jou?



Dovnload 281.91 Kb.
Pagina8/8
Datum20.08.2016
Grootte281.91 Kb.
1   2   3   4   5   6   7   8

Structured Query Language

Eenvoudige queries


Wanneer een database veel gegevens bevat wordt het lastig om het overzicht te houden. Met behulp van de ‘vraagtaal’ Structured Query Language, afgekort SQL, kun je gegevens uit de tabellen selecteren. De twee belangrijkste mogelijkheden van SQL zijn:


  • gegevens opvragen. Je selecteert, via SQL, die gegevens die je op dat moment wilt zien.

  • gegevens veranderen. Met SQL kun je gegevens aan je database toevoegen, wijzigen of verwijderen.

SELECT … FROM … WHERE


SQL is een taal met een vaste structuur. De structuur voor het opvragen van gegevens uit de database is als volgt:
SELECT ( welke velden wil je zien?)

FROM (in welke tabel(len) wil je zoeken?)
WHERE
(aan welke criteria moeten de gegevens voldoen?)
Zo’n stukje SQL als hierboven heet een query.

Een voorbeeld:


Query 1

Je wilt weten welk profiel leerling Kees heeft. De query die je de juiste gegevens bezorgd is dan:


SELECT profiel

FROM leerlingen

WHERE naam=’Kees’
En je krijgt als resultaat:

EM
Query 2

En wanneer je wilt weten welke profielen de leerlingen met als voornaam Harry hebben wordt de query:


SELECT profiel

FROM leerlingen

WHERE naam=’Harry’
Met als resultaat de lijst:

NG

NT
Query 3

Je kunt ook gegevens uit meerdere velden selecteren. Kijk maar eens naar de volgende query.


SELECT id, naam, profiel

FROM leerlingen

WHERE naam=’Harry’
Het resultaat is nu:


  1. Harry NT

  2. Harry NG


Query 4

Met een sterretje geef je aan dat je alle velden van de tabel opvraagt. Het * teken kun je zien als een soort joker teken. Bij het kaartspel jokeren mag je de joker ook als iedere andere kaart gebruiken.


SELECT *

FROM leerlingen

WHERE naam=’Harry’
Deze query retourneert alle velden in de tabel leerlingen van iedereen die als naam ‘Harry’ heeft. De uitkomst is dezelfde als bij de vorige query.

Er zijn kennelijk twee leerlingen met de naam Harry die een verschillend profiel hebben.


Query 5

Zou je de gehele tabel, dus alle velden van iedereen in de tabel leerlingen willen opvragen, dan gebruik je de query:


SELECT *

FROM leerlingen

Oefenen met SQLOefenaar


Gesnapt? Of toch nog even oefenen? Bij dit hoofdstuk hoort een programma genaamd SQLOefenaar waarmee je de query's van dit hoofdstuk kunt oefenen.
Je vindt het bestand SQLOefenaar.exe en de bijbehorende database keuzepakket.accdb in de map waarin je de bij dit boek behorende bestanden hebt gezet. Als je de instructies in hoofdstuk 1 gevolgd hebt, is dit c:\vb2008metdatabases.


  1. Zoek in de verkenner de map met SQLOefenaar.exe op en dubbelklik op SQLOefenaar.exe.

  2. Kik op de knop Laad database en selecteer in map c:\vb2008metdatabases de database keuzepakket.accdb.

  3. Klik op Openen.

  4. Klik op de knop Voer query uit.

Je ziet het onderstaande:



Je ziet links boven in beeld een aantal selectievakjes en comboboxen om een query mee samen te stellen. Zodra je op de knop Voer query uit klikt, zie je in het tekstvak links onderaan de tekst van de query zoals jij die hebt samengesteld, en verschijnt in het datagrid rechts bovenaan het resultaat van de query. In de tekstvakken daaronder zie de gegevens van het eerste record van de opgehaalde records.


  1. Voer de query’s die hiervoor staan uit en kijk naar de resultaten.

Iets uitgebreidere query’s

ORDER BY


Maar met query’s kun je veel meer. Wanneer je de gegevens die je ophaalt alfabetisch wilt sorteren op de inhoud van het veld id, gebruik dan ORDER BY:
SELECT id, naam, profiel

FROM leerlingen

WHERE naam= ‘Harry”

ORDER BY id ASC
ASC sorteert de opgehaalde gegevens in opklimmende volgorde, DESC in aflopende volgorde.


  1. Oefen deze en de volgende query's met de SQLOefenaar

In plaats van het veld te noemen mag je ook het nummer van het veld aangeven.


SELECT id, naam, profiel

FROM leerlingen

ORDER BY 2 ASC
Deze query laat de id, namen en profielen van de leerlingen in opklimmende volgorde zien, gesorteerd naar het tweede geselecteerde veld, naam.

DISTINCT


De namen Harry en Nelleke komen meerdere keren voor. Om vaker voorkomende items slechts 1 keer te tonen gebruik je DISTINCT. De query voor een lijst met alle namen, 1 keer getoond en oplopend alfabetisch gesorteerd luidt:
SELECT DISTINCT naam

FROM leerlingen

ORDER BY naam ASC
(Als je dit probeert in de SQLOefenaar, vervang je naam door 1; het nummer van het veld naam.)
Je hebt nu geoefend met een aantal woorden van SQL; SELECT, FROM, WHERE, ORDER BY, ASC, DESC en DISTINCT. Met deze woorden kun je lijsten gegevens opvragen uit één tabel. Maar zoals al eerder gezegd zitten bij elkaar horende gegevens meestal verspreid over meerdere tabellen.

Het koppelen van de tabellen in SQL.


Vaak wil je gegevens uit meerdere tabellen combineren. Zo wil je bijvoorbeeld weten welke vakken horen bij het profiel dat Kees volgt. Wanneer je gegevens uit meerdere tabellen wilt opvragen moet je een koppeling tussen de beide tabellen aanbrengen.
Achter SELECT vermeld je zoals gewoonlijk de namen van de velden die je wilt zien. Let op! Omdat in beide tabellen het veld profiel voorkomt, moet je vermelden van welke tabel je het veld profiel wilt zien. Wanneer je het veld profiel uit de tabel leerlingen wilt zien, en dus niet het veld profiel uit de tabel profielen, schrijf je: leerlingen.profiel. Dus:
SELECT id, naam, leerlingen.profiel, vak1, vak2, vak3
Achter FROM vermeld je welke velden van welke tabellen je aan elkaar wilt koppelen. Dit gaat met het INNER JOINON commando. De syntaxis van dit commando is als volgt:
FROM tabel1 INNER JOIN tabel2 ON tabel1.veld = tabel2.veld. Ofwel:
FROM profielen INNER JOIN leerlingen ON profielen.profiel = leerlingen.profiel
De hele query is dan:
SELECT id, naam, leerlingen.profiel, vak1, vak2, vak3

FROM profielen INNER JOIN leerlingen ON profielen.profiel = leerlingen.profiel

WHERE naam = ‘Kees’
Het resultaat is een overzicht van het id, de naam, het profiel en de 3 bijbehorende vakken, keurig bij elkaar gezocht uit beide tabellen.

Oefeningen


Maak query’s die als resultaat precies die gegevens tonen die je nodig hebt om de volgende vragen te kunnen beantwoorden.


  1. Welke vakken komen voor in het profiel CM ?

  2. Welke profielen bestaan er waarvan het eerste vak wiskunde is ?

  3. Welk profiel heeft als derde vak natuurkunde ?

  4. Laat de profielen gerangschikt zien.

  5. Laat alle profielen en vakken zien waarbij vak1 wiskunde is en rangschik naar vak3.

  6. Laat vak1 en vak 3 zien van het profiel NG.

  7. Laat vak 1 en vak 2 zien van het profiel EM.

Tenslotte


Je kunt ook query’s maken in Microsoft Access. Hierover de volgende korte uitleg:


  1. Start Microsoft Access 2007 en laad de database keuzepakket.accdb. Als je Access 2000 of 2003 gebruikt, laadt je keuzepakket.mdb. Deze bestanden vind je in de map c:\vb2008metdatabases.

  2. Klik eventueel linksboven op de tab Tabellen om de tabellen te zien.

Je kunt de tabellen leerlingen en profielen zien.




  1. Klik nu op de tab Maken.

  2. Klik op Queryontwerp.

  3. In het scherm Tabel weergeven zie je de tabellen leerlingen en profielen.

  4. Selecteer leerlingen en klik op toevoegen.

  5. Selecteer profielen en klik op toevoegen.

Je ziet beide tabellen en de relatie tussen de velden profiel in beide tabellen.




  1. Klik op Sluiten.

  2. Dubbelklik op * in de tabel leerlingen.

  3. Klik in de werkbalk op het driehoekje onder Weergave.

  4. Klik op SQL-weergave.

Je ziet de gegenereerde SQL.




  1. Klik in de werkbalk op het driehoekje onder Weergave.

  2. Klik op Gegevensbladweergave.

Je ziet het resultaat van de query. Maak zelf maar eens een paar query’s in het scherm SQL en kijk dan in de schermen SQL-weergave en Gegevensbladweergave naar het resultaat.



1 Trouwens, een eenmaal gemaakt en daarna verwijderd nummer wordt nooit meer opnieuw gegenereerd. Het kan wel “handmatig” in de database zelf worden ingevuld.

Inleiding Pagina


1   2   3   4   5   6   7   8


De database wordt beschermd door het auteursrecht ©opleid.info 2017
stuur bericht

    Hoofdpagina