Interactieve cursus
SQL-cursus
Leer SQL helemaal opnieuw, in het Engels, met een echte Postgres in uw browser.
01 · Basis-SELECTIE
De basis: gegevens uit een tabel lezen en filteren.
- 1.1Inleiding tot SQLWat SQL is, waarom het wordt gebruikt en hoe een database eruit ziet.~5 min
- 1.2SELECTEER … VANDe eenvoudigste vraag: rijen uit een tabel lezen.~10 min
- 1.3Filteren met WAARAlleen de rijen selecteren die aan een voorwaarde voldoen.~10 min
- 1.4Sorteren met ORDER BYResultaten op volgorde zetten, oplopend of aflopend.~8 min
02 · Krachtigere SELECT
Beperken, ontdubbelen, hernoemen en tellen: de tools die u dagelijks gebruikt.
- 2.1Beperken met LIMITAlleen de eerste N rijen retourneren, bijvoorbeeld om klassementen samen te stellen.~6 min
- 2.2Unieke waarden met DISTINCTDuplicaten verwijderen uit het resultaat van een SELECT.~6 min
- 2.3Hernoemen met ASHet geven van beter leesbare namen aan kolommen en expressies in het resultaat.~6 min
- 2.4Tellen en samenvatten: COUNT, AVG, MAXAggregaatfuncties: één getal uit vele rijen halen.~8 min
03 · DOE MEE en GROUP BY
Het combineren van meerdere tabellen en het maken van rapporten per groep: de kern van elke echte vraag.
- 3.1Twee tabellen samenvoegen: INNER JOINRijen uit verschillende tabellen combineren volgens hun relaties.~12 min
- 3.2Alles aan de linkerkant houden: LEFT JOINInclusief rijen die geen overeenkomst hebben in de andere tabel.~10 min
- 3.3Groeperen met GROUP BYBerekenen van een aggregaat per groep, bijvoorbeeld per afdeling.~10 min
- 3.4Groepen filteren: HAVINGAlleen de groepen behouden die aan een voorwaarde op het aggregaat voldoen.~8 min
04 · Praktische SQL
De tools die het verschil maken in het echte werk: lijsten, bereiken, NULL's en voorwaardelijke logica.
- 4.1Lijsten en bereiken: IN en BETWEENCompactfilters voor "een van deze" en "tussen A en B".~8 min
- 4.2Omgaan met NULL's: IS NULL en COALESCEHerkennen en omgaan met ontbrekende waarden zonder verrassingen.~10 min
- 4.3Voorwaardelijke logica: CASE WHENWaarden direct in SELECT omzetten in categorieën.~10 min
- 4.4Een query binnen een andere: subquery'sHet resultaat van een SELECT gebruiken in een andere SELECT.~12 min
05 · Geavanceerde JOIN's
Multi-table JOINs, self-joins, OUTER, CROSS en set-bewerkingen: data combineren als een professional.
- 5.1JOIN op drie of meer tafelsHet doorkruisen van een keten van relaties: bestellingen → klanten → producten, in één enkele zoekopdracht.~12 min
- 5.2Self-JOIN: een tafel met zichzelfHiërarchieën en interne relaties: een tabel lezen met twee rollen (kind en ouder).~10 min
- 5.3OUTER JOIN: de "gaten" vindenGebruik LEFT/RIGHT/FULL OUTER JOIN om rijen zonder overeenkomst te vinden.~10 min
- 5.4UNION, INTERSECT, BEHALVE (en CROSS JOIN)Resultaten combineren als verzamelingen: unie, snijpunt, verschil en cartesiaans product.~12 min
06 · Ingebouwde functies
Transformeer en manipuleer gegevens met native functies van PostgreSQL: tekenreeksen, datums, getallen, typeconversies.
- 6.1String-functiesLOWER, UPPER, LENGTH, aaneenschakeling, SUBSTRING, TRIM, REPLACE, LIKE en ILIKE.~12 min
- 6.2Datum- en tijdstempelfunctiesEXTRACT, DATE_TRUNC, intervallen en datumverschillen.~12 min
- 6.3Numerieke functiesRONDE, CEIL, FLOOR, ABS, MOD en gehele versus decimale deling.~10 min
- 6.4CAST- en typeconversiesConverteren tussen typen met `::type` en `CAST(... AS ...)`.~10 min
07 · Geavanceerde analyses
Meerstapsquery's (CTE), ranglijsten en lopende totalen (vensterfuncties), onbegrensde hiërarchieën (MET RECURSIEF).
- 7.1CTE: meerstapsquery's met WITHEen complexe query opsplitsen in benoemde stappen voor leesbaarheid en hergebruik.~12 min
- 7.2Vensterfuncties: ranglijsten en berekeningen per groepROW_NUMBER, RANK, DENSE_RANK met OVER(PARTITION BY …) voor in-groepsranglijsten.~14 min
- 7.3LAG, LEAD en lopende totalenElke rij vergelijken met de vorige/volgende en cumulatieve bedragen berekenen.~12 min
- 7.4Recursieve CTE's: hiërarchieën met willekeurige diepteMET RECURSIEF voor het doorkruisen van hiërarchieën zoals categorieën.~14 min
08 · Gegevens schrijven en wijzigen
INSERT, UPDATE, DELETE, CREATE TABLE met beperkingen, transacties: de lus sluiten met schrijfbewerkingen.
- 8.1Gegevens invoegen: INSERTINSERT, RETURNING-clausule met één en meerdere rijen, waarbij kolommen expliciet worden gekozen.~10 min
- 8.2Bijwerken en verwijderen: UPDATE en DELETESelectieve veranderingen met WAAR, en waarom een vergeten WAAR een ramp is.~10 min
- 8.3Tabellen en beperkingen maken: DDLMAAK EEN TABEL met PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, CHECK en DEFAULT.~12 min
- 8.4Transacties: alles of nietsBEGIN, COMMIT, ROLLBACK: een groep operaties atomair maken.~10 min
09 · Datastructuren en DDL
Tabellen, geavanceerde beperkingen, complexe typen en weergaven maken en wijzigen.
- 9.1Geavanceerde gegevenstypen en ENUM'sNumerieke typen, TEXT vs VARCHAR, BOOLEAN, UUID en aangepaste ENUM-typen.~10 min
- 9.2Beperkingen op meerdere niveaus en op tabelniveauSamengestelde UNIEKE en PRIMAIRE SLEUTELbeperkingen, geavanceerde CHECK en externe sleutels (ON DELETE CASCADE).~12 min
- 9.3De structuur wijzigen: ALTER TABLEKolommen of beperkingen toevoegen, wijzigen en verwijderen uit bestaande tabellen.~10 min
- 9.4Weergaven en gegevensabstractieVIEW's maken om complexe query's en GEMATERIALISEERDE VIEW's voor prestaties te vereenvoudigen.~12 min
10 · Optimalisatie en indexen
De kunst van het snel maken van queries: indexen, uitvoeringsplannen en database-optimalisatie.
- 10.1Indexen en B-bomenMaak indexen om opzoekquery's in grote tabellen aanzienlijk te versnellen.~15 min
- 10.2UITLEGGEN en ANALYSERENLeer de database-uitvoeringsplannen lezen om knelpunten te diagnosticeren.~15 min
- 10.3Samengestelde en gedeeltelijke indexenGebruik indexen voor meerdere kolommen tegelijk of alleen voor een specifiek deel van de gegevens.~12 min
- 10.4Het N+1-probleemHet beruchte ORM-prestatieprobleem en de native SQL-methoden om dit in één enkele query op te lossen.~12 min
11 · Transacties en gelijktijdigheid
Beheer veilig gelijktijdige gegevenswijzigingen: ACID-transacties, vergrendelingen en isolatieniveaus.
- 11.1ACID-transacties (BEGIN/COMMIT)Houd gegevens consistent met BEGIN, COMMIT en ROLLBACK, door zoekopdrachten in één blok te groeperen dat onzichtbaar is voor anderen.~15 min
- 11.2RaceomstandighedenEdge-scenario's: wat er gebeurt als twee parallelle databasemedewerkers op hetzelfde gebruikerswagentje handelen.~10 min
- 11.3Vergrendelen en SELECTEREN VOOR UPDATEVergrendel rijen actief tijdens het lezen, waardoor andere muterende threads worden gedwongen op hun beurt te wachten.~15 min
- 11.4IsolatieniveausGa tot het uiterste door Serializable te implementeren, of kies voor Read Comried voor onveilige maar snelle prestaties.~12 min
12 · Functies en triggers
Automatiseer bedrijfslogica in de database: schrijf herbruikbare functies en reageer op gebeurtenissen met triggers.
- 12.1UDF's en basis-SQLCreëer uw eigen, door de gebruiker gedefinieerde functies om complexe berekeningen in te kapselen en hergebruik ze als macro's in elke query.~15 min
- 12.2Geavanceerde logica met PL/pgSQLGeef uw functies superkrachten: variabelen, if-else-vertakkingen en lussen in pure procedurele stijl in de database.~15 min
- 12.3Inleiding tot triggersDefinieer speciale functies waarmee u onmiddellijk de UITGAANDE (OUD) of INKOMENDE (NIEUWE) record kunt inspecteren.~15 min
- 12.4Praktische triggers en auditAutomatiseer de veiligheid: update automatisch de "updated_at"-datum en archiveer op magische wijze verwijderde rijen voor naleving.~12 min
13 · Raamfuncties
Geavanceerde gegevensanalyse zonder rijen samen te vouwen: ontdek OVER(), PARTITION BY en analytische functies.
- 13.1Inleiding en de OVER-clausuleVoer geaggregeerde berekeningen uit (zoals SUM of AVG) met behoud van de oorspronkelijke individuele rijen.~15 min
- 13.2Groeperen met PARTITIE DOORMaak logische groeperingen (vensters) binnen de gegevens waarop u functies wilt toepassen, zonder GROUP BY te gebruiken.~15 min
- 13.3Posities: ROW_NUMBER, RANK en DENSE_RANKWijs opeenvolgende rijnummers en rangen toe aan de resultaten, waarbij u correct omgaat met gelijkspel.~15 min
- 13.4Ploegen: LAG en LEADKrijg rechtstreeks toegang tot waarden uit de vorige of volgende rij vanuit de huidige rij om delta's en variaties te berekenen.~12 min
14 · CTE's en hiërarchische zoekopdrachten (WITH)
Vereenvoudig grote zoekopdrachten met algemene tabelexpressies en navigeer door onbegrensde databomen met recursieve CTE's.
- 14.1Inleiding tot CTE's (MET)Vervang onleesbare geneste subquery's door een schoon procedureel formaat door tijdelijke "virtuele tabellen" te declareren.~12 min
- 14.2Meerdere en geketende CTE'sTem de complexiteit door de verwerking op te splitsen in meerdere opeenvolgende stappen binnen één WITH-instructie.~15 min
- 14.3Recursieve CTE's: boomvormige gegevensNavigeer zonder beperkingen door managerhiërarchieën en ouder-kindcategorieën door de CTE vanuit zichzelf aan te roepen.~18 min
15 · PostgreSQL JSON en NoSQL
Maak gebruik van relationele kracht gecombineerd met flexibele documentondersteuning via JSON en JSONB zonder gebruik te maken van externe databases.