Jakim poleceniem SQL można zlikwidować z tabeli artykuly wiersze, które zawierają słowo "sto" w dowolnej lokalizacji pola tresc?
Odpowiedź "DELETE FROM artykuly WHERE tresc LIKE '%sto%';" jest okej, bo używasz operatora LIKE. To pozwala na szukanie wzorców w tekście. W SQL to polecenie usunie wszystkie wiersze z tabeli 'artykuly', które mają słowo 'sto' w polu 'tresc', niezależnie od tego, gdzie się ono znajduje. Te znaki procentu (%) przed i po 'sto' to takie wildcardy, które mogą oznaczać dowolny tekst przed lub po. To zgodne z dobrymi praktykami programowania w SQL, gdzie można używać LIKE, gdy nie mamy ściśle określonego formatu. Na przykład, takie zapytanie może się przydać, żeby usunąć artykuły z niepożądanym zwrotem, co ma znaczenie przy moderowaniu treści na stronach internetowych.
Wybór odpowiedzi "DELETE * FROM artykuly WHERE tresc = '%sto%';" jest po prostu zły z paru powodów. Po pierwsze, w SQL nie używamy znaku '*' przy DELETE. Jak chcemy usunąć wiersze, to piszemy tylko "DELETE FROM nazwa_tabeli". To '*' sugeruje, że chcesz usunąć jakieś konkretne kolumny, a to w SQL się nie sprawdzi. Druga sprawa to operator '=' zamiast 'LIKE'. '=' używamy do porównania wartości, nie do wyszukiwania wzorców, a tu właśnie szukamy wystąpienia słowa 'sto' w dłuższym tekście. Dlatego operator LIKE z wildcardami jest tu konieczny, by znaleźć i usunąć te wiersze, które mają 'sto' gdziekolwiek. Często ludzie mylą te operatory w SQL, co prowadzi do problemów i nieefektywnego wyszukiwania.