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

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

Створення та видалення таблиць

Для створення таблиці використовується команда CREATE TABLE. Синтаксис цієї команди такий:

CREATE TABLE <назва_таблиці> (
<назва_стовпця1> <тип_даних1> <додаткові_параметри>,
<назва_стовпця2> <тип_даних2> <додаткові_параметри>,
    ...
);

Приклад:

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
clientName VARCHAR(75) NOT NULL,
email VARCHAR(75) UNIQUE
);
Create table

Популярні параметри, які можуть використовуватися з командою створення таблиць:

  • NOT NULL — вказує, що стовбець не може бути порожнім.
  • DEFAULT — встановлює значення за помовчанням.
  • AUTO_INCREMENT — автоматично збільшує значення для числового стовпця, зазвичай використовується для первинних ключів.
  • PRIMARY KEY — визначає стовбець як первинний ключ. UNIQUE — гарантує унікальність значень у стовбчику.

Перегляд існуючих таблиць

Щоб побачити список всіх таблиць у поточній базі даних, використовуйте команду:

SHOW TABLES;
show tables

Це виведе всі таблиці, що знаходяться в поточній базі даних.

Видалення таблиці в MySQL

Для видалення таблиці використовується команда DROP TABLE. Синтаксис такий:

DROP TABLE <назва_таблиці>;

Ця команда видалить таблицю разом з усіма її даними. Будьте обережні, оскільки ця операція незворотна.

Щоб уникнути помилки, якщо таблиця не існує, можна використати команду DROP TABLE IF EXISTS:

DROP TABLE IF EXISTS users;

Ця команда видалить таблицю users, якщо вона існує, і не викличе помилки, якщо її нема.

В цьому відео поговоримо про:
00:00 Команда create table
01:31 Параметри при створенні таблиці
05:24 Команда show tables
06:04 Команда drop table

Створення та видалення бази даних у MySQL

Для створення нової бази даних використовується команда CREATE DATABASE. Синтаксис виглядає так:

CREATE DATABASE <назва_бази_даних>;

Параметр Character Set

Визначення набору символів (Character Set): Якщо ви хочете задати конкретний набір символів (наприклад, UTF-8 для підтримки багатомовності), можна вказати параметр CHARACTER SET.

CREATE DATABASE newDatabase CHARACTER SET utf8;

Параметр COLLATE

Визначення сортування (Collation): Якщо ви хочете задати конкретне сортування для бази даних (наприклад, для підтримки чутливості до регістру), можна вказати параметр COLLATE.

CREATE DATABASE newDatabase1 CHARACTER SET utf8 COLLATE utf8_general_ci;

Перевірка наявності бази даних

Якщо ви хочете перевірити, чи існує вже база даних з такою назвою, можна використати команду SHOW DATABASES; , щоб побачити список усіх баз даних на сервері.

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

CREATE DATABASE IF NOT EXISTS newDatabase;

Видалення бази даних

Команда DROP DATABASE в MySQL використовується для видалення бази даних разом з усіма її таблицями та даними. Після виконання цієї команди дані не можуть бути відновлені, тому слід бути дуже обережним при її використанні.

Синтаксис команди:

DROP DATABASE <назва_бази_даних>;

Якщо ви хочете видалити базу даних з назвою newDatabase, використовуйте таку команду:

DROP DATABASE newDatabase;

Це повністю видалить базу даних newDatabase, усі її таблиці та дані.

Параметр IF EXISTS

IF EXISTS: Для уникнення помилки, якщо база даних, яку ви хочете видалити, не існує, можна використовувати ключове слово IF EXISTS. У такому випадку MySQL не буде генерувати помилку, якщо база даних не знайдена.

DROP DATABASE IF EXISTS newDatabase;

Це дозволяє безпечно видаляти базу даних, навіть якщо її може не бути на сервері.

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

В цьому відео поговоримо про:
00:00 Команда create database
00:57 Параметр character set
02:57 Параметр collate
06:18 Перевірка наявності бази даних
08:21 Видалення бази даних
10:07 drop database if exists