W tabeli artykuly (kolumny: nazwa, typ, producent, cena) chcemy wypisać nazwy artykułów typu „pralka” o cenie od 1000 do 1500 zł. Które zapytanie jest poprawne?
Źle. Podwójny błąd:
OR zamiast AND oraz złe BETWEEN ... OR.Źle. Składnia
FROM ... TO nie istnieje; zakres zapisuje się przez BETWEEN ... AND.Dobrze.
AND łączy oba warunki, a BETWEEN 1000 AND 1500 ogranicza cenę.Źle.
OR zwróci też artykuły innego typu - warunki muszą być połączone AND.Aby spełnione były oba wymagania naraz - typ i zakres ceny - warunki łączy się operatorem
AND. Zakres wartości zapisuje się przez BETWEEN dolna AND górna, która obejmuje też końce przedziału. Poprawne zapytanie to więc SELECT nazwa FROM artykuly WHERE typ="pralka" AND cena BETWEEN 1000 AND 1500. Dlatego ta odpowiedź jest właściwa.Pozostałe zapytania zawierają błędy logiczne lub składniowe. Pierwsze używa nieistniejącej składni
cena FROM 1000 TO 1500 - w SQL zakres definiuje BETWEEN ... AND, a nie FROM ... TO. Dwa kolejne łączą warunki operatorem OR, przez co zapytanie zwróci artykuły, które są typu „pralka” ALBO mieszczą się w cenie - czyli także pralki spoza zakresu i inne produkty w tej cenie. Ostatnie dodatkowo psuje BETWEEN, wstawiając OR zamiast AND. Oba warunki naraz daje AND z BETWEEN 1000 AND 1500.