ł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