
DziałyInformatykaPoziom rozszerzony
SQL na maturze z informatyki: zadanie z bazami danych
Zadanie z bazami danych liczy wynik zapytania, nie samą składnię, a podpunkt na kartce ocenia się osobno, w skali od zera do dwóch punktów.

SQL na maturze z informatyki pojawia się w zadaniu z bazami danych, wartym mniej punktów niż algorytmika, ale opartym na węższym zestawie technik. Egzaminator ocenia wynik zapytania wykonanego na komputerze, a osobno, w skali od zera do dwóch, zapytanie zapisane na kartce. Zapytanie musi działać dla dowolnych danych, nie tylko dla przykładu z treści zadania.
Jak wygląda zadanie z bazami danych?
Zadanie z bazami danych trafia do wiązki tematycznej razem z innymi typami zadań, zwykle w dalszej części arkusza. Dostajesz kilka plików reprezentujących tabele: rekordy uczniów, sprzętu, transakcji czy zamówień. Polecenia proszą o konkretny wynik: listę rekordów spełniających warunek, sumę albo średnią per kategoria, dane połączone z kilku tabel naraz.
Realizujesz zapytania w środowisku zgłoszonym wcześniej przez szkołę, razem z systemem operacyjnym i językiem programowania, na pierwszej stronie arkusza. Bazy danych i SQL zajmują mniejszą część punktów niż algorytmika, więc w planie przygotowań do matury z informatyki przypada im mniej tygodni nauki niż programowaniu.
Nie każdy podpunkt bazodanowy wymaga komputera. Część wiązki bywa czysto teoretyczna: zaprojektuj strukturę tabel dla opisanego problemu, wskaż klucz główny i klucz obcy, narysuj relację jeden do wielu. Te podpunkty sprawdzają rozumienie modelu danych, zanim jeszcze dojdzie do pisania zapytań.

Kwerendy, które wracają co roku
Cztery wzorce zapytań powtarzają się niezależnie od tematu tabel: filtr z sortowaniem, agregat per grupa, złączenie dwóch tabel oraz złączenie połączone z grupowaniem. Przykłady niżej używają własnych tabel z wypożyczalni sprzętu sportowego, wymyślonych na potrzeby tego artykułu, nie z żadnego arkusza CKE.
Przyjmij trzy tabele: uczniowie (id, imie, nazwisko, klasa), sprzet (id, nazwa, kategoria) i wypozyczenia (id, iducznia, idsprzetu, datawypozyczenia, datazwrotu). Pierwsze zapytanie znajduje uczniów, którzy nie zwrócili jeszcze sprzętu z wybranej kategorii, i sortuje ich po dacie wypożyczenia:
sql SELECT u.imie, u.nazwisko, w.data_wypozyczenia FROM wypozyczenia w JOIN uczniowie u ON w.id_ucznia = u.id JOIN sprzet s ON w.id_sprzetu = s.id WHERE s.kategoria = 'pilka nozna' AND w.data_zwrotu IS NULL ORDER BY w.data_wypozyczenia;
Drugie liczy wypożyczenia w każdej klasie i zostawia tylko te, które przekroczyły ustalony próg:
sql SELECT u.klasa, COUNT(*) AS liczba_wypozyczen FROM wypozyczenia w JOIN uczniowie u ON w.id_ucznia = u.id GROUP BY u.klasa HAVING COUNT(*) > 5 ORDER BY liczba_wypozyczen DESC;
Cztery konstrukcje z obu zapytań wystarczają do większości zadań tego typu, a dwie kolejne przydają się przy zliczaniu unikalnych wartości i wyszukiwaniu fragmentu tekstu:
| Konstrukcja | Do czego służy | Własny przykład |
|---|---|---|
| WHERE | filtruje pojedyncze wiersze przed grupowaniem | WHERE s.kategoria = 'pilka nozna' |
| JOIN … ON | łączy tabele po wspólnym kluczu | JOIN uczniowie u ON w.id_ucznia = u.id |
| GROUP BY | grupuje wiersze pod agregat per kategoria | GROUP BY u.klasa |
| HAVING | filtruje już policzone grupy, nie pojedyncze wiersze | HAVING COUNT(*) > 5 |
| ORDER BY … DESC | sortuje wynik od największej wartości | ORDER BY liczba_wypozyczen DESC |
| DISTINCT | zwraca tylko unikalne wartości kolumny | SELECT DISTINCT kategoria FROM sprzet; |
| LIKE | dopasowuje fragment tekstu do wzorca | WHERE u.nazwisko LIKE 'Kowal%' |
Wyszukiwanie po fragmencie tekstu i zliczanie unikalnych wartości pojawiają się rzadziej niż złączenia, ale bywają jednym z podpunktów wiązki. Pytanie „ile różnych kategorii sprzętu mamy w magazynie" wymaga DISTINCT, a pytanie „którzy uczniowie mają nazwisko zaczynające się na Kowal" wymaga LIKE ze znakiem procenta na końcu wzorca.
Zapytanie na kartce a zapytanie w bazie
Jeden podpunkt każe napisać zapytanie na kartce, bez komputera, a inny każe wykonać je naprawdę i zapisać wynik. To dwa osobne sposoby sprawdzenia tej samej umiejętności: zapytanie na kartce ocenia samą składnię, zapytanie w bazie ocenia, czy naprawdę zwraca poprawne dane.
Zapytanie na kartce ocenia się w skali od zera do dwóch punktów. Dostajesz dwa, gdy zapytanie jest w całości poprawne, i jeden, gdy ma dokładnie jeden błąd, najczęściej przy złączeniu tabel albo w warunku filtrowania. Zero wpisuje egzaminator, gdy zapytania brakuje albo jest niepoprawne od pierwszej linijki.
Zapytanie wykonane w bazie ocenia się inaczej: liczy się zwrócony zestaw wierszy, porównany z wynikiem wzorcowego zapytania na tych samych danych. Nie ma znaczenia, czy zapisałeś je identycznie jak wzorzec, o ile wynik się zgadza co do wiersza.
Najczęstszy błąd na kartce to zapytanie dopasowane do przykładowych danych z treści zamiast do ogólnego przypadku. Zamiast WHERE u.klasa = '3a' zdający wpisuje WHERE u.imie = 'Kasia' AND u.nazwisko = 'Nowak', bo tak akurat wyglądały dane w treści zadania. Wygląda niewinnie, ale egzaminator taki zapis traktuje jak błąd, nawet jeśli dla podanego przykładu wynik wychodzi poprawny. Dla innej klasy to samo zapytanie zwróci pustą listę albo jednego ucznia zamiast całej grupy.
Kont jeszcze nie otwieramy
Zapisz się na listę, a napiszemy, gdy będzie można oddać pierwsze rozwiązanie do oceny krok po kroku.
Zapisz się na listęJak oddać wynik, żeby był oceniony?
Wynik zapytania zapisujesz do pliku tekstowego, którego nazwę i numer zadania podaje polecenie, a razem z nim oddajesz plik z samym zapytaniem SQL albo zrzut kwerendy z programu. Bez tych plików zadanie liczy się tak, jakby rozwiązania nie było, niezależnie od tego, co zdążyłeś napisać na kartce.
Nazwa pliku wynikowego bywa ustalona z góry, na przykład jako plik oznaczony numerem konkretnego zadania w arkuszu. Zapisz go dokładnie tak, jak każe polecenie, nie pod nazwą domyślną, jaką proponuje program czy środowisko.
Ten sam wymóg dotyczy wszystkich zadań praktycznych z informatyki: rozwiązanie musi być odzwierciedleniem komputerowej realizacji, nie wartością wpisaną z pamięci. Program, arkusz i baza danych różnią się narzędziem, nie zasadą oceny. Liczy się to, co realnie wykonał komputer. Ten sam wymóg opisuje Python na maturze z informatyki przy zadaniach z plikiem danych.
Access czy SQL?
Wybierasz spomiędzy dwóch środowisk zgłoszonych przez szkołę: Microsoft Access obok Excela i Worda, albo LibreOffice Base z pakietem XAMPP, w którym kwerendy piszesz w MySQL przez phpMyAdmin. Deklarujesz jedno na cały egzamin razem z systemem operacyjnym i językiem programowania.
Access ma kreator kwerend w widoku graficznym, który układa warunki bez wpisywania tekstu zapytania, i osobny widok SQL, w którym widać wygenerowany kod. phpMyAdmin takiego kreatora nie ma, więc kwerendę piszesz od razu jako tekst. Część poleceń w arkuszu wprost wymaga zapisu w języku SQL, niezależnie od tego, którego środowiska używasz na co dzień, więc sama składnia opłaca się nawet przy pracy w Accessie.
Dla ucznia, który zna tylko widok graficzny Accessa, przejście na czysty SQL bywa większą zmianą, niż się wydaje: te same warunki trzeba zapisać jako tekst, bez podpowiedzi z listy pól. Nasza rada: trenuj czysty SQL niezależnie od zadeklarowanego środowiska. Ułatwia to podpunkty na kartce, bo tam liczy się wyłącznie zapis tekstowy, i przydaje się nawet wtedy, gdy na co dzień pracujesz w kreatorze Accessa.
Najczęstsze pytania
Czy trzeba znać obydwa środowiska, Access i SQL?
Nie. Zgłaszasz jedno środowisko przed egzaminem i pracujesz w nim przez cały czas trwania arkusza. Przyda się jednak umiejętność zapisu zapytania w czystym SQL, bo część podpunktów wymaga tego wprost, niezależnie od użytego programu.
Czy zapytanie musi działać tylko dla danych z treści zadania?
Nie, zapytanie musi zwracać poprawny wynik dla dowolnego zestawu danych o tej samej strukturze, nie tylko dla przykładu z arkusza. Zapytanie dopasowane do konkretnych wartości traci punkty, nawet jeśli akurat dla tych danych zwraca poprawny wynik.
Ile punktów można stracić na jednym błędzie w zapytaniu?
Na kartce jeden błąd, na przykład zły warunek złączenia albo pomyłka w filtrze, obniża ocenę zapytania o jeden punkt z maksymalnie dwóch. W zapytaniu wykonanym w bazie liczy się sam wynik, więc drobna różnica w zapisie, która nie zmienia zwróconych wierszy, nie odejmuje nic.
Czym różni się JOIN od wypisania dwóch tabel po przecinku?
Wypisanie dwóch tabel bez warunku łączącego daje iloczyn kartezjański: każdy wiersz jednej tabeli łączy się z każdym wierszem drugiej, co mnoży liczbę wyników zamiast je dopasować. JOIN z warunkiem ON łączy tylko wiersze, które faktycznie do siebie pasują po wspólnym kluczu.
Czy WHERE i HAVING to to samo?
Nie. WHERE filtruje pojedyncze wiersze przed policzeniem agregatu, HAVING filtruje już policzone grupy po GROUP BY. Warunek na sumę albo liczbę wystąpień musi trafić do HAVING, bo w momencie działania WHERE agregat jeszcze nie istnieje.
Jak to sprawdzisz w zdawce
W zdawce piszesz zapytania SQL bezpośrednio w przeglądarce, obok Pythona, C++ i arkusza kalkulacyjnego, bez instalowania niczego na komputerze. Wynik zapytania sprawdza najpierw algorytm: porównuje zwrócone wiersze z rubryką zadania. Złożone przypadki trafiają do modelu, który trzyma się tej samej rubryki, więc suma punktów nigdy jej nie przekroczy. Postęp widzisz osobno dla baz danych, algorytmiki i arkusza, nie jako jedną ocenę z całego zadania.
Sprawdź to na własnym zapytaniu: rozwiąż zadanie z bazami danych i zobacz, które złączenie albo warunek zabiera Ci punkt.
Kont jeszcze nie otwieramy
Zapisz się na listę, a napiszemy, gdy będzie można oddać pierwsze rozwiązanie do oceny krok po kroku.
Źródła
- Informator o egzaminie maturalnym z informatyki (CKE)cke.gov.pl
- Arkusze i zasady oceniania — Formuła 2023 (CKE)cke.gov.pl
- Komunikat dyrektora CKE o egzaminie z informatykicke.gov.pl
Zasady egzaminu i komunikaty potrafią się zmieniać. Przed decyzją sprawdź aktualny dokument CKE ze źródeł powyżej.
Zespół zdawki korzysta z modeli językowych przy przygotowywaniu tekstów na tym blogu.



