Przejdź do treści

Listopadowa cena: matura z informatyki za 100 zł zamiast 120 zł za lekcję. Zgłoś się do 30.11. Umów bezpłatną konsultację →

Dział II

Bazy Danych: Kwerendy Wybierające (Siatka i SQL)

Siatka projektowa Accessa i jej odpowiednik w SQL. Kryteria, operatory, znaki wieloznaczne i wartości puste — tak, jak pyta o nie CKE.

Wstęp: dwie drogi do tego samego wyniku

Zadanie z bazy danych możesz rozwiązać na dwa sposoby: graficzną siatką projektową (Widok Projektu w Accessie) albo zapytaniem SQL. Siatka jest szybsza i wybacza literówki, ale nie zastąpi SQL-a w dwóch sytuacjach: gdy zdajesz na LibreOffice Base, gdzie kreator jest ubogi, oraz gdy polecenie każe zapisać zapytanie w odpowiedziach. W arkuszach CKE z ostatnich lat składnia SQL pojawia się regularnie — w samym arkuszu z maja 2026 zapytania ze słowem SQL i złączeniem JOIN wracają w kilku podpunktach. Dlatego w tym dziale każdy mechanizm pokazujemy równolegle: w siatce i w kodzie. Na egzaminie wybierzesz to, co szybsze, ale zrozumiesz oba zapisy.

1 Wybieranie i sortowanie: prawo lewej strony

Kwerendę zaczynasz od zakładki Tworzenie → Projekt kwerendy. Dodajesz tabele (muszą mieć ustawione relacje, inaczej dostaniesz iloczyn kartezjański, czyli każdy rekord z każdym) i dwuklikiem zrzucasz kolumny do dolnej siatki. Problem zaczyna się przy sortowaniu po dwóch polach naraz.

Błąd, który kosztuje punkt

Polecenie brzmi: „Posortuj wyniki malejąco według nazwy klasy, a w obrębie klasy alfabetycznie po nazwisku”. Access czyta siatkę od lewej do prawej — pierwsza kolumna z ustawionym sortowaniem jest kluczem głównym sortowania. Jeśli Nazwisko leży w siatce przed Klasą, dostaniesz listę uporządkowaną alfabetycznie po nazwisku, a klasy będą w niej wymieszane.

Poprawka trwa trzy sekundy: chwytasz szary pasek nad kolumną Klasa i przeciągasz ją w lewo, przed Nazwisko. W SQL ten sam problem rozwiązuje kolejność pól po ORDER BY.

Wiersz „Pokaż” — drobiazg, który zmienia ocenę

Jeśli polecenie mówi „podaj tylko nazwiska”, a Ty użyłeś kolumny ID_klasy wyłącznie do filtrowania, odznacz jej pole Pokaż. Wynik ma zgadzać się z poleceniem co do kolumny. W SQL odpowiednikiem jest po prostu niewymienianie tego pola po SELECT — warunek zostaje w WHERE.

2 Siatka przetłumaczona na SQL

Każdy wiersz siatki ma swój odpowiednik w zapytaniu. Gdy to raz zobaczysz, przestaniesz traktować SQL jak osobny świat. W Accessie podgląd kodu włączasz przyciskiem Widok → Widok SQL — warto tam zajrzeć po zbudowaniu kwerendy, bo to gotowa odpowiedź do przepisania, jeśli arkusz prosi o zapis zapytania.

Wiersz siatki
  • Pole + zaznaczone „Pokaż”
  • Tabela
  • Kryteria (ten sam wiersz)
  • Lub (wiersz niżej)
  • Sortowanie
Fragment zapytania
  • SELECT — lista kolumn wyniku
  • FROM + JOIN
  • WHERE ... AND ...
  • WHERE ... OR ...
  • ORDER BY ... ASC / DESC
SELECT u.Nazwisko, u.Imie, k.Nazwa
FROM Uczniowie AS u
INNER JOIN Klasy AS k ON u.ID_klasy = k.ID
WHERE k.Nazwa = 'Klasa 3A' AND u.Plec = 'K'
ORDER BY k.Nazwa DESC, u.Nazwisko ASC;
Trzy rzeczy, o których zapomina się najczęściej
  • Złączenie zamiast przecinka. Zapis FROM Uczniowie, Klasy bez warunku łączącego daje iloczyn kartezjański: 200 uczniów i 8 klas zwróci 1600 wierszy. Zawsze INNER JOIN ... ON ... albo warunek złączenia w WHERE.
  • Kolejność po ORDER BY jest kolejnością sortowania. Pierwsze pole rządzi, drugie porządkuje remisy — dokładnie tak, jak kolumny w siatce od lewej.
  • Apostrofy przy tekście. W SQL tekst zapisujesz w apostrofach: 'K'. Access w siatce sam dopisze cudzysłowy, ale w Widoku SQL zobaczysz już poprawną składnię.

3 Operatory w kryteriach: AND, OR, BETWEEN, IN

W siatce o logice decyduje geometria: warunki w tym samym wierszu łączy koniunkcja, warunki w różnych wierszach — alternatywa. Wpisanie "K" w kolumnie Płeć i "Kraków" w kolumnie Miasto w jednym wierszu znajdzie kobiety z Krakowa. Te same wartości w dwóch wierszach znajdą wszystkie kobiety z całej Polski oraz wszystkich mieszkańców Krakowa, także mężczyzn.

-- ten sam wiersz siatki
WHERE Plec = 'K' AND Miasto = 'Krakow'

-- wiersz "Lub"
WHERE Plec = 'K' OR Miasto = 'Krakow'

-- zakres dat i liczb
WHERE Data_zamowienia BETWEEN #2026-05-01# AND #2026-05-31#

-- lista dopuszczalnych wartosci
WHERE Miasto IN ('Krakow', 'Gdansk', 'Lublin')
Format daty różni się między programami

Access oczekuje daty w krzyżykach: #2026-05-01#. LibreOffice Base i standardowy SQL używają zapisu DATE '2026-05-01' albo zwykłych apostrofów. Jeśli kwerenda zwraca pustkę mimo poprawnej logiki, w pierwszej kolejności sprawdź właśnie format daty i separator dziesiętny.

BETWEEN jest obustronnie domknięty — granice wchodzą do wyniku. Przy poleceniu „powyżej 1000 zł” nie używaj więc BETWEEN 1000 AND ..., tylko ostrej nierówności > 1000.

4 Znaki wieloznaczne: gwiazdka kontra procent

To miejsce, w którym najczęściej gubią się osoby przesiadające się między programami. Znaczenie jest identyczne, ale symbole różne — i program, który dostaniesz na stanowisku, decyduje, którego użyć.

Access (siatka)
  • * — dowolny ciąg znaków
  • ? — dokładnie jeden znak
  • przykład: Like "Kow*"
Standardowy SQL / Base
  • % — dowolny ciąg znaków
  • _ — dokładnie jeden znak
  • przykład: LIKE 'Kow%'
-- nazwiska zaczynajace sie na "Kow"
WHERE Nazwisko LIKE 'Kow%'

-- adresy w domenie szkolnej
WHERE Email LIKE '%@szkola.pl'

-- kod pocztowy: dwie cyfry, myslnik, trzy cyfry
WHERE Kod LIKE '__-___'

5 Brak danych: Is Null i pusty tekst

Wartość pusta to nie zero i nie pusty napis. Zero na koncie znaczy „jest zero złotych”, Null znaczy „nie wiemy, ile jest”. Ta różnica wraca w zadaniach o niekompletnych danych, a także w liczeniu średnich: funkcje agregujące pomijają wartości puste, więc średnia z pięciu ocen, z których dwie są puste, policzy się z trzech.

-- rekordy bez uzupelnionego telefonu
WHERE Telefon IS NULL

-- rekordy uzupelnione
WHERE Telefon IS NOT NULL

-- pusty napis to co innego niz brak wartosci
WHERE Telefon = ''
Pułapka: porównanie z wartością pustą zawsze zawodzi

Zapis = Null nie zwróci niczego, bo wartość nieznana nie jest równa niczemu, nawet innej wartości nieznanej. Działa wyłącznie operator Is Null (w siatce) albo IS NULL (w SQL), bez znaku równości i bez cudzysłowów. Wpisanie "Null" w cudzysłowie każe programowi szukać tekstu złożonego z czterech liter.

6 Duplikaty, pierwsze N rekordów, aliasy

Trzy konstrukcje, które zamykają większość poleceń typu „wypisz listę miast, w których mieszkają klienci” albo „podaj trzy najdroższe zamówienia”.

-- kazde miasto tylko raz
SELECT DISTINCT Miasto FROM Klienci ORDER BY Miasto;

-- trzy najdrozsze zamowienia (Access)
SELECT TOP 3 Numer, Wartosc FROM Zamowienia ORDER BY Wartosc DESC;

-- to samo w standardzie SQL / LibreOffice Base
SELECT Numer, Wartosc FROM Zamowienia ORDER BY Wartosc DESC LIMIT 3;

-- wlasna nazwa kolumny w wyniku
SELECT Nazwisko AS Uczen, Wartosc * 1.23 AS Brutto FROM Zamowienia;
Uwaga przy TOP i LIMIT

Jeśli na trzecim i czwartym miejscu są remisy, Access przy TOP 3 zwróci cztery wiersze, bo nie rozstrzyga remisów. To nie błąd programu, tylko jego definicja. Gdy polecenie wymaga dokładnie trzech pozycji, dołóż drugi warunek sortowania, na przykład po dacie lub nazwisku, żeby kolejność była jednoznaczna.

7 Co dokładnie oddajesz egzaminatorowi

Punkty w tej części arkusza przepadają nie tyle za złą logikę, ile za nieoddane pliki i wyniki niezgodne z poleceniem. Ta lista zajmuje na egzaminie dwie minuty, a ratuje kilka punktów.

  • Zapisz każdą kwerendę pod nazwą z polecenia. Jeśli arkusz mówi „zapisz jako zadanie4_1”, nazwa ma się zgadzać co do znaku.
  • Przepisz wynik do pliku z odpowiedziami. Sama kwerenda w bazie to za mało, gdy polecenie prosi o podanie liczby albo listy nazwisk.
  • Dołącz zapytanie, jeśli arkusz o nie prosi. Skopiuj je z Widoku SQL — to szybsze i pewniejsze niż przepisywanie z pamięci.
  • Sprawdź liczbę kolumn i ich kolejność. Wynik ma wyglądać tak, jak opisuje polecenie, bez pomocniczych pól użytych do filtrowania.
  • Zapisz plik bazy przed końcem części drugiej i skopiuj go do katalogu wskazanego w arkuszu.
Jak to ćwiczyć

Weź dowolny arkusz z naszej bazy arkuszy, rozwiąż zadanie z bazy danych w siatce, a potem otwórz Widok SQL i sprawdź, czy potrafisz odtworzyć to zapytanie z pamięci na kartce. Jeśli tak — masz obie drogi opanowane i na egzaminie wybierzesz szybszą.

Korepetycje z informatyki

Zdajesz maturę rozszerzoną z informatyki?

Prowadzimy indywidualne przygotowanie do matury z informatyki — algorytmy, Python i C++, bazy danych i arkusz kalkulacyjny. Zajęcia online, na arkuszach CKE. Zobacz program i cennik.

Zobacz korepetycje z informatyki

Uczysz się w technikum informatycznym? Prowadzimy też przygotowanie do kwalifikacji INF.02, INF.03 i INF.04. Zobacz egzaminy zawodowe →