Ці типи використовуються для зберігання текстової інформації. | |
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