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 байтів, і будь які цифри, що залишаються потребують певної частки з чотирьох байтів.
Цифри, що лишаються | Байти |
0 | 0 |
1-2 | 1 |
3-4 | 2 |
5-6 | 3 |
7-9 | 4 |
Наприклад, 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