Slotopmerkingen
Bedankt voor het blijven hangen tot het einde! Ik hoop dat het aangenaam en verhelderend was om te lezen.
Op dit punt hebben we de meeste belangrijke SQL-commando’s en -functies behandeld, maar ik hoop dat je vooral de technieken en heuristieken voor het bedenken van queries hebt geleerd. Enkele van de belangrijkste waren:
-
De vorm van beschikbare tabellen vergelijken met het gewenste resultaat om te beslissen welke aggregatie we moeten doen.
-
Onderzoeken waar de informatie die we nodig hebben zich bevindt. Zit het in een aangrenzende rij? Of in een groep? Of in de hele dataset?
-
Queries interpreteren in de juiste logische structuur. Bijvoorbeeld, clausules zien als in wezen waar of onwaar;
<table1> JOIN <table2> ON ...
zien als een grote tabel.
Vooruitkijkend is het, om je SQL-opleiding af te ronden, waarschijnlijk de moeite waard om je te verdiepen in windowfuncties en algemene tabeluitdrukkingen. Je kunt hun gedrag repliceren met technieken die je hier hebt geleerd, maar ze maken het leven een stuk eenvoudiger en introduceren je in een waardevol nieuw paradigma. Ik heb deze concepten weggelaten omdat op het moment van schrijven SQLite nog geen windowfuncties ondersteunde en ik de complexiteit van een nieuwe database en SQL-dialect wilde vermijden.
Tot nu toe hebben we ook alleen maar geleerd over het consumeren van gegevens (query’s). Er is een heel ander gebied van SQL voor het manipuleren van gegevens. Deze gaan over acties zoals het aanmaken van tabellen en het invoegen en verwijderen van gegevens. Het begrijpen van deze concepten kan nuttig zijn, zelfs als je geen databases beheert, omdat het je onder andere helpt te begrijpen waarom tabellen zijn gestructureerd zoals ze zijn.
Het belangrijkste is dat je nog steeds veel oefening nodig hebt om effectief te worden in echte wereldproblemen. Het volgende hoofdstuk geeft een aantal oefeningen, maar de moeilijkheidsgraad neemt sterk toe. Je zou de wereld in kunnen gaan en oefenen wat we tot nu toe behandeld hebben en terugkomen als je er klaar voor bent.
Uitdagingsvragen
De oefeningen in de vorige hoofdstukken waren bedoeld om de complexiteit te verminderen en een stimulerende omgeving te creëren. Dit hoofdstuk markeert de grens naar de wilde, ongetemde wereld van SQL problemen. Het idee hier is trial-by-fire—de vragen zijn geoptimaliseerd voor bruikbaarheid in plaats van leergemak. Zelfs ervaren SQL schrijvers kunnen worstelen; en er zit veel waarde in deze worsteling.
Oproep voor Problemen
Goede problemen maken of breken een tutorial. Als je een idee hebt voor een nieuw probleem of een nieuwe sectie, dan help ik je graag om het hier te plaatsen met volledige eer voor jou. Stuur een e-mail naar zichongkao@gmail.com of dien een pull-verzoek in. Onthoud dat goede problemen niet per se moeilijk zijn—ze laten technieken zien die brede toepassingen hebben.
Senaat Cosponsorschap Dataset
Geschreven door: Kao
In dit gedeelte introduceren we een nieuwe dataset van de 114e sessie 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 het wetsvoorstel indient, wordt de “sponsor” genoemd. Andere senatoren kunnen hun steun betuigen door het wetsvoorstel te steunen. Cosponsors op het moment van de introductie worden “oorspronkelijke cosponsors” genoemd(Bron). Elke rij van de tabel toont het wetsvoorstel, de sponsor, een oorspronkelijke mede-indiener en de staten die de senatoren vertegenwoordigen. Merk op dat er meerdere mede-indieners van een wetsvoorstel kunnen zijn.