SQL-Урок 4. Фільтрування даних (WHERE)

В більшості випадків необхідно отримувати не всі записи, а лише ті, які відповідають певним критеріям. Тому для здійснення фільтрації вибірки в SQL є спеціальний оператор WHERE.

1. Просте фільтрування оператором WHERE.

Давайте з нашої таблиці, наприклад, відберемо записи, які стосуються лише певного товару. Для цього ми зазначимо додатковий параметр відбору, який фільтруватиме значення по колонці Product.

Приклад запиту для відбору текстових значень:

SELECT * FROM Sumproduct WHERE Product = 'Bikes'

Як бачимо, умова відбору взята в одинарні лапки, що є обов'язковим при фільтруванні текстових значень. При фільтруванні числових значень лапки не потрібні.

Приклад запиту для відбору числових значень:

SELECT * FROM Sumproduct WHERE Amount > 40000 ORDER BY Amount

В цьому прикладі ми відібрали записи, в яких виручка від реалізації становила більше 40 тис. $ та, додатково, всі записи посортували по зростанню по полю Amount.

В таблиці нижче, зазначено перелік умовних операторів, які підтримуються SQL:

Знак операції
Значення
= Дорівнює
<> Не дорівнює
< Менше
<= Менше або рівне
> Більше
>= Більше або рівне
BETWEEN Між двома значеннями
IS NULL Відсутній запис

2. Фільтрування по діапазону значень (BETWEEN).

Для відбору даних, які лежать в певному діапазоні, використовується оператор BETWEEN. В наступному запиті будуть відібрані усі значення, які лежать в межах від 1000$ до 2000$ включно, в полі Amount.

SELECT * FROM Sumproduct WHERE Amount BETWEEN 1000 AND 2000

Черговість сортування буде залежати від порядку розташування полів в запиті. Тобто, в нашому випадку спочатку дані будуть посортовані по колонці Amount, а потім по City.

3. Вибірка порожніх записів (IS NULL).

В SQL існує спеціальний оператор для вибірки порожніх записів (називаєьбся NULL). Порожнім записом вважається будь-яка комірка в таблиці, в яку не введено жодного символу. Якщо в комірку введено 0 або пробіл, то вважається, що поле заповнене.

SELECT * FROM Sumproduct WHERE Amount IS NULL

В прикладі вище, ми навмисне видалили два значення в полі Amount, щоб продемонструвати роботу оператора NULL.

4. Розширене фільтрування (AND, OR).

Мова SQL не обмежується фільтруванням по одній умові, для власних цілей ви можете викоритсовувати досить складні конструкції для вибірки даних одночасно по багатьом критеріям. Для цього в SQL є додаткові оператори, які розширюють можливості оператора WHERE. Такими операторами являються: AND, OR, IN, NOT. Наведемо кілька прикладів роботи даних операторів.

SELECT * FROM Sumproduct WHERE Amount > 40000 AND City = 'Toronto'

SELECT * FROM Sumproduct WHERE Month= 'April' OR Month= 'March'

Давайте об'єднаємо оператори AND та OR. Для цього зробимо вибірку велосипедів (Bikes) та ковзанів (Skates), які були продані в березні (March).

SELECT * FROM Sumproduct WHERE Product = 'Bikes' OR Product = 'Skates' AND Month= 'March'

Бачимо, що в нашу вибірку попало за багато значень (крім березня (March), також січень (January), лютий (February) та квітень (April)). В чому ж причина? А в тому, що SQL має пріоритети виконання команд. Тобто оператор AND має вищий пріоритет, ніж оператор OR, тому спочатку було відібрано записи з ковзанами, що продані в березні, а потім усі записи, що стосувалися велосипедів.

Отже, щоб отримати правильну вибірку, нам потрібно змінити пріоритети виконання команд. Для цього використаємо дужки, як в математиці. Тоді, спочатку будуть опрацьовані оператори в дужках, а потім - всі решта.

SELECT * FROM Sumproduct WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month= 'March'

5. Розширене фільтрування (оператор IN).

SELECT * FROM Sumproduct WHERE ID IN (4, 12, 58, 67)

Оператор IN виконує ту ж саму функцію, що і OR, проте має ряд переваг:

6. Розширене фільтрування (оператор NOT).

SELECT * FROM Sumproduct WHERE NOT City IN ('Toronto', 'Montreal')

Ключове слово NOT дозволяє забрати непотрібні значення із вибірки. Також його особливістю є те, що воно проставляється перед назвою стовпця, який бере участь у фільтруванні, а не після.

Статті по темі:

  • SQL-Урок 3. Сортування даних (ORDER BY)
  • SQL-Урок 5. Використання метасимволів (LIKE)