Za pomocą którego polecenia SQL można usunąć z tabeli artykuly wiersze zawierające słowo "sto" znajdujące się w dowolnym miejscu pola tresc?
Odpowiedzi
Informacja zwrotna
Odpowiedź "DELETE FROM artykuly WHERE tresc LIKE '%sto%';" jest poprawna, ponieważ używa operatora LIKE, który umożliwia wyszukiwanie wzorca w tekście. W kontekście SQL, polecenie to pozwala na usunięcie wszystkich wierszy z tabeli 'artykuly', które zawierają słowo 'sto' w polu 'tresc', niezależnie od tego, w którym miejscu tekstu się ono znajduje. Użycie znaków procentu (%) przed i po słowie 'sto' działa jako wildcard, co oznacza, że może poprzedzać lub następować jakikolwiek inny tekst. Ta praktyka jest zgodna z dobrymi standardami programowania w SQL, które zalecają stosowanie LIKE przy wyszukiwaniu tekstu w formacie, który nie jest ściśle określony. Przykładem praktycznego zastosowania tego zapytania może być usunięcie wszystkich artykułów, które w treści zawierają określony zwrot, co jest ważne np. w kontekście moderowania treści na stronie internetowej.
Wybór odpowiedzi z poleceniem "DELETE * FROM artykuly WHERE tresc = '%sto%';" jest błędny z kilku powodów. Po pierwsze, w SQL nie stosuje się znaku '*' w kontekście polecenia DELETE. Kiedy chcemy usunąć wiersze z tabeli, używamy jedynie "DELETE FROM nazwa_tabeli". Użycie '*' sugeruje, że próbujemy usunąć konkretne kolumny, co w przypadku SQL jest pojęciem nieprawidłowym. Kolejna błędna koncepcja to użycie operatora '=' zamiast 'LIKE'. Operator '=' służy do porównania wartości, a nie do wyszukiwania wzorców, co w tym przypadku jest kluczowe, gdyż nie chcemy zidentyfikować dokładnie tekstu 'sto', ale raczej jakiekolwiek wystąpienie tego słowa w dłuższym ciągu tekstowym. Dlatego użycie operatora LIKE z symbolami wildcard jest jedynym sposobem, aby znaleźć i usunąć wiersze, które zawierają 'sto' w dowolnym miejscu. Typowym błędem myślowym jest mylenie operatorów i ich zastosowania w SQL, co prowadzi do nieefektywnego wyszukiwania oraz potencjalnych problemów z poprawnością zapytań w bazach danych.