В більшості випадків необхідно отримувати не всі записи, а лише ті, які відповідають певним критеріям. Тому для здійснення фільтрації вибірки в SQL є спеціальний оператор WHERE.
Давайте з нашої таблиці, наприклад, відберемо записи, які стосуються лише певного товару. Для цього ми зазначимо додатковий параметр відбору, який фільтруватиме значення по колонці Product.
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes'
Як бачимо, умова відбору взята в одинарні лапки, що є обов'язковим при фільтруванні текстових значень. При фільтруванні числових значень лапки не потрібні.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000
ORDER BY Amount
В цьому прикладі ми відібрали записи, в яких виручка від реалізації становила більше 40 тис. $ та, додатково, всі записи посортували по зростанню по полю Amount.
В таблиці нижче, зазначено перелік умовних операторів, які підтримуються SQL:
Знак операції | Значення |
---|---|
= | Дорівнює |
<> | Не дорівнює |
< | Менше |
<= | Менше або рівне |
> | Більше |
>= | Більше або рівне |
BETWEEN | Між двома значеннями |
IS NULL | Відсутній запис |
Для відбору даних, які лежать в певному діапазоні, використовується оператор BETWEEN. В наступному запиті будуть відібрані усі значення, які лежать в межах від 1000$ до 2000$ включно, в полі Amount.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount BETWEEN 1000 AND 2000
Черговість сортування буде залежати від порядку розташування полів в запиті. Тобто, в нашому випадку спочатку дані будуть посортовані по колонці Amount, а потім по City.
В SQL існує спеціальний оператор для вибірки порожніх записів (називаєьбся NULL). Порожнім записом вважається будь-яка комірка в таблиці, в яку не введено жодного символу. Якщо в комірку введено 0 або пробіл, то вважається, що поле заповнене.
SELECT *
FROM Sumproduct
WHERE Amount IS NULL
В прикладі вище, ми навмисне видалили два значення в полі Amount, щоб продемонструвати роботу оператора NULL.
Мова SQL не обмежується фільтруванням по одній умові, для власних цілей ви можете викоритсовувати досить складні конструкції для вибірки даних одночасно по багатьом критеріям. Для цього в SQL є додаткові оператори, які розширюють можливості оператора WHERE. Такими операторами являються: AND, OR, IN, NOT. Наведемо кілька прикладів роботи даних операторів.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT *
FROM Sumproduct
WHERE Month = 'April' OR Month = 'March'
Давайте об'єднаємо оператори AND та OR. Для цього зробимо вибірку велосипедів (Bikes) та ковзанів (Skates), які були продані в березні (March).
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'
Бачимо, що в нашу вибірку попало за багато значень (крім березня (March), також січень (January), лютий (February) та квітень (April)). В чому ж причина? А в тому, що SQL має пріоритети виконання команд. Тобто оператор AND має вищий пріоритет, ніж оператор OR, тому спочатку було відібрано записи з ковзанами, що продані в березні, а потім усі записи, що стосувалися велосипедів.
Отже, щоб отримати правильну вибірку, нам потрібно змінити пріоритети виконання команд. Для цього використаємо дужки, як в математиці. Тоді, спочатку будуть опрацьовані оператори в дужках, а потім - всі решта.
Run SQLSELECT *
FROM Sumproduct
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'
Run SQLSELECT *
FROM Sumproduct
WHERE ID IN (4, 12, 58, 67)
Оператор IN виконує ту ж саму функцію, що і OR, проте має ряд переваг:
Run SQLSELECT *
FROM Sumproduct
WHERE NOT City IN ('Toronto', 'Montreal')
Ключове слово NOT дозволяє забрати непотрібні значення із вибірки. Також його особливістю є те, що воно проставляється перед назвою стовпця, який бере участь у фільтруванні, а не після.