În cele mai multe cazuri, este necesar să primiți nu toate înregistrările, ci doar pe cele care îndeplinesc anumite criterii. De aceea există un operator special WHERE în SQL pentru filtrarea eșantionării.
Să selectăm din tabelul nostru, de exemplu, înregistrări care se referă doar la un anumit produs. Pentru a face acest lucru, specificăm un parametru de selecție suplimentar care va filtra valorile după coloana Produs.
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes'
După cum puteți vedea, condiția de selecție este inclusă între ghilimele simple, ceea ce este obligatoriu la filtrarea valorilor textului. Ghilimelele nu sunt necesare la filtrarea valorilor numerice.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000
ORDER BY Amount
În acest exemplu, am selectat înregistrări în care venitul din vânzări a fost mai mare de 40.000 USD și, în plus, am sortat toate înregistrările în ordine crescătoare după câmpul Sumă.
Tabelul de mai jos listează instrucțiunile condiționate acceptate de SQL:
Знак операції | Значення |
---|---|
= | Дорівнює |
<> | Не дорівнює |
< | Менше |
<= | Менше або рівне |
> | Більше |
>= | Більше або рівне |
BETWEEN | Між двома значеннями |
IS NULL | Відсутній запис |
Operatorul BETWEEN este utilizat pentru a selecta date care se află într-un anumit interval. În următoarea interogare, vor fi selectate toate valorile care se situează între 1.000 USD și 2.000 USD, inclusiv, în câmpul Sumă.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount BETWEEN 1000 AND 2000
Ordinea sortării va depinde de ordinea câmpurilor din cerere. Adică, în cazul nostru, datele vor fi mai întâi sortate după coloana Sumă, iar apoi după City.
În SQL, există un operator special pentru selectarea înregistrărilor goale (numit NULL). O intrare goală este orice celulă din tabel în care nu este introdus niciun caracter. Dacă în celulă se introduce 0 sau un spațiu, se consideră că câmpul este completat.
SELECT *
FROM Sumproduct
WHERE Amount IS NULL
În exemplul de mai sus, am eliminat în mod intenționat două valori din câmpul Sumă pentru a demonstra operatorul NULL.
Limbajul SQL nu se limitează la filtrarea după o singură condiție, în propriile scopuri puteți folosi construcții destul de complexe pentru a selecta datele simultan după mai multe criterii. Pentru aceasta, SQL are operatori suplimentari care extind capacitățile operatorului WHERE. Astfel de operatori sunt: AND, OR, IN, NOT. Vom da mai multe exemple de funcționare a acestor operatori.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT *
FROM Sumproduct
WHERE Month = 'April' OR Month = 'March'
Să combinăm operatorii AND și OR. Pentru a face acest lucru, vom face o selecție de biciclete (Biciclete) și patine (Skates), care au fost vândute în martie.
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'
Putem vedea că multe valori au fost incluse în eșantionul nostru (pe lângă martie, și ianuarie, februarie și aprilie). Care este motivul? Și faptul că SQL are priorități de execuție a comenzilor. Adică operatorul AND are o prioritate mai mare decât operatorul OR, așa că primele au fost selectate înregistrările cu patine vândute în martie, urmate de toate înregistrările legate de biciclete.
Deci, pentru a obține eșantionarea corectă, trebuie să schimbăm prioritățile de execuție a comenzii. Pentru aceasta, vom folosi paranteze, ca la matematică. Apoi, operatorii din paranteze vor fi procesați mai întâi și apoi restul.
Run SQLSELECT *
FROM Sumproduct
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'
Run SQLSELECT *
FROM Sumproduct
WHERE ID IN (4, 12, 58, 67)
Operatorul IN îndeplinește aceeași funcție ca și OR, dar are câteva avantaje:
Run SQLSELECT *
FROM Sumproduct
WHERE NOT City IN ('Toronto', 'Montreal')
Cuvântul cheie NOT vă permite să eliminați valorile inutile din eșantion. De asemenea, caracteristica sa este că este plasat înaintea numelui coloanei implicate în filtrare, și nu după.