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

Занятие 07. Практикум 2

📁 Блок: SQL / MySQL / Практикум ⏱️ Время изучения: ~90 мин 🎯 Сложность: Практикум
#case #if #between #distinct #limit #offset #concat #left #substring #upper

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

Практическое занятие для закрепления материала занятий 05–06. Решаем задачи на CASE, IF, строковые функции, DISTINCT, LIMIT и OFFSET.

  • Классифицируем строки с помощью условной логики.
  • Используем DISTINCT с фильтрами и сортировкой.
  • Применяем LIMIT / OFFSET для пагинации.

Что запомнить: практикум проверяет умение комбинировать пройденные операторы в одном запросе.

Частая ошибка: забывать ORDER BY при использовании LIMIT.

📖 Краткий обзор операторов

Условная логика: CASE и IF

CASE проверяет условия по порядку и возвращает первое подходящее значение. ELSE — запасной вариант.

CASE
    WHEN quantity < 30 THEN 'small'
    WHEN quantity BETWEEN 30 AND 70 THEN 'medium'
    ELSE 'large'
END AS category

В MySQL можно использовать вложенные IF:

IF(quantity < 30, 'small',
   IF(quantity > 70, 'large', 'medium')) AS category

Фильтрация диапазонов: BETWEEN

BETWEEN a AND b включает границы a и b. Удобен для числовых диапазонов и дат.

WHERE purchase_order_id BETWEEN 90 AND 100

Уникальные значения и пагинация

DISTINCT часто сочетается с WHERE, ORDER BY и LIMIT:

SELECT DISTINCT product_id
FROM order_details
WHERE quantity * unit_price > 200
ORDER BY product_id
LIMIT 7;

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

  • CONCAT(a, b, ...) — объединение строк.
  • LEFT(str, n) / RIGHT(str, n) — символы с начала / конца.
  • SUBSTRING(str, pos, len) — подстрока.
  • UPPER(str) / LOWER(str) — регистр.

✨ Современные практики

  • Для читаемости предпочитайте CASE вложенным IF, особенно если условий больше двух.
  • При пагинации всегда задавайте ORDER BY.
  • Фильтруйте строки в WHERE до вычисления выражений в SELECT — это обычно эффективнее.