Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Bazy danych

Które dane zostaną wybrane w wyniku działania kwerendy na przedstawionych rekordach?

SELECT id FROM samochody WHERE rocznik LIKE "2%4";
idmarkamodelrocznik
1FiatPunto2016
2FiatPunto2002
3FiatPunto2007
4OpelCorsa2016
5OpelAstra2003
6ToyotaCorolla2016
7ToyotaCorolla2014
8ToyotaYaris2004
A. Tylko identyfikator równy 8.
B. Identyfikatory równe 7 oraz 8.
C. Wszystkie identyfikatory.
D. Brak danych.
Wynikiem kwerendy będą identyfikatory 7 oraz 8, ponieważ warunek rocznik LIKE '2%4' wyszukuje wartości, które zaczynają się od cyfry 2 i kończą się cyfrą 4. Znak % w SQL oznacza dowolny ciąg znaków: może to być jeden znak, kilka znaków, a nawet pusty ciąg. Dlatego do wzorca pasuje rocznik 2014, bo zaczyna się od 2 i kończy na 4, oraz 2004 z tego samego powodu. Pozostałe roczniki, na przykład 2016, 2002, 2007 i 2003, nie spełniają warunku, bo nie kończą się cyfrą 4. Kwerenda wybiera tylko kolumnę id, więc nie zobaczymy marki ani modelu, tylko same identyfikatory pasujących rekordów. Moim zdaniem to dobre pytanie, bo pokazuje praktyczne użycie operatora LIKE, który bardzo często stosuje się przy filtrowaniu tekstów, kodów produktów, numerów katalogowych albo dat zapisanych jako tekst. Warto jednak pamiętać o dobrej praktyce: w standardowym SQL literały tekstowe zapisuje się w apostrofach, czyli '2%4', a cudzysłowy bywają używane do nazw kolumn lub tabel. Dodatkowo, jeżeli rocznik jest przechowywany jako liczba, to w prawdziwej bazie często lepiej użyć warunków liczbowych, bo jest to czytelniejsze i zwykle bardziej wydajne.
W tym zadaniu łatwo pomylić znaczenie operatora LIKE, szczególnie gdy patrzy się na rocznik jak na zwykłą liczbę. Warunek rocznik LIKE '2%4' nie oznacza dokładnego porównania do wartości 2%4 ani nie oznacza, że baza ma zwrócić wszystko, co zaczyna się od 2. Wzorzec jest bardziej precyzyjny: wartość musi zaczynać się znakiem 2 i jednocześnie kończyć się znakiem 4. Znak % działa jak wieloznacznik, czyli zastępuje dowolny fragment tekstu znajdujący się pomiędzy początkiem a końcem wzorca. Dlatego nie można uznać, że nie będzie żadnych danych. W tabeli są przecież roczniki 2014 i 2004, które idealnie pasują do schematu. Niepoprawne jest też założenie, że zostaną wybrane wszystkie identyfikatory, bo roczniki 2016, 2002, 2007 i 2003 nie kończą się cyfrą 4, więc odpadają z wyniku. Typowy błąd polega tu na zauważeniu tylko początku wzorca, czyli cyfry 2, i zignorowaniu końcówki 4. Z kolei wskazanie tylko identyfikatora 8 wynika zwykle z myślenia, że wzorzec pasuje wyłącznie do 2004, bo wygląda najbardziej podobnie do zapisu '2%4'. To też nie jest poprawne, ponieważ % może zastąpić także ciąg '01', więc 2014 również spełnia warunek. Z mojego doświadczenia najlepiej czytać takie warunki bardzo dosłownie: zaczyna się od tego, potem cokolwiek, kończy się na tamtym. Wtedy wynik wychodzi bez zgadywania i bez kombinowania.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.