| Ці типи використовуються для зберігання текстової інформації. | |
| CHAR | фіксована довжина рядка (до 255 символів). |
| VARCHAR | змінна довжина рядка (до 65,535 символів). |
| TEXT | текстові дані (до 65,535 символів). |
| TINYTEXT | малий текст (до 255 символів). |
| MEDIUMTEXT | середній текст (до 16,777,215 символів). |
| LONGTEXT | дуже великий текст (до 4,294,967,295 символів). |
CHAR
| У MySQL тип даних CHAR використовується для зберігання рядків фіксованої довжини. | |
| Фіксована довжина | при оголошенні потрібно вказати довжину, наприклад, CHAR(10). Якщо рядок коротший за вказану довжину, він доповнюється пробілами до визначеної довжини. |
| Довжина | може бути від 1 до 255 символів (CHAR(N), де N – довжина). |
| Продуктивність | може бути швидшим за VARCHAR, особливо при роботі з рядками однакової довжини. |
| Автоматичне видалення пробілів | MySQL автоматично обрізає пробіли при вибірці (SELECT). |
Приклад створення таблиці і введення даних з використання цього:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username CHAR(10) NOT NULL
);
INSERT INTO users (username) VALUES ('Jenny');
Коли використовувати CHAR?
- Якщо всі значення мають однакову або майже однакову довжину (наприклад, коди країн, поштові індекси).
- Якщо потрібен швидкий пошук (наприклад, індексовані поля, які не змінюються часто).
Якщо ж рядки мають змінну довжину, краще використовувати VARCHAR.
VARCHAR
| VARCHAR використовується для зберігання рядків змінної довжини. На відміну від CHAR, він не доповнює рядки пробілами до фіксованої довжини, що робить його більш ефективним для текстових даних змінної довжини. | |
| Змінна довжина | VARCHAR використовує рівно стільки місця, скільки потрібно для даних, плюс 1 або 2 байти для зберігання довжини рядка. |
| Діапазон довжини | може містити від 1 до 65,535 символів (залежно від загального розміру рядка та кодування). |
| Оптимізація простору | на відміну від CHAR, не доповнює рядки пробілами, тому економить місце. |
| Швидкість доступу | може бути трохи повільнішим за CHAR, особливо якщо рядки часто змінюють довжину. |
Приклад створення таблиці і введення даних з використання цього типу:
CREATE TABLE users_varchar (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
city VARCHAR(50)
);
INSERT INTO users (username, email, city)
VALUES
('Alice', 'alice@example.com', 'Kyiv'),
('Willie', 'willie@example.com', 'Lviv'),
('Jenny', 'jenny@example.com', ‘Kharkiv’);
Коли використовувати VARCHAR?
- Коли довжина рядків сильно змінюється (наприклад, імена користувачів, електронні адреси).
- Коли потрібно економити місце в базі даних.
- Якщо значення будуть часто оновлюватися.
Але якщо всі значення однакової довжини (наприклад, коди країн: UA, US, FR), краще використовувати CHAR.
Ще трохи про VARCHAR та CHAR
Як MySQL зберігає VARCHAR?
- Якщо рядок ≤ 255 символів → використовується 1 байт для зберігання довжини.
- Якщо рядок > 255 символів → використовується 2 байти для зберігання довжини.
| Параметр | CHAR(N) | VARCHAR(N) |
| Довжина | Фіксована | Змінна |
| Додатковий простір | Доповнюється пробілами | Займає рівно стільки місця, скільки потрібно + 1-2 байти на зберігання довжини |
| Продуктивність | Швидше для однакових розмірів | Ефективніше для коротших рядків |
Типи TEXT у MySQL
У MySQL існує чотири типи TEXT, що відрізняються максимальною довжиною.
| Тип | Макс. розмір | Використання |
| TINYTEXT | 255 байтів (~255 символів) | Короткі нотатки, теги, заголовки |
| TEXT | 65,535 байтів (~65,535 символів) | Опис товару, статті, коментарі |
| MEDIUMTEXT | 16,777,215 байтів (~16 млн символів) | Великі документи, книги |
| LONGTEXT | 4,294,967,295 байтів (~4 ГБ тексту) | Дуже великі тексти (енциклопедії, архіви) |
TINYTEXT
| TINYTEXT – це один із текстових типів, призначений для зберігання коротких текстових значень. | |
| Максимальна довжина | до 255 байтів (~255 символів у кодуванні ASCII, менше в UTF-8). |
| Змінна довжина | зберігає рівно стільки символів, скільки потрібно. |
| Економить місце | використовується для дуже коротких текстів. |
| Не підтримує значення за замовчуванням | не можна встановити DEFAULT. |
| Не можна повністю індексувати | індексуються тільки перші N символів. |
Приклад створення таблиці і введення даних з використання цього типу:
CREATE TABLE messages (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
short_message TINYTEXT NOT NULL
);
INSERT INTO messages (username, short_message)
VALUES
('Alice', 'Hello, khuylo is dead!'),
('Willie', 'Great news. Thank you!');
Коли використовувати TINYTEXT?
- Якщо потрібно зберігати короткі текстові фрагменти (наприклад, теги, заголовки, нотатки).
- Якщо розмір тексту змінний, але не перевищує 255 символів.
Якщо потрібно ефективно індексувати дані, краще використовувати VARCHAR.
TEXT
| TEXT використовується для зберігання великих текстових блоків. Це гарний вибір для збереження описів, коментарів або будь-яких довгих текстових значень. | |
| Максимальна довжина | 65,535 байтів (~65,535 символів) |
| Змінна довжина | зберігає рівно стільки символів, скільки потрібно. |
| Індексація | Не можна індексувати повністю – індекси працюють тільки з початковою частиною рядка (наприклад, перші 255 символів). |
| Значення за замовчуванням | Не підтримує значення за замовчуванням – на відміну від VARCHAR. |
Приклад створення таблиці і введення даних з використання цього типу:
CREATE TABLE articles (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
short_description TINYTEXT
);
INSERT INTO articles (title, content, short_description)
VALUES
('MySQL Guide', 'This is a long text about MySQL...', 'A short MySQL tutorial');
Коли використовувати TEXT?
- Коли потрібно зберігати великі обсяги тексту (наприклад, статті, коментарі, логи).
- Коли не потрібно використовувати частий пошук за індексами.
Якщо значення не дуже довгі, краще використовувати VARCHAR, оскільки він швидший і підтримує індекси.
MEDIUMTEXT
| MEDIUMTEXT – це один із текстових типів, призначений для зберігання дуже великих текстових даних. | |
| Максимальна довжина | 16,777,215 байтів (~16 мільйонів символів у кодуванні ASCII, менше в UTF-8). |
| Змінна довжина | зберігає рівно стільки символів, скільки потрібно. |
| Зберігання довжини рядка | Використовує 3 байти для зберігання довжини рядка. |
| Індексація | обмежена – можна індексувати тільки перші N символів. |
| Значення за замовчуванням | Не підтримує значення за замовчуванням – на відміну від VARCHAR. |
Приклад створення таблиці і введення даних з використання цього типу:
CREATE TABLE articles_medium (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
content MEDIUMTEXT NOT NULL
);
INSERT INTO articles (title, content)
VALUES
('MySQL Introduction', 'This is a very long article about MySQL ...'),
('Big Data Analysis', 'This article explores big data techniques...');
LONGTEXT
| LONGTEXT – це найбільший із підтипів TEXT, який використовується для зберігання гігантських текстових даних. | |
| Максимальна довжина | Максимальна довжина – 4,294,967,295 байтів (~4 ГБ, до 4 мільярдів символів). |
| Змінна довжина | зберігає рівно стільки символів, скільки потрібно. |
| Зберігання довжини рядка | Використовує 4 байти для зберігання довжини рядка. |
| Індексація | обмежена – можна індексувати тільки перші N символів. |
| Значення за замовчуванням | Не підтримує значення за замовчуванням – на відміну від VARCHAR. |
Приклад створення таблиці і введення даних з використання цього типу:
CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
full_text LONGTEXT NOT NULL
);
INSERT INTO books (title, full_text)
VALUES
('MySQL Handbook', 'This is the full text of the book...'),
('Big Data Handbook', 'This book contains a detailed guide on big data...');
Порівняння типів TEXT
| Параметр | TINYTEXT | TEXT | MEDIUMTEXT | LONGTEXT |
| Макс. довжина | до 255 байтів (~255 символів) | 65,535 символів (~64 КБ) | 16,777,215 символів (~16 МБ) | 4,294,967,295 символів (~4 ГБ) |
| Використання байтів для довжини | 1 байт | 2 байти | 3 байти | 4 байти |
| Типові випадки використання | Теги, заголовки, нотатки | Опис товару, коментарі | Статті, книги, великі JSON-дані | Архіви, енциклопедії, лог-файли |
Для кращої візуалізації є відео:
В цьому відео поговоримо про:
00:00 Текстові типи
00:31 CHAR
03:48 VARCHAR
08:28 Типи TEXT у MySQL
09:06 TINYTEXT
12:08 TEXT
15:29 MEDIUMTEXT
17:44 LONGTEXT
19:37 Підсумки за типами TEXT

