Przejdź do głównej treści
eLearner.app

Interaktywny kurs

Kurs SQL

Ucz się SQL od podstaw, z prawdziwym Postgres uruchomionym w Twojej przeglądarce.

01 · Moduł 1 — Podstawowe SELECT

4 lekcji

Fundamenty: odczytywanie danych z tabeli i ich filtrowanie.

  1. 1.1Wprowadzenie do SQLCzym jest SQL, dlaczego jest używany i jak wygląda baza danych.~5 min
  2. 1.2SELECT … FROMNajprostsze zapytanie: odczytywanie wierszy z tabeli.~10 min
  3. 1.3Filtrowanie z WHEREWybieranie tylko tych wierszy, które spełniają warunek.~10 min
  4. 1.4Sortowanie z ORDER BYPorządkowanie wyników, rosnąco lub malejąco.~8 min

02 · Moduł 2 — Potężniejsze SELECT

4 lekcji

Limitowanie, usuwanie duplikatów, zmienianie nazw i zliczanie: narzędzia, których używasz każdego dnia.

  1. 2.1Limitowanie z LIMITZwracanie tylko pierwszych N wierszy, na przykład do tworzenia tabel wyników.~6 min
  2. 2.2Unikalne wartości z DISTINCTUsuwanie duplikatów z wyniku SELECT.~6 min
  3. 2.3Zmienianie nazw z ASNadawanie bardziej czytelnych nazw kolumnom i wyrażeniom w wyniku.~6 min
  4. 2.4Zliczanie i podsumowywanie: COUNT, AVG, MAXFunkcje agregujące: pobieranie pojedynczej liczby z wielu wierszy.~8 min

03 · Moduł 3 — JOIN i GROUP BY

4 lekcji

Łączenie wielu tabel i generowanie raportów według grup: serce każdego prawdziwego zapytania.

  1. 3.1Łączenie dwóch tabel: INNER JOINŁączenie wierszy z różnych tabel zgodnie z ich relacjami.~12 min
  2. 3.2Zachowanie wszystkiego po lewej stronie: LEFT JOINDołączanie wierszy, które nie mają odpowiednika w drugiej tabeli.~10 min
  3. 3.3Grupowanie z GROUP BYObliczanie agregatu dla grupy, na przykład dla działu.~10 min
  4. 3.4Filtrowanie grup: HAVINGZachowanie tylko tych grup, które spełniają warunek nałożony na agregat.~8 min

04 · Moduł 4 — Praktyczny SQL

4 lekcji

Narzędzia, które robią różnicę w prawdziwej pracy: listy, zakresy, wartości NULL i logika warunkowa.

  1. 4.1Listy i zakresy: IN i BETWEENKompaktowe filtry dla "jednego z nich" oraz "pomiędzy A i B".~8 min
  2. 4.2Obsługa wartości NULL: IS NULL i COALESCERozpoznawanie i radzenie sobie z brakującymi wartościami bez niespodzianek.~10 min
  3. 4.3Logika warunkowa: CASE WHENTransformowanie wartości na kategorie bezpośrednio w SELECT.~10 min
  4. 4.4Zapytanie wewnątrz innego: podzapytaniaUżywanie wyniku SELECT wewnątrz innego SELECT.~12 min

05 · Moduł 5 — Zaawansowane JOINy

4 lekcji

JOINy wielotabelowe, samozłączenia, operacje OUTER, CROSS i operacje na zbiorach: łączenie danych jak profesjonalista.

  1. 5.1JOINy na trzech lub więcej tabelachPrzechodzenie przez łańcuch relacji: zamówienia → klienci → produkty, w pojedynczym zapytaniu.~12 min
  2. 5.2Self-JOIN: tabela z samą sobąHierarchie i relacje wewnętrzne: odczytywanie tabeli w dwóch rolach (dziecko i rodzic).~10 min
  3. 5.3OUTER JOIN: znajdowanie "luk"Używanie LEFT/RIGHT/FULL OUTER JOIN do znajdowania wierszy bez dopasowania.~10 min
  4. 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

4 lekcji

Transformowanie i manipulowanie danymi za pomocą natywnych funkcji PostgreSQL: ciągi znaków, daty, liczby, konwersje typów.

  1. 6.1Funkcje na ciągach znakówLOWER, UPPER, LENGTH, konkatenacja, SUBSTRING, TRIM, REPLACE, LIKE i ILIKE.~12 min
  2. 6.2Funkcje daty i czasu (timestamp)EXTRACT, DATE_TRUNC, przedziały czasowe i różnice dat.~12 min
  3. 6.3Funkcje numeryczneROUND, CEIL, FLOOR, ABS, MOD oraz dzielenie całkowite vs dziesiętne.~10 min
  4. 6.4CAST i konwersje typówKonwersja między typami za pomocą `::type` oraz `CAST(... AS ...)`.~10 min

07 · Moduł 7 — Zaawansowane analizy

4 lekcji

Zapytania wieloetapowe (CTE), rankingi i sumy bieżące (funkcje okna), nieograniczone hierarchie (WITH RECURSIVE).

  1. 7.1CTE: zapytania wieloetapowe z WITHRozbijanie złożonego zapytania na nazwane etapy dla czytelności i ponownego użycia.~12 min
  2. 7.2Funkcje okna: rankingi i obliczenia w grupachROW_NUMBER, RANK, DENSE_RANK z OVER(PARTITION BY …) dla rankingów wewnątrz grup.~14 min
  3. 7.3LAG, LEAD i sumy bieżącePorównywanie każdego wiersza z poprzednim/następnym i obliczanie sum skumulowanych.~12 min
  4. 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

4 lekcji

INSERT, UPDATE, DELETE, CREATE TABLE z ograniczeniami, transakcje: zamykanie pętli operacjami zapisu.

  1. 8.1Wstawianie danych: INSERTINSERT jedno- i wielowierszowe, klauzula RETURNING, jawne wybieranie kolumn.~10 min
  2. 8.2Aktualizowanie i usuwanie: UPDATE i DELETESelektywne zmiany z WHERE i dlaczego zapomniane WHERE to katastrofa.~10 min
  3. 8.3Tworzenie tabel i ograniczeń: DDLCREATE TABLE z PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, CHECK i DEFAULT.~12 min
  4. 8.4Transakcje: wszystko albo nicBEGIN, COMMIT, ROLLBACK: tworzenie grupy operacji jako atomowej.~10 min

09 · Moduł 9 — Struktury danych i DDL

4 lekcji

Tworzenie i modyfikowanie tabel, zaawansowane ograniczenia, złożone typy i widoki.

  1. 9.1Zaawansowane typy danych i typy ENUMTypy numeryczne, TEXT vs VARCHAR, BOOLEAN, UUID oraz własne typy ENUM.~10 min
  2. 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
  3. 9.3Modyfikowanie struktury: ALTER TABLEDodawanie, modyfikowanie i usuwanie kolumn lub ograniczeń z istniejących tabel.~10 min
  4. 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

4 lekcji

Sztuka przyspieszania zapytań: indeksy, plany wykonania i optymalizacja bazy danych.

  1. 10.1Indeksy i drzewa B-TreeTworzenie indeksów w celu radykalnego przyspieszenia wyszukiwania w dużych tabelach.~15 min
  2. 10.2EXPLAIN i ANALYZENaucz się czytać plany wykonania bazy danych, aby diagnozować wąskie gardła.~15 min
  3. 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
  4. 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ść

4 lekcji

Bezpieczne zarządzanie współbieżnymi modyfikacjami danych: transakcje ACID, blokady i poziomy izolacji.

  1. 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
  2. 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
  3. 11.3Blokowanie i SELECT FOR UPDATEAktywne blokowanie wierszy podczas odczytu, zmuszające inne wątki modyfikujące do czekania na swoją kolej.~15 min
  4. 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)

4 lekcji

Automatyzacja logiki biznesowej wewnątrz bazy danych: pisanie funkcji wielokrotnego użytku i reagowanie na zdarzenia za pomocą wyzwalaczy.

  1. 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
  2. 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
  3. 12.3Wprowadzenie do wyzwalaczy (triggers)Definiowanie specjalnych funkcji, które mogą natychmiast sprawdzać rekord WYCHODZĄCY (OLD) lub WCHODZĄCY (NEW).~15 min
  4. 12.4Praktyczne wyzwalacze i audytAutomatyzacja bezpieczeństwa: automatyczne aktualizowanie daty "updated_at" i automatyczne archiwizowanie usuniętych wierszy.~12 min

13 · Funkcje okna

4 lekcji

Zaawansowana analiza danych bez zwijania wierszy: odkryj OVER(), PARTITION BY i funkcje analityczne.

  1. 13.1Wprowadzenie i klauzula OVERWykonywanie obliczeń agregujących (takich jak SUM lub AVG) przy jednoczesnym zachowaniu oryginalnych pojedynczych wierszy.~15 min
  2. 13.2Grupowanie z PARTITION BYTworzenie logicznych grup (okien) wewnątrz danych, na których stosowane są funkcje, bez użycia GROUP BY.~15 min
  3. 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
  4. 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)

3 lekcji

Upraszczaj ogromne zapytania za pomocą Wspólnych Wyrażeń Tabelarycznych i nawiguj w nieograniczonych drzewach danych dzięki rekurencyjnym CTE.

  1. 14.1Wprowadzenie do CTE (WITH)Zastępowanie nieczytelnych zagnieżdżonych podzapytań czystym formatem proceduralnym poprzez deklarowanie tymczasowych "tabel wirtualnych".~12 min
  2. 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
  3. 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

2 lekcji

Wykorzystaj moc relacyjną połączoną z elastyczną obsługą dokumentów przez JSON i JSONB bez używania zewnętrznych baz danych.

  1. 15.1Integracja JSON i JSONBPrzechowywanie złożonych dokumentów wewnątrz kolumny i odpytywanie ich pól za pomocą operatorów strzałkowych.~15 min
  2. 15.2Funkcje agregacji JSONGenerowanie plików JSON lub tablic obiektów w locie natywnie w SQL przy użyciu json_build_object() i json_agg().~15 min