1. Zaawansowane operacje na danych (DML)
Modyfikowanie dużych zbiorów danych wymaga technik wykraczających poza podstawowe instrukcje DML. Uczestnicy wykorzystują INSERT INTO ... SELECT, aktualizacje oparte na podzapytaniach i złączeniach, warunkowe usuwanie danych oraz MERGE do synchronizacji, z naciskiem na bezpieczne praktyki.
- wstawianie danych z wykorzystaniem
INSERT INTO ... SELECT,
- aktualizacja danych z wykorzystaniem podzapytań i złączeń,
- usuwanie danych z wykorzystaniem warunków oraz podzapytań,
- instrukcja
MERGE (UPSERT) – synchronizacja danych,
- dobre praktyki podczas modyfikacji dużych zbiorów danych.
2. Zaawansowane zapytania SELECT
GROUP BY i funkcje agregujące stanowią podstawę pracy z danymi zagregowanymi, ale równie ważne jest precyzyjne sterowanie wynikiem. Ten zakres łączy HAVING, zaawansowane sortowanie, operacje na NULL oraz wyrażenia warunkowe takie jak CASE, COALESCE i NULLIF.
- grupowanie danych (
GROUP BY),
- funkcje agregujące (
COUNT, SUM, AVG, MIN, MAX),
- filtrowanie grup (
HAVING),
- zaawansowane sortowanie wyników,
- operacje na wartościach
NULL,
- wyrażenia warunkowe (
CASE, COALESCE, NULLIF).
3. Podzapytania i Common Table Expressions (CTE)
Złożone pobieranie danych często zależy od właściwego połączenia zapytania głównego z wynikami pośrednimi. Sekcja obejmuje podzapytania skorelowane i nieskorelowane w SELECT, FROM i WHERE, operatory EXISTS, IN, ANY i ALL, a także CTE oraz konstrukcje rekurencyjne.
- podzapytania skorelowane i nieskorelowane,
- podzapytania w klauzulach
SELECT, FROM i WHERE,
- operatory
EXISTS, NOT EXISTS, IN, ANY, ALL,
- Common Table Expressions (
WITH),
- rekurencyjne CTE.
4. Optymalizacja zapytań
Gdy zapytania działają zbyt wolno, kluczowe staje się zrozumienie sposobu pracy silnika bazy. Uczestnicy analizują wpływ indeksów, tworzą i usuwają indeksy, interpretują EXPLAIN oraz EXPLAIN PLAN, identyfikują wąskie gardła i optymalizują zapytania dla dużych zbiorów.
- indeksy i ich wpływ na wydajność,
- tworzenie i usuwanie indeksów,
- analiza planów wykonania (
EXPLAIN, EXPLAIN PLAN),
- identyfikacja wąskich gardeł,
- optymalizacja zapytań dla dużych zbiorów danych,
- dobre praktyki tworzenia wydajnych zapytań.
5. Widoki
Widoki porządkują sposób udostępniania danych i ograniczają złożoność zapytań budowanych na tabelach bazowych. W programie znajdują się widoki proste i złożone, użycie złączeń oraz podzapytań, aktualizacja przez widoki, widoki materializowane i ich rola w ochronie danych.
- tworzenie prostych i złożonych widoków,
- widoki wykorzystujące złączenia i podzapytania,
- aktualizacja danych przez widoki,
- widoki materializowane (w systemach, które je obsługują),
- zastosowanie widoków do zabezpieczania danych.
6. Praca z typami danych
Praca z danymi o różnej strukturze wymaga poprawnego doboru typów i funkcji przetwarzających wartości. Uczestnicy ćwiczą konwersję typów, operacje na datach i czasie, funkcje tekstowe, przetwarzanie liczb oraz obsługę danych JSON, jeśli wspiera ją silnik bazy.
- konwersja typów danych,
- funkcje operujące na datach i czasie,
- funkcje tekstowe,
- praca z typami liczbowymi,
- obsługa danych JSON (jeżeli wspierana przez silnik bazy danych).
7. Funkcje analityczne
Funkcje okna pozwalają analizować dane bez utraty szczegółowości pojedynczych wierszy. Sekcja obejmuje OVER oraz funkcje ROW_NUMBER, RANK, DENSE_RANK, NTILE, LEAD, LAG, FIRST_VALUE i LAST_VALUE, a także sumy narastające, średnie kroczące i operatory zbiorów.
- funkcje okna (
OVER),
ROW_NUMBER, RANK, DENSE_RANK, NTILE,
LEAD i LAG,
FIRST_VALUE i LAST_VALUE,
- sumy narastające i średnie kroczące,
- operatory zbiorów (
UNION, UNION ALL, INTERSECT, EXCEPT).
8. Procedury, funkcje i automatyzacja
Automatyzacja logiki po stronie bazy opiera się na procedurach, funkcjach i reakcjach na zdarzenia. Omawiane jest tworzenie procedur składowanych i funkcji użytkownika, użycie parametrów wejściowych oraz wyjściowych, obsługa wyjątków, debugowanie i podstawy wyzwalaczy.
- tworzenie procedur składowanych,
- funkcje użytkownika,
- parametry wejściowe i wyjściowe,
- obsługa wyjątków,
- debugowanie procedur,
- podstawy tworzenia wyzwalaczy (Triggers).
9. Transakcje i współbieżność
Spójność danych w środowisku wielodostępnym wymaga świadomego zarządzania przebiegiem operacji. Uczestnicy pracują z BEGIN, COMMIT i ROLLBACK, analizują poziomy izolacji oraz blokady, a także poznają obsługę błędów wspierającą poprawne działanie transakcji.
- zarządzanie transakcjami (
BEGIN, COMMIT, ROLLBACK),
- poziomy izolacji transakcji,
- blokady i współbieżność,
- obsługa błędów,
- zapewnienie spójności danych.
10. Bezpieczeństwo i dobre praktyki
Bezpieczna praca z bazą danych łączy kontrolę dostępu z poprawnym stylem tworzenia kodu. Sekcja obejmuje role i uprawnienia użytkowników, ochronę danych wrażliwych, ryzyka związane z Dynamic SQL, zabezpieczenia przed SQL Injection, audyt oraz zasady utrzymania kodu SQL.
- role i uprawnienia użytkowników,
- zabezpieczanie danych wrażliwych,
- Dynamic SQL – możliwości i zagrożenia,
- ochrona przed SQL Injection,
- podstawy audytu operacji na bazie danych,
- dobre praktyki projektowania i utrzymania kodu SQL.
11. Warsztat praktyczny
Punktem wyjścia są wymagania biznesowe, które uczestnicy przekładają na rozwiązania SQL dla rzeczywistych problemów. Budują złożone zapytania z użyciem CTE i funkcji okna, a następnie doskonalą je przez analizę planów wykonania i świadomą optymalizację.
- analiza wymagań biznesowych,
- budowa złożonych zapytań SQL,
- wykorzystanie CTE i funkcji okna,
- optymalizacja zapytań,
- analiza planów wykonania,
- rozwiązywanie rzeczywistych problemów z wykorzystaniem SQL.