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

Занятие 05. Условные конструкции: операторы CASE, IF

📁 Блок: SQL / MySQL ⏱️ Время изучения: ~60 мин 🎯 Сложность: Начальная
#case #if #as #concat #left #right #substring #length #trim #replace #upper #lower #coalesce

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

Занятие учит создавать новые столбцы на основе условий. Разбираем оператор CASE, псевдонимы AS, функцию IF в MySQL, математические операции, строковые функции и конкатенацию.

  • CASE WHEN ... THEN ... ELSE ... END — переносит ветвление в SQL.
  • AS задаёт понятное имя вычисляемому столбцу.
  • IF(condition, true, false) — короткая альтернатива CASE, но только в MySQL.

Что запомнить: CASE — стандарт SQL и работает почти везде; IF — специфика MySQL.

Частая ошибка: забыть END в конце блока CASE.

📝 Задания

База данных: northwind.

CASE

  1. Классифицируйте товары из products по standard_cost: «Дорогой» (> 50), «Средний» (20–50), «Дешевый» (≤ 20).
  2. Оптимизируйте предыдущий запрос, убрав лишние проверки диапазонов. Помните, что SQL читает WHEN сверху вниз.
  3. Выведите клиентов из customers со скидкой в зависимости от региона: WA/CA — 5%, ID/OR — 7%, UT/NV — 13%, остальные — 0.
  4. Для заказов из orders создайте столбец order_status: если shipped_date IS NULL — 'Ожидание отправки', если shipped_date = order_date — 'Отправлено в день заказа', иначе — 'Отправлено'.

IF

  1. Выведите название продукта и категорию «Expensive»/«Affordable» в зависимости от того, больше ли standard_cost 20.

Строковые функции и конкатенация

  1. Выберите последние 2 символа названия компании из customers.
  2. Выберите 3 цифры рабочего телефона клиента из customers, начиная с 6-й позиции.
  3. Составьте полное имя сотрудника из employees как first_name last_name.
  4. Замените пропуски в employees.notes на строку 'Not filled'.

Проверка понимания

Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.

Вопрос 1

Для чего нужен CASE?

Вопрос 2

Чем завершается выражение CASE?

Вопрос 3

Что делает SELECT?

Вопрос 4

Почему в SQL важен явный список столбцов?

Вопрос 5

Как лучше форматировать сложный SQL-запрос?

Вопрос 6

Что означает NULL?

Вопрос 7

Почему запросы стоит проверять на маленькой выборке?