Ответ
TINYINT — это наименьший целочисленный тип данных в SQL, идеальный для хранения логических значений или очень маленьких диапазонов чисел.
Ключевые характеристики:
- Размер: Занимает 1 байт (8 бит).
- Диапазон значений:
SIGNED(со знаком): от -128 до 127UNSIGNED(без знака): от 0 до 255
Основные сценарии использования:
- Булевы (логические) флаги: Это самый частый случай. Например,
is_active,is_deleted,email_verified. - Ограниченные перечисления: Статусы, типы, категории, где вариантов меньше 255.
- Небольшие числовые значения: Месяц (1-12), день недели (1-7), рейтинг по 5-звездочной системе.
Пример с булевым флагом и перечислением:
CREATE TABLE articles (
id INT PRIMARY KEY,
title VARCHAR(255),
-- Логический флаг: 0 = черновик, 1 = опубликован
is_published TINYINT(1) UNSIGNED DEFAULT 0,
-- Категория статьи: 1=техно, 2=наука, 3=культура
category_id TINYINT UNSIGNED NOT NULL,
-- Порядок отображения (от 0 до 100)
display_order TINYINT UNSIGNED DEFAULT 0
);
Важное замечание: В MySQL TINYINT(1) часто интерпретируется графическими клиентами и некоторыми ORM как булев тип. Однако на уровне хранилища это все тот же 1-байтовый целочисленный тип. Использование TINYINT для флагов — это эффективная практика по сравнению с VARCHAR или BOOLEAN (который в MySQL является синонимом TINYINT(1)).