łatwySQLSQL

SQL SELECT - Podstawy Zapytań na Maturze z Informatyki

15 min czytania
SQL
Zaktualizowano: 3.11.2025

SELECT to najważniejsza komenda w języku SQL. To jest Twój podstawowy 'scyzoryk' do pracy z bazami danych. Na maturze zawsze dostaniesz zadanie z bazą danych (czy to w Excelu/Accessie, czy w MySQL/MariaDB), a umiejętność 'odpytania' bazy o konkretne dane jest absolutnie kluczowa. Myśl o komendzie SELECT jak o zadawaniu pytania bazie: 'Hej, baza danych, proszę, pokaż mi...'. Możesz prosić o całe tabele, konkretne kolumny, a także filtrować, sortować i grupować dane. W tym przewodniku skupimy się na absolutnych podstawach: jak wyciągać dane, filtrować je (WHERE) i sortować (ORDER BY), co stanowi 80% zadań maturalnych z SQL.

Dlaczego to ważne? Na maturze CKE w części praktycznej (na komputerze) regularnie pojawiają się zadania z bazą danych. Często musisz napisać konkretne zapytania SQL, aby dostać punkty. Nawet jeśli rozwiązujesz zadanie w Excelu, znajomość logiki SQL (filtrowania, łączenia tabel) jest nieoceniona. Podstawowe SELECT ... FROM ... WHERE ... to absolutny 'must-have'.

Teoria

Główną ideą zapytania SELECT jest 'wybranie' (SELECT) określonych kolumn (lub wszystkich, używając *) 'z' (FROM) konkretnej tabeli. Dodatkowo, możemy nałożyć 'warunki' (WHERE), aby zobaczyć tylko te wiersze, które nas interesują, oraz 'posortować' (ORDER BY) wynik.

Jak to działa?

  1. SELECT [kolumny] - Tu decydujesz, co chcesz zobaczyć. Np. 'SELECT imie, nazwisko' albo 'SELECT *' (co oznacza 'wszystkie kolumny').
  2. FROM [tabela] - Tu mówisz, z której 'szuflady' (tabeli) chcesz brać dane. Np. 'FROM uczniowie'.
  3. WHERE [warunek] (Opcjonalnie) - To Twój filtr. Np. 'WHERE klasa = "3A"' albo 'WHERE punkty > 80'.
  4. ORDER BY [kolumna] [kierunek] (Opcjonalnie) - Tu sortujesz wyniki. Np. 'ORDER BY nazwisko ASC' (rosnąco, alfabetycznie) lub 'ORDER BY punkty DESC' (malejąco, od największej).
  5. JOIN [inna_tabela] ON [warunek_laczenia] (Opcjonalnie) - Pozwala łączyć dane z wielu tabel (omówione w osobnym przewodniku, ale kluczowe).
  6. Kolejność wykonywania (logiczna): FROM -> WHERE -> SELECT -> ORDER BY.

Złożoność: Nie dotyczy w tradycyjnym sensie O(n). Wydajność zależy od wielkości tabel, użytych indeksów i złożoności warunków. Dla matury, gdzie tabele są małe, każde poprawnie napisane zapytanie będzie wystarczająco szybkie.

Implementacja

SELECT * - Wyświetlanie całej tabeli

SQL
SELECT * FROM Uczniowie;

Najprostsze zapytanie. Gwiazdka (*) oznacza 'wszystkie kolumny'. To zapytanie zwróci każdy wiersz i każdą kolumnę z tabeli 'Uczniowie'. Świetne, żeby zobaczyć, jak wyglądają dane.

SELECT [kolumny] - Wybieranie konkretnych kolumn

SQL
SELECT imie, nazwisko, klasa FROM Uczniowie;

Zamiast gwiazdki, podajemy nazwy kolumn oddzielone przecinkami. Zapytanie zwróci tylko kolumny 'imie', 'nazwisko' i 'klasa' dla wszystkich uczniów.

Klauzula WHERE - Filtrowanie wierszy

SQL
SELECT imie, nazwisko FROM Uczniowie WHERE klasa = '1A';

-- Inny przykład z warunkiem liczbowym
SELECT * FROM Uczniowie WHERE punkty > 90;

Klauzula WHERE to Twój filtr. Zwraca tylko te wiersze, które spełniają warunek. Pamiętaj: tekst (stringi) umieszczamy w pojedynczych cudzysłowach ('1A'), a liczby nie (90).

Klauzula ORDER BY - Sortowanie wyników

SQL
SELECT nazwisko, imie, punkty FROM Uczniowie
WHERE klasa = '1A'
ORDER BY nazwisko ASC;

ORDER BY sortuje wynik. Domyślnie sortuje rosnąco (ASC - Ascending). Aby posortować od największej do najmniejszej, użyj DESC (Descending), np. 'ORDER BY punkty DESC'.

WHERE z operatorami (AND, OR, LIKE)

SQL
SELECT * FROM Uczniowie
WHERE punkty > 80 AND klasa = '2B';

SELECT * FROM Uczniowie
WHERE imie = 'Anna' OR imie = 'Jan';

SELECT * FROM Uczniowie
WHERE nazwisko LIKE 'K%';

Możesz łączyć warunki. AND - oba muszą być prawdziwe. OR - przynajmniej jeden musi być prawdziwy. LIKE 'K%' to potężne narzędzie - oznacza 'zaczyna się na K'. Znak '%' to dowolny ciąg znaków.

Przykładowe Zadania Maturalne

Matura 2026Zadanie Zadanie Typu Maturalnego 1

Masz bazę danych 'Sklep', a w niej tabelę 'Produkty' (id_produktu, nazwa, kategoria, cena). Napisz zapytanie SQL, które wyświetli nazwy i ceny wszystkich produktów z kategorii 'Nabiał', które kosztują mniej niż 5 zł. Wyniki posortuj alfabetycznie według nazwy.

Wskazówka: Potrzebujesz trzech klauzul: SELECT (nazwa, cena), FROM (Produkty), WHERE (do filtrowania kategorii i ceny) oraz ORDER BY (do sortowania). Pamiętaj o cudzysłowach dla tekstu 'Nabiał' i o użyciu operatora AND.

Pokaż szkic rozwiązania
1. Zacznij od SELECT: `SELECT nazwa, cena`
2. Określ tabelę: `FROM Produkty`
3. Dodaj filtr kategorii: `WHERE kategoria = 'Nabiał'`
4. Dodaj filtr ceny: `AND cena < 5`
5. Dodaj sortowanie: `ORDER BY nazwa ASC;`
6. Pełne zapytanie: `SELECT nazwa, cena FROM Produkty WHERE kategoria = 'Nabiał' AND cena < 5 ORDER BY nazwa ASC;`
Matura 2024Zadanie 8.5 (Matura Próbna Grudzień 2024)

W bazie danych są tabele 'Wlasciciele' (id_wlasciciela, imie, nazwisko) oraz 'Samochody' (nr_rejestracyjny, marka, rok_produkcji, id_wlasciciela). Zapisz zapytanie SQL, w wyniku którego uzyskasz imiona i nazwiska właścicieli samochodów zarejestrowanych w Chorzowie (nr rejestracyjny rozpoczyna się od liter SH) i wyprodukowanych w 2020 roku. Nazwiska uporządkuj alfabetycznie.

Wskazówka: To zadanie wymaga połączenia (JOIN) dwóch tabel. Musisz połączyć 'Wlasciciele' i 'Samochody' przez klucz 'id_wlasciciela'. Następnie w klauzuli WHERE musisz dać dwa warunki: jeden na rok produkcji i jeden na numer rejestracyjny (użyj operatora LIKE z procentem: 'SH%'). Na koniec posortuj (ORDER BY) nazwiska.

Pokaż szkic rozwiązania
1. Zacznij od SELECT: `SELECT Wlasciciele.imie, Wlasciciele.nazwisko`
2. Określ tabelę główną: `FROM Wlasciciele`
3. Połącz drugą tabelę: `JOIN Samochody ON Wlasciciele.id_wlasciciela = Samochody.id_wlasciciela`
4. Filtruj dane (WHERE) dwoma warunkami połączonymi przez AND:
   a. `WHERE Samochody.nr_rejestracyjny LIKE 'SH%'`
   b. `AND Samochody.rok_produkcji = 2020`
5. Posortuj wynik: `ORDER BY Wlasciciele.nazwisko ASC;`

Częste Błędy

Brak cudzysłowu przy tekście

Warunek WHERE klasa = 1A (bez cudzysłowu) zwróci błąd. Baza myśli, że 1A to nazwa kolumny, a nie wartość tekstowa.

Poprawka: Zawsze umieszczaj wartości tekstowe (stringi, daty) w pojedynczym cudzysłowie: WHERE klasa = '1A'.

Mylenie z COUNT()

SELECT wybiera wszystkie dane. SELECT COUNT() zlicza liczbę wierszy. To zupełnie inne polecenia.

Poprawka: Jeśli chcesz zobaczyć dane, użyj . Jeśli chcesz policzyć, ile czegoś jest, użyj COUNT().

Błędna kolejność klauzul

Pisanie SELECT ... WHERE ... FROM ... albo SELECT ... FROM ... ORDER BY ... WHERE ... jest błędne. Baza danych wymaga ścisłej kolejności.

Poprawka: Zapamiętaj kolejność: SELECT, FROM, JOIN (jeśli jest), WHERE, GROUP BY (jeśli jest), ORDER BY (jeśli jest).

Mylenie = z LIKE

Operator = sprawdza dokładną równość. WHERE nazwisko = 'K' znajdzie tylko osoby o nazwisku 'K'. Operator LIKE służy do dopasowywania wzorców.

Poprawka: Do szukania wzorców (np. 'zaczyna się na K') używaj LIKE 'K%'. Do sprawdzania dokładnej wartości (np. 'klasa to 1A') używaj WHERE klasa = '1A'.

Kluczowe Wnioski

  • SELECT wybiera kolumny (lub * dla wszystkich).
  • FROM wskazuje tabelę.
  • WHERE filtruje wiersze (warunki).
  • ORDER BY sortuje wyniki (domyślnie ASC - rosnąco).
  • Kolejność pisania to: SELECT, FROM, WHERE, ORDER BY.
  • Tekst (stringi) zawsze dawaj w pojedynczych cudzysłowach: 'imie = "Anna"'.
  • LIKE 'wzór%' służy do szukania tekstu zaczynającego się na 'wzór'.

Najczęściej Zadawane Pytania

Jaka jest różnica między `*` a `COUNT(*)`?

`SELECT *` pobiera *dane* (wszystkie kolumny i wiersze). `SELECT COUNT(*)` nie pobiera danych, tylko zwraca *jedną liczbę* - informację, ile wierszy spełniło warunki.

Co to jest `ASC` i `DESC`?

To kierunki sortowania w ORDER BY. ASC (Ascending) to rosnąco (A-Z, 1-100). DESC (Descending) to malejąco (Z-A, 100-1). ASC jest domyślne, więc nie trzeba go pisać.

Czym się różni `WHERE` od `HAVING`?

WHERE filtruje pojedyncze wiersze przed grupowaniem. HAVING filtruje grupy po grupowaniu (używa się go tylko z GROUP BY, np. HAVING COUNT(*) > 5).

Co oznacza znak `%` w `LIKE`?

To 'joker' (wildcard) oznaczający dowolny ciąg znaków (także pusty). `LIKE 'K%'` oznacza 'zaczyna się na K'. `LIKE '%k'` oznacza 'kończy się na k'. `LIKE '%k%'` oznacza 'zawiera literę k'.

Muszę znać SQL na maturę? Nie wystarczy Excel?

W arkuszu CKE (np. 2024, 2025) jest osobne zadanie, gdzie *musisz* napisać zapytanie SQL. Excel nie wystarczy, aby zdobyć punkty za te zadania. Musisz znać przynajmniej podstawy `SELECT`, `JOIN`, `WHERE` i `ORDER BY`.

Chcesz opanować wszystkie tematy maturalne?

Dołącz do kursu i zyskaj dostęp do interaktywnych lekcji, edytora kodu i setek zadań.

Powiązane Tematy