0%

Wanneer een bestand niet meer genoeg is · oefening

Vraag één kolom op met SELECT

Stel dat je alleen wilt zien welke categorieën in de uitleencatalogus voorkomen. Je hebt de ID’s en namen van de voorwerpen niet nodig en kunt dus alleen de kolom category opvragen:

SELECT category FROM items;

Voer die opdracht uit en SQLite geeft één kolom terug:

Columns: category
electronics
events
tools

Zo’n opdracht is een SQL-query. Een query vraagt een database om een resultaat. SQL staat voor Structured Query Language.

Lees de query van links naar rechts. SELECT category zegt welke kolom je terug wilt krijgen. FROM items zegt welke tabel de rijen moet leveren.

Vraag de namen van de voorwerpen op

De editor heeft query.sql geopend. De beginnende query vraagt het id van elk voorwerp op. Verander die ene kolomnaam in name en druk op Run.

Zoek dit resultaat:

Columns: name
Cordless drill
Folding table
Projector

Je hebt de tabel items niet veranderd. Je hebt SQLite gevraagd om een antwoord met één kolom en één resultaatrij voor elk opgeslagen voorwerp. Als twee voorwerpen dezelfde naam hebben, verschijnt die naam twee keer. Deze query vraagt niet om een rijvolgorde, dus dezelfde namen kunnen in een andere volgorde verschijnen.

Wanneer je je oplossing instuurt, voert het cursussysteem je query uit met een andere catalogus om te controleren of je geen sluiproute hebt genomen. Heb je je oplossing nog niet ingestuurd, dan is dit een goed moment!

Een paar details om op te letten

SQL-keywords worden vaak in hoofdletters geschreven, zodat ze opvallen tussen tabel- en kolomnamen. SQLite accepteert ook keywords in kleine letters. De puntkomma geeft het einde van de instructie aan.

De editor op deze site geeft de tekst in query.sql kleuren om die beter leesbaar te maken, net zoals bij Python-code.

Verschijnt er een foutmelding, vergelijk dan de kolom- en tabelnamen in je query met het schema uit de vorige les. Verander één ding en voer de query opnieuw uit. Gebruik Reset project in de projectwerkbalk om de oorspronkelijke bestanden terug te zetten.

Wat duidt de naam na FROM aan in SELECT category FROM items;?

Je hebt je eerste SQL-query geschreven en daarmee precies één deel van de catalogus opgevraagd. Tot nu toe opende Python de database buiten beeld. Het is tijd om die regel zelf te schrijven.

Opdracht

Open query.sql. De query vraagt nu het id van elk voorwerp op. Verander de query zodat SQLite alleen de kolom name uit items teruggeeft.

Voer de query uit en controleer of je op elke rij één naam ziet. Stuur de query daarna in. We proberen de query met een andere catalogus, dus laat SQLite de namen lezen in plaats van het zichtbare resultaat zelf over te typen.