KWALIFIKACJA INF3 - WRZESIEŃ 2015

PYTANIE NR 14.
Baza danych zawiera tabelę uczniowie z polami: imie, nazwisko, klasa. Aby odnaleźć imiona i nazwiska tych uczniów, których nazwiska rozpoczynają się literą M, należy zastosować polecenie SQL
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Warunek wyszukiwania nazwisk zaczynających się od "M" realizuje się przez LIKE, gdzie % oznacza dowolny dalszy ciąg znaków. Dlatego poprawny filtr ma postać WHERE nazwisko LIKE 'M%'. Klauzula ORDER BY służy do sortowania, a IN do sprawdzania przynależności do listy wartości, nie do wzorców.

Pełne wyjaśnienie:

Aby znaleźć uczniów, których nazwisko zaczyna się literą "M", trzeba zastosować filtrowanie w klauzuli WHERE. Do wyszukiwania tekstu według wzorca służy operator LIKE, a znak % oznacza "dowolny ciąg znaków" (także pusty). Wzorzec 'M%' pasuje więc do wartości takich jak "Miller", "Mucha", ale też do samego "M", jeśli takie nazwisko by wystąpiło.

Dlatego odpowiedź "SELECT nazwisko, imie FROM uczniowie WHERE nazwisko LIKE 'M%';" jest poprawna: wybiera wskazane kolumny i ogranicza wynik do rekordów spełniających warunek prefiksu.

Pozostałe propozycje są niepoprawne z powodów składniowych i logicznych:

  • "... WHERE nazwisko IN 'M%';" – operator IN służy do sprawdzania, czy wartość jest równa jednej z wartości z listy (np. IN ('Miller','Mucha')), a nie do dopasowania wzorca. Dodatkowo zapis bez nawiasów z listą jest typowo błędny składniowo.
  • "... ORDER BY nazwisko = 'M%';"ORDER BY sortuje wynik, nie filtruje. Wyrażenie porównania w sortowaniu (nazwisko = 'M%') nie zastępuje warunku wyszukiwania prefiksu i nie używa mechanizmu LIKE.
  • "... ORDER BY nazwisko IN 'M%';" – to również próba użycia ORDER BY zamiast WHERE oraz błędne użycie IN do wzorca.

W praktyce, gdy budujesz wyszukiwarkę w aplikacji internetowej, pamiętaj o rozróżnieniu: WHERE ogranicza liczbę rekordów (filtr), a ORDER BY zmienia ich kolejność (sortowanie). Jeśli pytanie dotyczy "zaczyna się od…", najczęściej właściwym narzędziem jest LIKE 'prefix%'.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
LIKE służy do dopasowania wartości tekstowej do wzorca. Najczęściej używa się go w WHERE, np. WHERE nazwisko LIKE 'M%'. Znak % oznacza dowolny ciąg znaków, więc taki wzorzec wybiera rekordy, których pole zaczyna się od litery M.
Użyj filtrowania w WHERE z LIKE i symbolem %: WHERE nazwisko LIKE 'M%'. Dzięki temu baza zwróci tylko te wiersze, w których nazwisko ma prefiks "M". To typowy wzorzec do wyszukiwania po pierwszych znakach.
WHERE ogranicza wynik do rekordów spełniających warunek (filtruje). ORDER BY jedynie sortuje już zwrócone rekordy i nie usuwa tych niespełniających kryterium. Jeśli celem jest "odnaleźć uczniów", trzeba filtrować, czyli użyć WHERE.
% to symbol wieloznaczny oznaczający dowolny ciąg znaków (również pusty). Dlatego 'M%' pasuje do "Mucha", "Miller", ale też do "M". Wzorzec z % jest podstawą wyszukiwania po prefiksie lub fragmencie tekstu.
Nie w tym sensie. IN służy do sprawdzania przynależności do listy konkretnych wartości, np. WHERE klasa IN ('1A','1B'). LIKE służy do wzorców (prefiks, sufiks, fragment), np. WHERE nazwisko LIKE 'M%'.
Użyj wzorca z % po obu stronach litery: WHERE nazwisko LIKE '%M%'. To zwróci rekordy, w których "M" występuje gdziekolwiek w tekście. Na egzaminie zwracaj uwagę, czy pytanie dotyczy początku ("M%") czy dowolnego miejsca ("%M%").
Wtedy % stawiasz przed literą: WHERE nazwisko LIKE '%M'. Taki wzorzec dopasuje teksty, których ostatnim znakiem jest M. To częsta pułapka egzaminacyjna: położenie % zmienia znaczenie dopasowania.
To zależy od systemu i ustawień porównywania (kolacji). W części baz LIKE może być domyślnie niewrażliwe na wielkość liter, a w innych wrażliwe. Na egzaminie zwykle liczy się poprawna konstrukcja zapytania (LIKE + %), a szczegóły zależą od przyjętego silnika.
Najczęstsze pomyłki to: użycie IN zamiast LIKE, próba "filtrowania" przez ORDER BY, wstawienie % w złym miejscu (np. '%M' zamiast 'M%'), oraz pomylenie celu zapytania (sortowanie vs wybór rekordów). Pomaga zapamiętać: WHERE filtruje, ORDER BY sortuje.
W praktyce pomaga indeks na kolumnie nazwisko, bo zapytania po prefiksie często mogą z niego skorzystać. Natomiast wzorzec zaczynający się od % (np. '%M%') zwykle jest trudniejszy do przyspieszenia indeksem. Na INF.3 wystarczy rozumieć ideę: indeks wspiera wyszukiwanie po początku tekstu.
info

Około 55% zdających odpowiada poprawnie na to pytanie. średnie

Według specjalistów z branży: "Warunek wyszukiwania nazwisk zaczynających się od "M" realizuje się przez LIKE, gdzie % oznacza dowolny dalszy ciąg znaków."

Źródła:

  • PostgreSQL Documentation: "Pattern Matching" / operator LIKE, https://www.postgresql.org/docs/current/functions-matching.html (dostęp: 2026-02-27)
  • MySQL 8.0 Reference Manual: "String Comparison Functions and Operators" / LIKE, https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html (dostęp: 2026-02-27)
  • Microsoft Learn: T-SQL LIKE (Transact-SQL), https://learn.microsoft.com/en-us/sql/t-sql/language-elements/like-transact-sql (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja dialektu SQL używanego na zajęciach (MySQL/PostgreSQL/SQL Server) – rozdział o LIKE
  • Ćwiczenia z zapytań SELECT z klauzulą WHERE
  • Materiały szkolne do INF.3: podstawy baz danych i języka SQL

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego