← К оглавлению занятия

Занятие 02. Оператор WHERE. Специальное значение NULL

📁 Блок: SQL / MySQL ⏱️ Время изучения: ~60 мин 🎯 Сложность: Начальная
#and #or #not #like #in #between #null #where

⚡ Кратко: суть темы

Занятие учит фильтровать строки в SQL-запросах с помощью оператора WHERE. Мы разберём операторы сравнения, логические операторы AND/OR/NOT, поиск по маске LIKE, множественный выбор IN и BETWEEN, а также правила работы со специальным значением NULL.

  • WHERE идёт после FROM и отбирает только подходящие строки.
  • Операторы сравнения: =, <>/!=, <, <=, >, >=.
  • LIKE использует % (любые символы) и _ (один символ).
  • NULL — отсутствие значения; для проверки используются только IS NULL и IS NOT NULL.

Что запомнить: NULL = NULL не истинно — никогда не сравнивайте NULL обычными операторами.

Частая ошибка: писать WHERE column = NULL вместо WHERE column IS NULL.

✅ Решения

1. Простое условие

SELECT *
FROM order_details
WHERE unit_price > 20;

2. Комбинация AND

SELECT *
FROM order_details
WHERE product_id = 43
  AND status_id = 2;

3. OR

SELECT *
FROM order_details
WHERE quantity <= 15
   OR unit_price = 15;

4. Исключение значений

SELECT inventory_id
FROM order_details
WHERE order_id <> 46
  AND order_id <> 79;

5. Скобки

SELECT *
FROM order_details
WHERE unit_price > 9
  AND (order_id = 30 OR status_id = 1);

6–8. LIKE

SELECT *
FROM employees
WHERE first_name LIKE 'A%';

SELECT *
FROM employees
WHERE city LIKE '%mond';

SELECT home_phone
FROM employees
WHERE notes LIKE '%French%'
  AND last_name LIKE '%k%';

9–10. BETWEEN и IN

SELECT *
FROM orders
WHERE shipping_fee BETWEEN 10 AND 15;

SELECT ship_name
FROM orders
WHERE ship_city IN ('Chicago', 'Miami');

11–12. NULL

SELECT *
FROM orders
WHERE shipped_date IS NULL;

SELECT id
FROM orders
WHERE shipped_date IS NULL
  AND shipper_id IS NULL;