Інші типи даних у MySQL. | |
BINARY | використовується для зберігання бінарних (двійкових) даних. |
VARBINARY | використовується для зберігання бінарних (двійкових) даних змінної довжини. |
BOOLEAN | це синонім для TINYINT(1). |
JSON | Він призначений для зберігання структурованих даних у форматі JSON |
ENUM | значення вибираються лише з заздалегідь визначеного списку. |
SET | дозволяє вибирати низку значень зі списку можливих варіантів. |
BINARY
BINARY використовується для зберігання бінарних (двійкових) даних. Це може бути корисно для зберігання хешів, зашифрованих значень, унікальних ідентифікаторів тощо. | |
Тип | бінарні дані фіксованої довжини |
Синтаксис | BINARY(n), де n — кількість байтів (від 1 до 255) |
Зберігання | Зберігає: точно n байтів, заповнюючи нулями (\0) при необхідності |
Коли використовувати BINARY?
- Для фіксованих хешів (SHA256)
- Для кодування бінарних ідентифікаторів
- Для шифрованих даних, якщо розмір завжди однаковий
Приклад створення таблиці:
CREATE TABLE users_binary (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
password_hash BINARY(32)
);
INSERT INTO users_binary (username, password_hash)
VALUES ('Jennifer', UNHEX(SHA2('password123', 256)));
-- SHA2(..., 256) повертає хеш як hex-рядок, UNHEX() — конвертує його у двійковий вигляд.
VARBINARY
VARBINARY використовується для зберігання бінарних (двійкових) даних змінної довжини. | |
Тип | Бінарний, змінної довжини |
Синтаксис | VARBINARY(n) |
Зберігання | Байти, а не текст |
У чому відмінність від BINARY | Не доповнює значення до фіксованої довжини |
Коли використовувати VARBINARY?
- Зберігання файлів, зображень, PDF, аудіо
- Зберігання ключів, токенів, байтових масивів
- Збереження хешів змінної довжини
Приклад створення таблиці:
CREATE TABLE users_varbinary (
id INT AUTO_INCREMENT PRIMARY KEY,
login VARCHAR(50),
token VARBINARY(64)
);
INSERT INTO users_varbinary (login, token)
VALUES ('Jennifer', UNHEX(SHA2('secretcode', 512)));
BOOLEAN
BOOLEAN — це синонім для TINYINT(1). | |
Особливість неістинного значення | 0 = FALSE |
Особливість істинного значення | Будь-яке ненульове значення = TRUE (зазвичай використовують 1) |
Зберігання | Зберігається як 1 байт |
Коли використовувати BOOLEAN?
- Прапорців: is_active, is_deleted, has_access
- Налаштування користувача
- Умовні стани
Приклад створення таблиці:
CREATE TABLE users_bool (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
is_active BOOLEAN
);
INSERT INTO users_bool (username, is_active)
VALUES
('Olga', TRUE),
('Olena', FALSE),
('Petro', 1);
JSON
JSON – повноцінний тип даних починаючи з версії 5.7. Призначений для зберігання структурованих даних у форматі JSON (масиви, об’єкти тощо) прямо в таблицях бази даних. | |
Тип | Структурований (JSON) |
Автоматична перевірка | MySQL перевіряє, чи це валідний JSON |
Переваги | Гнучкість зберігання напівструктурованих даних |
Коли використовувати JSON?
- Зберігання динамічних даних
- API-логіка (наприклад, зберігання відповіді або конфігурації)
- Локалізація (наприклад, різні переклади в одному полі)
- Масиви властивостей, специфікації, параметри користувача тощо
Приклад створення таблиці:
CREATE TABLE products_json (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
specifications JSON
);
INSERT INTO products_json (name, specs)
VALUES
('MacBook Air', '{"ram": "16GB", "cpu": "M2", "ports": ["USB-C", "Thunderbolt"]}');
ENUM
ENUM — це рядковий тип, де значення вибираються лише із заздалегідь визначеного списку. | |
Кількість варіантів | До 65,535 унікальних значень |
Зберігається | Як число-індекс (1, 2, 3, …) у базі |
Можливе значення ‘ ‘ | Якщо вказати NOT NULL, то не буде |
Коли використовувати? | Коли список можливих значень невеликий і рідко змінюється. |
Приклад створення таблиці:
CREATE TABLE users_enum (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
role ENUM('admin', 'manager', 'user') NOT NULL
);
INSERT INTO users_enum (username, role)
VALUES
('Andrew', 'admin'),
('Jenny', 'manager'),
('Nancy', 'user');
SET
SET — це рядковий тип, який дозволяє вибирати 0 або більше значень зі списку можливих варіантів. | |
Кількість варіантів | Максимум 64 значення |
Порядок значень | Фіксований, як у момент створення |
Чутливість до реєстру | За замовчуванням – ні |
Коли використовувати? | Коли потрібно зберігати кілька вибраних опцій в одному полі: ◦ Уподобання користувача (жанри, хобі) ◦ Доступ до модулів ◦ Набори прав або теги |
CREATE TABLE users_set (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
interests SET('music', 'travel', 'reading', 'sport') NOT NULL
);
INSERT INTO users_set (name, interests)
VALUES
('Kate', 'music,reading'),
('Irene', 'travel'),
('Peter', 'music,sport,travel');
Для додаткової візуалізації є відео.