Параметр WHERE
в мові SQL виконує фільтрацію рядків які отримуються після запиту, згідно з заданими умовами. Умови задаються предикатами.
WHERE
це зарезервоване слово в SQL.
Пункт WHERE використовується разом з виразом SQL DML, і має наступну форму:
SQL-DML-Statement
FROM table_name
WHERE predicate
повертаються всі рядки для яких предикат в пункті WHERE
Істина. Рядки для яких предикат має значення Хиба або Невідомо (NULL) вважаються такими, що не відповідають критерію відбору.
Наступний запит повертає рядки з mytable для яких mycol більше ніж 100.
SELECT *
FROM mytable
WHERE mycol > 100
Натупний вираз DELETE
видаляє рядки, з mytable де mycol або NULL, або дорівнює 100.
DELETE
FROM mytable
WHERE mycol IS NULL OR mycol = 100
Прості предикати використовують операцію з набору =
, <>
, >
, >=
, <
, <=
, IN
, BETWEEN
, LIKE
, IS NULL
або IS NOT NULL
.
При потребі предикати можуть бути відокремлені дужками. Ключові слова AND
і OR
можуть бути використані для об'єднання двох предикатів в один новий. Якщо утворюється багато комбінацій, то дужки можна використати для визначення порядку обчислення. Без дужок AND
має вищий пріоритет ніж OR
.
Наступний приклад видаляє рядки з mytable де значення mycol більше ніж 100 та значення item дорівнює рядку 'Hammer':
DELETE
FROM mytable
WHERE mycol > 100 AND item = 'Hammer'
IN
знаходить всі значення, що присутні в поданому наборі.
SELECT ename WHERE ename IN ('value1', 'value2', ...)
Тотожно з
SELECT ename WHERE ename='value1' OR ename='value2'
окрім того, що в другому варіанті можливо порівнювати різні стовпці, в той час при використанні IN
ні.
BETWEEN
знаходить всі значення в заданих межах.
SELECT ename WHERE ename BETWEEN 'value1' AND 'value2'
Будуть відібрані всі рядки зі значеннями між 'value1' та 'value2', включно.
LIKE
знаходить рядки, що відповідають певному шаблону.
SELECT ename
FROM emp
WHERE ename LIKE 'S%';
SELECT ename FROM emp WHERE ename LIKE '%S';
SELECT ename FROM emp WHERE ename LIKE '%S%';
SELECT ename FROM emp WHERE ename LIKE '%A_E%';
SQL програмісти мають бути обережними з використанням предиката LIKE
через його негативний вплив на швидкодію.