Типи даних дати і часу

У MySQL є кілька типів даних, які використовуються для зберігання дати та часу.
DATEЗберігає лише дату (рік, місяць, день).
DATETIMEЗберігає дату і час (рік, місяць, день, години, хвилини, секунди).
TIMESTAMPТакож зберігає дату і час, має прив’язку до часового поясу сервера.
TIMEЗберігає лише час (години, хвилини, секунди).
YEARЗберігає лише рік (у форматі 4 цифри).

DATE

DATE у MySQL — це тип для зберігання днів, місяців і років без інформації про час.
Формат зберігання‘YYYY-MM-DD’
Діапазон значеньвід ‘1000-01-01’ до ‘9999-12-31’
Розмір в пам’яті3 байти
Особливості•Якщо ви введете неправильний формат дати (наприклад, ‘2025-13-49’), MySQL зазвичай згенерує NULL або ‘0000-00-00’ залежно від режиму (sql_mode). •DATE не враховує часові пояси — просто зберігає дату як є.

Приклад запиту з використанням цього типу:

CREATE TABLE holidays (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    holiday_date DATE NOT NULL
);
INSERT INTO holidays (name, holiday_date)
VALUES 
    ('New Year', '2025-01-01'),
    ('Christmas', '2025-12-25'),
    ('Easter', '2025-04-20'),
    ('Ukrainian Independence Day', '2025-08-24');
SELECT * FROM holidays;

DATETIME

Тип DATETIME у MySQL — це один із типів для зберігання дати та часу разом. Цей тип добре підходить для моментів на часовій шкалі: створення запису, початок події, дедлайни тощо.
Формат зберігання‘YYYY-MM-DD HH:MM:SS’
Діапазон значеньвід ‘1000-01-01 00:00:00’ до ‘9999-12-31 23:59:59’
Розмір в пам’яті•8 байтів (без точності до мікросекунд) •До 12 байтів (якщо використовується DATETIME(fsp), де fsp — кількість знаків мікросекунд, від 0 до 6)
Особливості•Не залежить від часового поясу, на відміну від TIMESTAMP. •Не змінюється автоматично при зміні часової зони сервера. •Добре підходить для бізнес-логіки, де важливо зберігати саме те, що було введено

Приклад запиту з використанням цього типу:

CREATE TABLE meetings (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100) NOT NULL,
    start_time DATETIME NOT NULL
);
INSERT INTO meetings (title, start_time)
VALUES 
    ('Team Meeting', '2025-04-29 09:00:00'),
    ('Meeting with Client', '2025-04-29 14:30:00');

TIMESTAMP

Тип TIMESTAMP у MySQL дуже схожий на DATETIME, але має кілька важливих особливостей, які роблять його унікальним і корисним у певних випадках — особливо для відстеження часу змін або логування.
Формат зберігання‘YYYY-MM-DD HH:MM:SS’
Діапазон значень•Від ‘1970-01-01 00:00:01 UTC’ •До ‘2038-01-19 03:14:07 UTC’ (через обмеження UNIX-часу)
Розмір в пам’яті•4 байти (без мікросекунд) •до 7 байтів (з мікросекундами)
Особливості•Залежить від часового поясу (конвертується в UTC) •Може бути автооновлюваним (DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)

Приклад запиту з використанням цього типу:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) not null,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO users (username) VALUES ('Jenny');
SELECT * FROM users;

TIME

Тип TIME у MySQL використовується для зберігання часу доби або тривалості. Добре підходить, якщо потрібно фіксувати години, хвилини та секунди — без дати.
Формат зберігання‘HH:MM:SS’
Діапазон значень•Від ‘-838:59:59’ до ‘838:59:59’ (тобто може зберігати не тільки час доби, а й тривалість, навіть підтримує негативні значення)
Розмір в пам’яті•3 байти (без мікросекунд) •до 6 байтів (якщо зберігати мікросекунди, як TIME(6)
Особливості•Підтримує негативні значення •Може використовуватися для тривалості перегляду, робочого часу, затримок, таймерів тощо. •Якщо вказати час у вигляді лише HH:MM, він автоматично буде доповнений до HH:MM:00.

Приклад запиту з використанням цього типу:

CREATE TABLE shiftstime (
    id INT AUTO_INCREMENT PRIMARY KEY,
    employee_name VARCHAR(100) not null,
    start_time TIME NOT NULL,
    end_time TIME NOT NULL
);
INSERT INTO shiftstime (employee_name, start_time, end_time)
VALUES 
    ('Jenny', '09:00:00', '17:30:00'),
    ('Penny', '14:00:00', '22:00:00');

YEAR

Тип YEAR у MySQL — це спеціалізований тип даних для зберігання року. Він добре підходить для випадків, коли потрібно фіксувати тільки рік, наприклад: рік випуску авто, рік народження, рік початку навчання тощо.
Формат зберігання‘YYYY’ (4 цифри)
Діапазон значень•від 1901 до 2155 (а також ‘0000’ — для невідомого року, якщо дозволено)
Розмір в пам’яті•1 байт
Особливості•Зберігає лише рік, без місяців чи днів

Приклад запиту з використанням цього типу:

CREATE TABLE cars (
    id INT AUTO_INCREMENT PRIMARY KEY,
    model VARCHAR(100) not null,
    production_year YEAR not null
);
INSERT INTO cars (model, production_year)
VALUES 
    ('Toyota Corolla', 2020),
    ('Ford Mustang', 2015),
    ('Dodge Charger', 2020);

Для додаткової візуалізації є відео:

В цьому відео поговоримо про:
00:00 Типи даних дати і часу
00:31 DATE
04:11 DATETIME
07:16 TIMESTAMP
12:17 TIME
15:00 YEAR

Текстові (рядкові) типи даних

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

ТипМакс. розмірВикористання
TINYTEXT255 байтів (~255 символів)Короткі нотатки, теги, заголовки
TEXT65,535 байтів (~65,535 символів)Опис товару, статті, коментарі
MEDIUMTEXT16,777,215 байтів (~16 млн символів)Великі документи, книги
LONGTEXT4,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

ПараметрTINYTEXTTEXTMEDIUMTEXTLONGTEXT
Макс. довжинадо 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

Числові типи даних

INT (або INTEGER) — ціле число.
TINYINT — дуже мале ціле число.
SMALLINT — мале ціле число.
MEDIUMINT — середнє ціле число.
BIGINT — велике ціле число.
DECIMAL (або NUMERIC) — точне число з фіксованою кількістю десяткових знаків.
FLOAT — число з плаваючою комою
DOUBLE — число з плаваючою комою (подвійна точність).

INT

Тип даних INT (або INTEGER) в MySQL використовується для зберігання цілих чисел. Це один з найбільш поширених типів даних для числових значень у базах даних, його часто використовують для зберігання числових ідентифікаторів, віку, кількості та інших цілих значень.
РозмірТип INT займає 4 байти пам’яті.
Діапазон значеньДля знакових цілих чисел (за умовчанням): Мінімум: -2,147,483,648 Максимум: 2,147,483,647
Для незнакових цілих чисел (якщо вказано UNSIGNED): Мінімум: 0 Максимум: 4,294,967,295
AUTO_INCREMENTМоже бути використано разом з INT для автоматичного збільшення значення при кожному додаванні нового запису в таблицю (зазвичай для первинних ключів).
CREATE TABLE intExample (
    id INT NOT NULL AUTO_INCREMENT,
    age INT UNSIGNED,
    PRIMARY KEY (id)
);

TINYINT

Тип даних TINYINT в MySQL також використовується для зберігання цілих чисел, який займає всього 1 байт пам’яті. Це дозволяє йому зберігати значення з меншим діапазоном, ніж INT, що робить TINYINT більш економним у використанні пам’яті для чисел, які не потребують великого діапазону. Він зазвичай використовується в ситуаціях, коли потрібно зберігати значення, що не виходять за межі маленького діапазону, що дозволяє заощаджувати пам’ять у великих базах даних. Наприклад: статуси (наприклад, 0 — неактивний, 1 — активний), оцінки, кількість предметів тощо.
Розмір1 байт (8 біт).
Діапазон значеньДля знакових цілих чисел (за умовчанням): Мінімум: -128 Максимум: 127
Для незнакових цілих чисел (якщо вказано UNSIGNED): Мінімум: 0 Максимум: 255
CREATE TABLE tinyintExample (
    id TINYINT NOT NULL AUTO_INCREMENT,
    rating TINYINT UNSIGNED,
    PRIMARY KEY (id)
);

SMALLINT

Тип даних SMALLINT в MySQL — це ще один тип даних для збереження цілих чисел, який займає 2 байти пам’яті. Він дозволяє зберігати числа, які більші, ніж у TINYINT, але менші, ніж у INT. Це ідеальний варіант для ситуацій, коли потрібен більший діапазон чисел, але все ще не потрібно використовувати тип INT, який займає більше пам’яті. Наприклад може застосовуватися для: кількості елементів, коли значення не перевищують кілька десятків тисяч, ідентифікаторів, які мають помірний діапазон тощо.
Розмір2 байти (16 біт).
Діапазон значеньДля знакових цілих чисел (за умовчанням): Мінімум: -32,768 Максимум: 32,767
Для незнакових цілих чисел (якщо вказано UNSIGNED): Мінімум: 0 Максимум: 65,535
CREATE TABLE smallintExample (
    id SMALLINT NOT NULL AUTO_INCREMENT,
    quantity SMALLINT UNSIGNED,
    PRIMARY KEY (id)
);

MEDIUMINT

Тип даних MEDIUMINT в MySQL використовується для зберігання цілих чисел середнього діапазону, займаючи 3 байти пам’яті. Це тип, який дозволяє зберігати числа, більші, ніж SMALLINT, але менші, ніж INT. Зазвичай використовується для: ідентифікаторів або порядкових номерів, де діапазон може сягати до кількох мільйонів, кількості одиниць, які можуть бути досить великими, але не потребують INT.
Розмір3 байти (24 біти).
Діапазон значеньДля знакових цілих чисел (за умовчанням): Мінімум: -8,388,608 Максимум: 8,388,607
Для незнакових цілих чисел (якщо вказано UNSIGNED): Мінімум: 0 Максимум: 16,777,215
CREATE TABLE mediumintExample (
    id MEDIUMINT NOT NULL AUTO_INCREMENT,
    quantity MEDIUMINT UNSIGNED,
    PRIMARY KEY (id)
);

BIGINT

Тип даних BIGINT в MySQL використовується для зберігання цілих чисел великого діапазону. Він займає 8 байт пам’яті і дозволяє зберігати значення, які набагато перевищують можливості стандартного INT. Це корисно для ситуацій, де потрібно працювати з дуже великими числами, наприклад, для ідентифікаторів у великих системах, великих сумах, або у випадках, коли потрібно зберігати великі значення, які не поміщаються в INT.
Розмір8 байт (64 біти).
Діапазон значеньДля знакових цілих чисел (за умовчанням): Мінімум: -9,223,372,036,854,775,808 Максимум: 9,223,372,036,854,775,807
Для незнакових цілих чисел (якщо вказано UNSIGNED): Мінімум: 0 Максимум: 18,446,744,073,709,551,615
CREATE TABLE bigintExample (
    id BIGINT NOT NULL AUTO_INCREMENT,
    quantity BIGINT UNSIGNED,
    PRIMARY KEY (id)
);

DECIMAL (або NUMERIC)

Тип даних DECIMAL в MySQL використовується для зберігання чисел з фіксованою точністю, тобто чисел, які містять дробову частину. Цей тип особливо корисний для точних обчислень, таких як фінансові операції, де важливо зберігати точність чисел, особливо після десяткової коми, і уникати проблем з округленням, які можуть виникнути при використанні типів FLOAT чи DOUBLE.
РозмірDECIMAL(M, D): M — це загальна кількість цифр (точність), яку число може мати (як перед, так і після десяткової коми). D — це кількість цифр після десяткової коми (масштаб). Може бути від 1 до 65 для M та від 0 до 30 для D.
ПрикладDECIMAL(5, 2): Загальна точність — 5 цифр, з яких 2 цифри після десяткової коми. Таким чином, максимальне значення для цього типу буде 999.99.

Значення для decimal стовбчиків зберігаються у бінарному форматі, який розміщує 9 цифр у 4 байтах пам’яті.

Вимоги для зберігання для цілої та дробової часток кожного значення визначаються окремо.

Кожна група з дев’яти цифр потребує 4 байтів, і будь які цифри, що залишаються потребують певної частки з чотирьох байтів.

Цифри, що лишаютьсяБайти
00
1-21
3-42
5-63
7-94

Наприклад, decimal(18, 9).

123456789.123456789Значення такого числа потребуватиме по 9 цифр з обох боків десяткової коми, тобто кожна частина числа (і ціла, і дробова) портебуватиме по 4 байти пам’яті. Себто загальний розмір 8 байтів.

Наприклад, decimal(20, 6).

12345678912345.123456

Ціла частина має 14 цифр і потребуватиме 4 байти на 9 цифр плюс додаткові 3 байти на 5 цифр цілої частки, що залишаються. Себто на цілу частину треба 7 байтів. 6 цифр дробової частки потребують 3 байти пам’яті. Себто загальний розмір буде 10 байтів.

Також можна зустріти і формули для розрахунку розміру decimal.

Наприклад, Decimal Size = (M+1)/2

Таким чином, для decimal(20, 6) за цією формулою ромір буде дорівнювати (20+1)/2, що дає 10.5, які слід округлити в більшу сторону себто буде 11 байтів. І вже на цьому етапі бачимо різницю в 1 байт з офіційним підходом MySQL.

Ще одна формула, яку також можна зустріти на форумах та у блогах виглядає наступним чином:

Decimal Size = 1 + floor((M-D)/2) + floor(D/2)

Таким чином, для decimal(20, 6) за цією формулою:

1 + floor((20-6)/2) + floor(6/2) = 1 +7 + 3 = 11

Себто теж маємо різницю в 1 байт.

Тому слід пам’ятати, що формули – це своєрідні абстракції для швидкого підрахунку розміру елементу типу decimal і вони можуть давати розходження з офіційним підходом визначення розміру на основі документації MySQL.

CREATE TABLE decimalExample (
    id INT NOT NULL AUTO_INCREMENT,
    amount DECIMAL(10, 2),
    PRIMARY KEY (id)
);

FLOAT

Тип даних FLOAT в MySQL використовується для зберігання чисел з плаваючою комою, тобто чисел, що можуть мати десяткову частину, але з обмеженою точністю. Це дозволяє ефективно працювати з великими або малими числами, де не обов’язкова абсолютна точність після десяткової коми, і може бути прийнятне округлення. FLOAT не зберігає всі значення з ідеальною точністю і може втратити точність при обчисленнях, якщо числа надто великі або мають велику кількість знаків після десяткової коми. Для кращої точності можна використовувати тип DOUBLE або DECIMAL (для фінансових обчислень, де точність критична).
Розмір4 байти пам’яті (32 біти).
Діапазон значеньFLOAT може зберігати значення від приблизно −3.402823466×1038 до 3.402823466×1038 з точністю до 7 знаків після десяткової коми.
CREATE TABLE floatExample (
    id INT NOT NULL AUTO_INCREMENT,
    weightParam FLOAT,
    lengthParam FLOAT,
    PRIMARY KEY (id)
);

DOUBLE

Тип даних DOUBLE в MySQL використовується для зберігання чисел з плаваючою комою, подібно до FLOAT, але з більшою точністю. Тип DOUBLE займає 8 байтів пам’яті (64 біти) і дозволяє зберігати більш точні значення, зберігаючи більшу кількість знаків після десяткової коми, що робить його підходящим для обчислень, де потрібна висока точність. DOUBLE має точність до 15-16 знаків після десяткової коми. Це дозволяє здійснювати точніші обчислення, ніж FLOAT, і уникати помилок округлення, які можуть виникати в разі використання типу FLOAT.
Розмір8 байтів (64 біти).
Діапазон значеньDOUBLE може зберігати числа в діапазоні від приблизно −1.7976931348623157×10308 до 1.7976931348623157×10308
CREATE TABLE doubleExample (
    id INT NOT NULL AUTO_INCREMENT,
    lengthParam DOUBLE,
    widthParam DOUBLE,
    PRIMARY KEY (id)
);

Для кращої візуалізації за потреби є відео.

В цьому відео поговоримо про:
00:00 Числові типи даних
00:49 INT
04:20 TINYINT
06:33 SMALLINT
09:32 MEDIUMINT
11:31 BIGINT
15:49 DECIMAL (або NUMERIC)
31:23 FLOAT
33:40 DOUBLE