Занятие 07. Практикум 2
⚡ Кратко: суть темы
Практическое занятие для закрепления материала занятий 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— это обычно эффективнее.