Direct naar de hoofdinhoud
eLearner.app

Interactieve cursus

SQL-cursus

Leer SQL helemaal opnieuw, in het Engels, met een echte Postgres in uw browser.

01 · Basis-SELECTIE

4 lessen

De basis: gegevens uit een tabel lezen en filteren.

  1. 1.1Inleiding tot SQLWat SQL is, waarom het wordt gebruikt en hoe een database eruit ziet.~5 min
  2. 1.2SELECTEER … VANDe eenvoudigste vraag: rijen uit een tabel lezen.~10 min
  3. 1.3Filteren met WAARAlleen de rijen selecteren die aan een voorwaarde voldoen.~10 min
  4. 1.4Sorteren met ORDER BYResultaten op volgorde zetten, oplopend of aflopend.~8 min

02 · Krachtigere SELECT

4 lessen

Beperken, ontdubbelen, hernoemen en tellen: de tools die u dagelijks gebruikt.

  1. 2.1Beperken met LIMITAlleen de eerste N rijen retourneren, bijvoorbeeld om klassementen samen te stellen.~6 min
  2. 2.2Unieke waarden met DISTINCTDuplicaten verwijderen uit het resultaat van een SELECT.~6 min
  3. 2.3Hernoemen met ASHet geven van beter leesbare namen aan kolommen en expressies in het resultaat.~6 min
  4. 2.4Tellen en samenvatten: COUNT, AVG, MAXAggregaatfuncties: één getal uit vele rijen halen.~8 min

03 · DOE MEE en GROUP BY

4 lessen

Het combineren van meerdere tabellen en het maken van rapporten per groep: de kern van elke echte vraag.

  1. 3.1Twee tabellen samenvoegen: INNER JOINRijen uit verschillende tabellen combineren volgens hun relaties.~12 min
  2. 3.2Alles aan de linkerkant houden: LEFT JOINInclusief rijen die geen overeenkomst hebben in de andere tabel.~10 min
  3. 3.3Groeperen met GROUP BYBerekenen van een aggregaat per groep, bijvoorbeeld per afdeling.~10 min
  4. 3.4Groepen filteren: HAVINGAlleen de groepen behouden die aan een voorwaarde op het aggregaat voldoen.~8 min

04 · Praktische SQL

4 lessen

De tools die het verschil maken in het echte werk: lijsten, bereiken, NULL's en voorwaardelijke logica.

  1. 4.1Lijsten en bereiken: IN en BETWEENCompactfilters voor "een van deze" en "tussen A en B".~8 min
  2. 4.2Omgaan met NULL's: IS NULL en COALESCEHerkennen en omgaan met ontbrekende waarden zonder verrassingen.~10 min
  3. 4.3Voorwaardelijke logica: CASE WHENWaarden direct in SELECT omzetten in categorieën.~10 min
  4. 4.4Een query binnen een andere: subquery'sHet resultaat van een SELECT gebruiken in een andere SELECT.~12 min

05 · Geavanceerde JOIN's

4 lessen

Multi-table JOINs, self-joins, OUTER, CROSS en set-bewerkingen: data combineren als een professional.

  1. 5.1JOIN op drie of meer tafelsHet doorkruisen van een keten van relaties: bestellingen → klanten → producten, in één enkele zoekopdracht.~12 min
  2. 5.2Self-JOIN: een tafel met zichzelfHiërarchieën en interne relaties: een tabel lezen met twee rollen (kind en ouder).~10 min
  3. 5.3OUTER JOIN: de "gaten" vindenGebruik LEFT/RIGHT/FULL OUTER JOIN om rijen zonder overeenkomst te vinden.~10 min
  4. 5.4UNION, INTERSECT, BEHALVE (en CROSS JOIN)Resultaten combineren als verzamelingen: unie, snijpunt, verschil en cartesiaans product.~12 min

06 · Ingebouwde functies

4 lessen

Transformeer en manipuleer gegevens met native functies van PostgreSQL: tekenreeksen, datums, getallen, typeconversies.

  1. 6.1String-functiesLOWER, UPPER, LENGTH, aaneenschakeling, SUBSTRING, TRIM, REPLACE, LIKE en ILIKE.~12 min
  2. 6.2Datum- en tijdstempelfunctiesEXTRACT, DATE_TRUNC, intervallen en datumverschillen.~12 min
  3. 6.3Numerieke functiesRONDE, CEIL, FLOOR, ABS, MOD en gehele versus decimale deling.~10 min
  4. 6.4CAST- en typeconversiesConverteren tussen typen met `::type` en `CAST(... AS ...)`.~10 min

07 · Geavanceerde analyses

4 lessen

Meerstapsquery's (CTE), ranglijsten en lopende totalen (vensterfuncties), onbegrensde hiërarchieën (MET RECURSIEF).

  1. 7.1CTE: meerstapsquery's met WITHEen complexe query opsplitsen in benoemde stappen voor leesbaarheid en hergebruik.~12 min
  2. 7.2Vensterfuncties: ranglijsten en berekeningen per groepROW_NUMBER, RANK, DENSE_RANK met OVER(PARTITION BY …) voor in-groepsranglijsten.~14 min
  3. 7.3LAG, LEAD en lopende totalenElke rij vergelijken met de vorige/volgende en cumulatieve bedragen berekenen.~12 min
  4. 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

4 lessen

INSERT, UPDATE, DELETE, CREATE TABLE met beperkingen, transacties: de lus sluiten met schrijfbewerkingen.

  1. 8.1Gegevens invoegen: INSERTINSERT, RETURNING-clausule met één en meerdere rijen, waarbij kolommen expliciet worden gekozen.~10 min
  2. 8.2Bijwerken en verwijderen: UPDATE en DELETESelectieve veranderingen met WAAR, en waarom een vergeten WAAR een ramp is.~10 min
  3. 8.3Tabellen en beperkingen maken: DDLMAAK EEN TABEL met PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, CHECK en DEFAULT.~12 min
  4. 8.4Transacties: alles of nietsBEGIN, COMMIT, ROLLBACK: een groep operaties atomair maken.~10 min

09 · Datastructuren en DDL

4 lessen

Tabellen, geavanceerde beperkingen, complexe typen en weergaven maken en wijzigen.

  1. 9.1Geavanceerde gegevenstypen en ENUM'sNumerieke typen, TEXT vs VARCHAR, BOOLEAN, UUID en aangepaste ENUM-typen.~10 min
  2. 9.2Beperkingen op meerdere niveaus en op tabelniveauSamengestelde UNIEKE en PRIMAIRE SLEUTELbeperkingen, geavanceerde CHECK en externe sleutels (ON DELETE CASCADE).~12 min
  3. 9.3De structuur wijzigen: ALTER TABLEKolommen of beperkingen toevoegen, wijzigen en verwijderen uit bestaande tabellen.~10 min
  4. 9.4Weergaven en gegevensabstractieVIEW's maken om complexe query's en GEMATERIALISEERDE VIEW's voor prestaties te vereenvoudigen.~12 min

10 · Optimalisatie en indexen

4 lessen

De kunst van het snel maken van queries: indexen, uitvoeringsplannen en database-optimalisatie.

  1. 10.1Indexen en B-bomenMaak indexen om opzoekquery's in grote tabellen aanzienlijk te versnellen.~15 min
  2. 10.2UITLEGGEN en ANALYSERENLeer de database-uitvoeringsplannen lezen om knelpunten te diagnosticeren.~15 min
  3. 10.3Samengestelde en gedeeltelijke indexenGebruik indexen voor meerdere kolommen tegelijk of alleen voor een specifiek deel van de gegevens.~12 min
  4. 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

4 lessen

Beheer veilig gelijktijdige gegevenswijzigingen: ACID-transacties, vergrendelingen en isolatieniveaus.

  1. 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
  2. 11.2RaceomstandighedenEdge-scenario's: wat er gebeurt als twee parallelle databasemedewerkers op hetzelfde gebruikerswagentje handelen.~10 min
  3. 11.3Vergrendelen en SELECTEREN VOOR UPDATEVergrendel rijen actief tijdens het lezen, waardoor andere muterende threads worden gedwongen op hun beurt te wachten.~15 min
  4. 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

4 lessen

Automatiseer bedrijfslogica in de database: schrijf herbruikbare functies en reageer op gebeurtenissen met triggers.

  1. 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
  2. 12.2Geavanceerde logica met PL/pgSQLGeef uw functies superkrachten: variabelen, if-else-vertakkingen en lussen in pure procedurele stijl in de database.~15 min
  3. 12.3Inleiding tot triggersDefinieer speciale functies waarmee u onmiddellijk de UITGAANDE (OUD) of INKOMENDE (NIEUWE) record kunt inspecteren.~15 min
  4. 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

4 lessen

Geavanceerde gegevensanalyse zonder rijen samen te vouwen: ontdek OVER(), PARTITION BY en analytische functies.

  1. 13.1Inleiding en de OVER-clausuleVoer geaggregeerde berekeningen uit (zoals SUM of AVG) met behoud van de oorspronkelijke individuele rijen.~15 min
  2. 13.2Groeperen met PARTITIE DOORMaak logische groeperingen (vensters) binnen de gegevens waarop u functies wilt toepassen, zonder GROUP BY te gebruiken.~15 min
  3. 13.3Posities: ROW_NUMBER, RANK en DENSE_RANKWijs opeenvolgende rijnummers en rangen toe aan de resultaten, waarbij u correct omgaat met gelijkspel.~15 min
  4. 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)

3 lessen

Vereenvoudig grote zoekopdrachten met algemene tabelexpressies en navigeer door onbegrensde databomen met recursieve CTE's.

  1. 14.1Inleiding tot CTE's (MET)Vervang onleesbare geneste subquery's door een schoon procedureel formaat door tijdelijke "virtuele tabellen" te declareren.~12 min
  2. 14.2Meerdere en geketende CTE'sTem de complexiteit door de verwerking op te splitsen in meerdere opeenvolgende stappen binnen één WITH-instructie.~15 min
  3. 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

2 lessen

Maak gebruik van relationele kracht gecombineerd met flexibele documentondersteuning via JSON en JSONB zonder gebruik te maken van externe databases.

  1. 15.1JSON- en JSONB-integratieBewaar complexe documenten in een kolom en doorzoek de velden met pijloperatoren.~15 min
  2. 15.2JSON-aggregatiefunctiesGenereer JSON-bestanden of objectarrays direct in SQL met behulp van json_build_object() en json_agg().~15 min