Poprawnie wskazane zapytanie korzysta z instrukcji DELETE oraz operatora LIKE z odpowiednim wzorcem: "%-06-%". W kolumnie data_ur mamy daty zapisane w standardowym formacie ISO: RRRR-MM-DD, np. 2005-06-14. W takim formacie miesiąc zawsze znajduje się na pozycjach 6–7 i jest zapisany jako dwucyfrowa liczba z wiodącym zerem. Wzorzec "%-06-%" oznacza: dowolny ciąg znaków przed, dokładnie „-06-” w środku, oraz dowolny ciąg znaków po. Dzięki temu trafiamy w wszystkie daty, gdzie miesiąc to 06, czyli czerwiec, niezależnie od roku i dnia. To jest bardzo praktyczne podejście, gdy przechowujemy datę w typie DATE i chcemy filtrować po miesiącu bez dodatkowych funkcji. W MySQL operator LIKE działa na wartościach tekstowych, ale typ DATE jest w takim kontekście automatycznie konwertowany do postaci tekstowej w formacie 'YYYY-MM-DD', więc wzorzec z myślnikami jest jak najbardziej poprawny. W realnych projektach częściej stosuje się funkcje DATE_FORMAT albo MONTH(data_ur) = 6, bo to jest czytelniejsze i mniej podatne na pomyłki w zapisie wzorca. Jednak w tym zadaniu celem jest zrozumienie, jak działa LIKE, wildcard „%” oraz jak wygląda rzeczywisty format przechowywania daty. Dobrą praktyką jest też zawsze używanie pojedynczych cudzysłowów w SQL (np. '%-06-%'), choć MySQL akceptuje też podwójne w pewnych konfiguracjach. Moim zdaniem warto zapamiętać ten sposób myślenia: patrzysz na rzeczywisty zapis danych w kolumnie i dopasowujesz wzorzec tak, żeby trafić dokładnie ten fragment, który Cię interesuje (tu: '-06-').
W tym zadaniu kluczowe jest zrozumienie trzech rzeczy: poprawnej składni SQL, sposobu zapisu daty w bazie oraz działania operatora LIKE. Jeśli któryś z tych elementów „siądzie”, to całe zapytanie przestaje mieć sens. Nie można na przykład używać słowa kluczowego DROP zamiast DELETE. DROP służy do usuwania całych obiektów bazodanowych, takich jak tabele czy bazy danych (np. DROP TABLE uczniowie;), a nie pojedynczych rekordów. Użycie DROP z klauzulą WHERE jest po prostu niepoprawne składniowo i w MySQL takie zapytanie się nie wykona. To jest dość typowy błąd: pomylenie operacji na strukturze bazy danych z operacjami na danych. Druga sprawa to porównywanie daty. W SQL nie stosujemy operatora „==”, to nie jest JavaScript ani C++. Standardowy operator porównania to pojedynczy znak równości „=”. Dodatkowo zapis typu #-06-# nie ma żadnego sensu w MySQL, wygląda raczej jak składnia z innych środowisk (np. Access). MySQL oczekuje albo literalnej wartości daty w formacie 'YYYY-MM-DD', albo użycia funkcji, albo poprawnego wzorca tekstowego. Kolejny częsty błąd to używanie LIKE z nieprawidłowym wzorcem. W MySQL wildcardami są „%” (dowolny ciąg znaków, także pusty) oraz „_” (dokładnie jeden dowolny znak). Znaki „?” nie pełnią roli symbolu zastępczego w standardowym SQL, więc wzorzec "?-06-?" po prostu nie zadziała tak, jak ktoś mógłby się spodziewać. Trzeba też pamiętać, że data jest zapisana w formacie 'RRRR-MM-DD', więc dopasowanie po samym „06” bez myślników jest ryzykowne – mogłoby trafić w inne fragmenty ciągu, a nie w sam miesiąc. Z mojego doświadczenia wynika, że najlepszym nawykiem jest zawsze myślenie: jaki dokładnie ciąg znaków stoi w kolumnie i jakim wzorcem LIKE mogę go jednoznacznie złapać, zamiast zgadywać składnię czy mieszać składnie z różnych technologii.