Slotopmerkingen
Bedankt dat je het tot het einde hebt volgehouden! Ik hoop dat het aangenaam en verhelderend was om te lezen.
We hebben nu de meeste belangrijke SQL-commando’s en -functies behandeld, maar ik hoop dat je vooral de technieken en vuistregels om over queries na te denken zult onthouden. Enkele van de belangrijkste waren:
-
De vorm van de beschikbare tabellen vergelijken met het gewenste resultaat om te bepalen welke aggregatie nodig is.
-
Nagaan waar de informatie die we nodig hebben zich bevindt. Zit die in een aangrenzende rij? In een groep? Of in de hele dataset?
-
Queries interpreteren in de juiste logische structuur. Bijvoorbeeld voorwaarden zien als in wezen waar of onwaar;
<tabel1> JOIN <tabel2> ON ...zien als één grote tabel.
Als je je SQL-opleiding wilt afronden, is het waarschijnlijk de moeite waard om je te verdiepen in windowfuncties en common table expressions. Je kunt hun gedrag nabootsen met technieken die je hier hebt geleerd, maar ze maken het leven een stuk eenvoudiger en laten je kennismaken met een waardevol nieuw paradigma. Ik heb deze concepten weggelaten omdat SQLite op het moment van schrijven nog geen windowfuncties ondersteunde, en ik de complexiteit van een nieuwe database en een nieuw SQL-dialect wilde vermijden.
Tot nu toe hebben we ook alleen geleerd hoe je gegevens opvraagt (querying). Er is een heel ander deel van SQL voor het bewerken van gegevens. Dat gaat over handelingen zoals het aanmaken van tabellen en het invoegen en verwijderen van gegevens. Deze concepten begrijpen kan nuttig zijn, ook als je zelf geen databases beheert, omdat het je onder andere helpt te begrijpen waarom tabellen zijn opgebouwd zoals ze zijn.
Het belangrijkste is dat je nog veel oefening nodig hebt om echte problemen effectief te kunnen aanpakken. Het volgende gedeelte bevat een aantal oefeningen, maar de moeilijkheidsgraad neemt sterk toe. Misschien wil je eerst de wereld in om te oefenen met wat we tot nu toe hebben behandeld, en terugkomen als je er klaar voor bent.
Uitdagingsvragen
De oefeningen in de vorige hoofdstukken waren bedoeld om de complexiteit te beperken en zo een veilige leeromgeving te creëren. Dit hoofdstuk markeert de grens naar de wilde, ongetemde wereld van SQL-problemen. Het idee is een vuurdoop—de vragen zijn gekozen op hun praktisch nut in plaats van op leergemak. Zelfs ervaren SQL-schrijvers kunnen ermee worstelen; en juist in die worsteling zit veel waarde.
Oproep voor problemen
Goede problemen maken of breken een tutorial. Als je een idee hebt voor een nieuw probleem of een nieuw gedeelte, help ik je graag om het hier te plaatsen, met alle eer voor jou. Stuur me een e-mail op zichongkao@gmail.com of dien een pull request in. Onthoud dat goede problemen niet per se moeilijk zijn—ze laten technieken zien die breed toepasbaar zijn.
Dataset over cosponsorschap in de Senaat
Geschreven door: Kao
In dit gedeelte introduceren we een nieuwe dataset over de 114e zitting van het Congres (2015-2016), samengesteld door James Fowler en anderen. Ik heb de dataset bewerkt zodat we de cosponsorrelaties tussen senatoren kunnen bestuderen.
De senator die een wetsvoorstel indient, wordt de “sponsor” genoemd. Andere senatoren kunnen hun steun betuigen door het wetsvoorstel te cosponsoren. Cosponsors op het moment van indiening worden “original cosponsors” genoemd (Bron). Elke rij van de tabel toont het wetsvoorstel, de sponsor, een original cosponsor en de staten die de senatoren vertegenwoordigen. Merk op dat een wetsvoorstel meerdere cosponsors kan hebben.