Interaktywny kurs
Kurs SQL
Ucz się SQL od podstaw, z prawdziwym Postgres uruchomionym w Twojej przeglądarce.
01 · Moduł 1 — Podstawowe SELECT
Fundamenty: odczytywanie danych z tabeli i ich filtrowanie.
- 1.1Wprowadzenie do SQLCzym jest SQL, dlaczego jest używany i jak wygląda baza danych.~5 min
- 1.2SELECT … FROMNajprostsze zapytanie: odczytywanie wierszy z tabeli.~10 min
- 1.3Filtrowanie z WHEREWybieranie tylko tych wierszy, które spełniają warunek.~10 min
- 1.4Sortowanie z ORDER BYPorządkowanie wyników, rosnąco lub malejąco.~8 min
02 · Moduł 2 — Potężniejsze SELECT
Limitowanie, usuwanie duplikatów, zmienianie nazw i zliczanie: narzędzia, których używasz każdego dnia.
- 2.1Limitowanie z LIMITZwracanie tylko pierwszych N wierszy, na przykład do tworzenia tabel wyników.~6 min
- 2.2Unikalne wartości z DISTINCTUsuwanie duplikatów z wyniku SELECT.~6 min
- 2.3Zmienianie nazw z ASNadawanie bardziej czytelnych nazw kolumnom i wyrażeniom w wyniku.~6 min
- 2.4Zliczanie i podsumowywanie: COUNT, AVG, MAXFunkcje agregujące: pobieranie pojedynczej liczby z wielu wierszy.~8 min
03 · Moduł 3 — JOIN i GROUP BY
Łączenie wielu tabel i generowanie raportów według grup: serce każdego prawdziwego zapytania.
- 3.1Łączenie dwóch tabel: INNER JOINŁączenie wierszy z różnych tabel zgodnie z ich relacjami.~12 min
- 3.2Zachowanie wszystkiego po lewej stronie: LEFT JOINDołączanie wierszy, które nie mają odpowiednika w drugiej tabeli.~10 min
- 3.3Grupowanie z GROUP BYObliczanie agregatu dla grupy, na przykład dla działu.~10 min
- 3.4Filtrowanie grup: HAVINGZachowanie tylko tych grup, które spełniają warunek nałożony na agregat.~8 min
04 · Moduł 4 — Praktyczny SQL
Narzędzia, które robią różnicę w prawdziwej pracy: listy, zakresy, wartości NULL i logika warunkowa.
- 4.1Listy i zakresy: IN i BETWEENKompaktowe filtry dla "jednego z nich" oraz "pomiędzy A i B".~8 min
- 4.2Obsługa wartości NULL: IS NULL i COALESCERozpoznawanie i radzenie sobie z brakującymi wartościami bez niespodzianek.~10 min
- 4.3Logika warunkowa: CASE WHENTransformowanie wartości na kategorie bezpośrednio w SELECT.~10 min
- 4.4Zapytanie wewnątrz innego: podzapytaniaUżywanie wyniku SELECT wewnątrz innego SELECT.~12 min
05 · Moduł 5 — Zaawansowane JOINy
JOINy wielotabelowe, samozłączenia, operacje OUTER, CROSS i operacje na zbiorach: łączenie danych jak profesjonalista.
- 5.1JOINy na trzech lub więcej tabelachPrzechodzenie przez łańcuch relacji: zamówienia → klienci → produkty, w pojedynczym zapytaniu.~12 min
- 5.2Self-JOIN: tabela z samą sobąHierarchie i relacje wewnętrzne: odczytywanie tabeli w dwóch rolach (dziecko i rodzic).~10 min
- 5.3OUTER JOIN: znajdowanie "luk"Używanie LEFT/RIGHT/FULL OUTER JOIN do znajdowania wierszy bez dopasowania.~10 min
- 5.4UNION, INTERSECT, EXCEPT (i CROSS JOIN)Łączenie wyników jako zbiorów: suma, część wspólna, różnica i iloczyn kartezjański.~12 min
06 · Moduł 6 — Wbudowane funkcje
Transformowanie i manipulowanie danymi za pomocą natywnych funkcji PostgreSQL: ciągi znaków, daty, liczby, konwersje typów.
- 6.1Funkcje na ciągach znakówLOWER, UPPER, LENGTH, konkatenacja, SUBSTRING, TRIM, REPLACE, LIKE i ILIKE.~12 min
- 6.2Funkcje daty i czasu (timestamp)EXTRACT, DATE_TRUNC, przedziały czasowe i różnice dat.~12 min
- 6.3Funkcje numeryczneROUND, CEIL, FLOOR, ABS, MOD oraz dzielenie całkowite vs dziesiętne.~10 min
- 6.4CAST i konwersje typówKonwersja między typami za pomocą `::type` oraz `CAST(... AS ...)`.~10 min
07 · Moduł 7 — Zaawansowane analizy
Zapytania wieloetapowe (CTE), rankingi i sumy bieżące (funkcje okna), nieograniczone hierarchie (WITH RECURSIVE).
- 7.1CTE: zapytania wieloetapowe z WITHRozbijanie złożonego zapytania na nazwane etapy dla czytelności i ponownego użycia.~12 min
- 7.2Funkcje okna: rankingi i obliczenia w grupachROW_NUMBER, RANK, DENSE_RANK z OVER(PARTITION BY …) dla rankingów wewnątrz grup.~14 min
- 7.3LAG, LEAD i sumy bieżącePorównywanie każdego wiersza z poprzednim/następnym i obliczanie sum skumulowanych.~12 min
- 7.4Rekurencyjne CTE: hierarchie o dowolnej głębokościWITH RECURSIVE do przechodzenia przez hierarchie takie jak kategorie.~14 min
08 · Moduł 8 — Zapisywanie i modyfikowanie danych
INSERT, UPDATE, DELETE, CREATE TABLE z ograniczeniami, transakcje: zamykanie pętli operacjami zapisu.
- 8.1Wstawianie danych: INSERTINSERT jedno- i wielowierszowe, klauzula RETURNING, jawne wybieranie kolumn.~10 min
- 8.2Aktualizowanie i usuwanie: UPDATE i DELETESelektywne zmiany z WHERE i dlaczego zapomniane WHERE to katastrofa.~10 min
- 8.3Tworzenie tabel i ograniczeń: DDLCREATE TABLE z PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, CHECK i DEFAULT.~12 min
- 8.4Transakcje: wszystko albo nicBEGIN, COMMIT, ROLLBACK: tworzenie grupy operacji jako atomowej.~10 min
09 · Moduł 9 — Struktury danych i DDL
Tworzenie i modyfikowanie tabel, zaawansowane ograniczenia, złożone typy i widoki.
- 9.1Zaawansowane typy danych i typy ENUMTypy numeryczne, TEXT vs VARCHAR, BOOLEAN, UUID oraz własne typy ENUM.~10 min
- 9.2Wielokrotne ograniczenia i ograniczenia na poziomie tabeliZłożone ograniczenia UNIQUE i PRIMARY KEY, zaawansowane CHECK oraz klucze obce (ON DELETE CASCADE).~12 min
- 9.3Modyfikowanie struktury: ALTER TABLEDodawanie, modyfikowanie i usuwanie kolumn lub ograniczeń z istniejących tabel.~10 min
- 9.4Widoki i abstrakcja danychTworzenie widoków (VIEW) w celu uproszczenia złożonych zapytań i widoków zmaterializowanych (MATERIALIZED VIEW) dla wydajności.~12 min
10 · Optymalizacja i indeksy
Sztuka przyspieszania zapytań: indeksy, plany wykonania i optymalizacja bazy danych.
- 10.1Indeksy i drzewa B-TreeTworzenie indeksów w celu radykalnego przyspieszenia wyszukiwania w dużych tabelach.~15 min
- 10.2EXPLAIN i ANALYZENaucz się czytać plany wykonania bazy danych, aby diagnozować wąskie gardła.~15 min
- 10.3Indeksy złożone i częścioweUżywanie indeksów na wielu kolumnach jednocześnie lub tylko na określonej części danych.~12 min
- 10.4Problem N+1Słynny problem wydajnościowy ORM i natywne metody SQL pozwalające rozwiązać go w jednym zapytaniu.~12 min
11 · Transakcje i współbieżność
Bezpieczne zarządzanie współbieżnymi modyfikacjami danych: transakcje ACID, blokady i poziomy izolacji.
- 11.1Transakcje ACID (BEGIN/COMMIT)Utrzymywanie spójności danych za pomocą BEGIN, COMMIT i ROLLBACK, grupując zapytania w pojedynczy blok niewidoczny dla innych.~15 min
- 11.2Wyścigi (race conditions)Scenariusze skrajne: co się dzieje, gdy dwóch współbieżnych pracowników bazy danych działa na tym samym koszyku użytkownika.~10 min
- 11.3Blokowanie i SELECT FOR UPDATEAktywne blokowanie wierszy podczas odczytu, zmuszające inne wątki modyfikujące do czekania na swoją kolej.~15 min
- 11.4Poziomy izolacjiMaksymalne zwiększenie bezpieczeństwa przez Serializable lub obniżenie do Read Committed dla szybkiego, choć mniej bezpiecznego działania.~12 min
12 · Funkcje i wyzwalacze (triggers)
Automatyzacja logiki biznesowej wewnątrz bazy danych: pisanie funkcji wielokrotnego użytku i reagowanie na zdarzenia za pomocą wyzwalaczy.
- 12.1Funkcje UDF i bazowy SQLTwórz własne funkcje zdefiniowane przez użytkownika (UDF), aby hermetyzować złożone obliczenia i używać ich jak makra w każdym zapytaniu.~15 min
- 12.2Zaawansowana logika z PL/pgSQLDaj swoim funkcjom supermoce: zmienne, rozgałęzienia if-else i pętle w czystym stylu proceduralnym wewnątrz bazy danych.~15 min
- 12.3Wprowadzenie do wyzwalaczy (triggers)Definiowanie specjalnych funkcji, które mogą natychmiast sprawdzać rekord WYCHODZĄCY (OLD) lub WCHODZĄCY (NEW).~15 min
- 12.4Praktyczne wyzwalacze i audytAutomatyzacja bezpieczeństwa: automatyczne aktualizowanie daty "updated_at" i automatyczne archiwizowanie usuniętych wierszy.~12 min
13 · Funkcje okna
Zaawansowana analiza danych bez zwijania wierszy: odkryj OVER(), PARTITION BY i funkcje analityczne.
- 13.1Wprowadzenie i klauzula OVERWykonywanie obliczeń agregujących (takich jak SUM lub AVG) przy jednoczesnym zachowaniu oryginalnych pojedynczych wierszy.~15 min
- 13.2Grupowanie z PARTITION BYTworzenie logicznych grup (okien) wewnątrz danych, na których stosowane są funkcje, bez użycia GROUP BY.~15 min
- 13.3Rankingi: ROW_NUMBER, RANK i DENSE_RANKPrzypisywanie sekwencyjnych numerów wierszy i rang do wyników, z poprawną obsługą remisów.~15 min
- 13.4Przesunięcia: LAG i LEADDostęp do wartości z poprzedniego lub następnego wiersza bezpośrednio z bieżącego wiersza w celu obliczenia różnic i zmian.~12 min
14 · CTEs i zapytania hierarchiczne (WITH)
Upraszczaj ogromne zapytania za pomocą Wspólnych Wyrażeń Tabelarycznych i nawiguj w nieograniczonych drzewach danych dzięki rekurencyjnym CTE.
- 14.1Wprowadzenie do CTE (WITH)Zastępowanie nieczytelnych zagnieżdżonych podzapytań czystym formatem proceduralnym poprzez deklarowanie tymczasowych "tabel wirtualnych".~12 min
- 14.2Wielokrotne i łańcuchowe CTEOpanowanie złożoności poprzez podział przetwarzania na wiele kolejnych kroków w ramach jednej instrukcji WITH.~15 min
- 14.3Rekurencyjne CTE: dane o strukturze drzewaNawigowanie bez ograniczeń w hierarchii menedżerskiej i kategoriach rodzic-dziecko poprzez wywoływanie CTE z samej siebie.~18 min
15 · PostgreSQL JSON i NoSQL
Wykorzystaj moc relacyjną połączoną z elastyczną obsługą dokumentów przez JSON i JSONB bez używania zewnętrznych baz danych.