MySQL типи даних


При визначенні стовпців таблиці для них необхідно вказати тип даних. Кожен стовпець повинен мати тип даних. Тип даних визначає, які значення можуть зберігатися в стовпці, скільки вони будуть займати місця в пам'яті.

MySQL надає наступні типи даних, які можна розбити на ряд груп.


Символьні типи

  • CHAR : представляє строку фіксованої довжини.

    Довжина збереженого рядка вказується в дужках, наприклад, CHAR(10) - рядок з десяти символів. І якщо в таблицю в даний стовпець зберігається рядок з 6 символів (тобто менше встановленої довжини в 10 символів), то рядок доповнюється 4 пробілами і в підсумку все одно буде займати 10 символів.

  • VARCHAR : представляє строку змінної довжини.

    Довжина збереженого рядка вказується в дужках, наприклад, VARCHAR(10) . Однак на відміну від CHAR збережений рядок буде займати саме стільки місця, скільки необхідно. Наприклад, якщо визначено довжини в 10 символів, але в стовпець зберігається рядок в 6 символів, то збережений рядок так і буде займати 6 символів плюс додатковий байт, який зберігає довжину рядка.

Починаючи з MySQL 5.6 типи CHAR і VARCHAR за замовчуванням використовують кодування UTF-8, яке дозволяє використовувати до 3 байт для зберігання символу в залежності від мови (для багатьох європейських мов по 1 байту на символ, для ряду східно-європейських і близькосхідних - 2 байта , а для китайського, яполнского, корейського - по 3 байта на символ).

Ряд додаткових типів даних представляють текст невизначеної довжини:

  • TINYTEXT : представляє текст довжиною до 255 байт.

  • TEXT : представляє текст довжиною до 65 КБ.

  • MEDIUMTEXT : представляє текст довжиною до 16 МБ

  • LARGETEXT : представляє текст довжиною до 4 ГБ


Числові типи

  • TINYINT : представляє цілі числа від -127 до 128, займає 1 байт

  • BOOL : фактично не представляє окремий тип, а є лише псевдонімом для типу TINYINT(1) і може зберігати два значення 0 і 1. Однак даний тип може також в якості значення приймати вбудовані константи TRUE (представляє число 1) і FALSE (надає число 0 ).

    Також має псевдонім BOOLEAN.

  • TINYINT UNSIGNED : представляє цілі числа від 0 до 255, займає 1 байт

  • SMALLINT : представляє цілі числа від -32768 до 32767, займає 2 байтa

  • SMALLINT UNSIGNED : представляє цілі числа від 0 до 65535, займає 2 байтa

  • MEDIUMINT : представляє цілі числа від -8388608 до 8388607, займає 3 байти

  • MEDIUMINT UNSIGNED : представляє цілі числа від 0 до 16777215, займає 3 байти

  • INT : представляє цілі числа від -2147483648 до 2147483647, займає 4 байта

  • INT UNSIGNED : представляє цілі числа від 0 до 4294967295, займає 4 байта

  • BIGINT : представляє цілі числа від -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, займає 8 байт

  • BIGINT UNSIGNED : представляє цілі числа від 0 до 18 446 744 073 709 551 615, займає 8 байт

  • DECIMAL : зберігає числа з фіксованою точністю. Даний тип може приймати два параметри precision і scale : DECIMAL(precision, scale) .

    Параметр precision представляє максимальну кількість цифр, які може зберігати число. Це значення повинно знаходитися в діапазоні від 1 до 65.

    Параметр scale представляє максимальну кількість цифр, які може містити число після коми. Це значення повинно знаходитися в діапазоні від 0 до значення параметра precision. За замовчуванням воно дорівнює 0.

    Наприклад, у визначенні у наступній колонці:

  • salary DECIMAL(5,2)
  • Число 5 - precision , а число 2 - scale , тому даний стовпець може зберігати значення з діапазону від -999.99 до 999.99.

    Розмір даних в байтах для DECIMAL залежить від значення, що зберігається.

    Даний тип також має псевдоніми NUMERIC , DEC , FIXED .

  • FLOAT : зберігає дробові числа з плаваючою точкою одинарної точності від -3.4028 * 10 38 до 3.4028 * 10 38, займає 4 байта

    Може приймати форму FLOAT(M,D) , де M - загальна кількість цифр, а D - кількість цифр після коми.

  • DOUBLE : зберігає дробові числа з плаваючою точкою подвійної точності від -1.7976 * 10 308 до 1.7976 * 10 308, займає 8 байт. Також може приймати форму DOUBLE(M,D) , де M - загальна кількість цифр, а D - кількість цифр після коми.
  • Даний тип також має псевдоніми REAL і DOUBLE PRECISION , які можна використовувати замість DOUBLE .

Типи для роботи з датою і часом

  • DATE : зберігає дати з 1 січня 1000 року до 31 деабря 9999 роки (c "1000-01-01" до "9999-12-31"). За замовчуванням для зберігання використовується формат yyyy-mm-dd. Займає 3 байта.

  • TIME : зберігає час від -838: 59: 59 до 838: 59: 59. За замовчуванням для зберігання часу застосовується формат "hh: mm: ss". Займає 3 байта.

  • DATETIME : об'єднує час і дату, діапазон дат і часу - з 1 січня 1000 року по 31 грудня 9999 року (з "1000-01-01 00:00:00" до "9999-12-31 23:59:59") . Для зберігання за замовчуванням використовується формат "yyyy-mm-dd hh: mm: ss". Займає 8 байт

  • TIMESTAMP : також зберігає дату і час, але в іншому діапазоні: від "1970-01-01 00:00:01" UTC до "2038-01-19 3:14:07" UTC. Займає 4 байти

  • YEAR : зберігає рік у вигляді 4 цифр. Діапазон доступних значень від 1901 до 2155. Займає 1 байт.

Тип Date може приймати дати в різних форматах, однак безпосередньо для зберігання в самій бд дати наводяться до формату "yyyy-mm-dd". Деякі з прийнятих форматів:

  • yyyy-mm-dd - 2019-05-25

  • yyyy-m-dd - 2019-5-25

  • yy-m-dd - 19-05-25

В такому форматі двозначні числа від 00 до 69 сприймаються як дати в діапазоні 2000-2069. А числа від 70 до 99 як діапазон чисел 1970 - тисячі дев'ятсот дев'яносто дев'ять.

  • yyyymmdd - 20190525

  • yyyy.mm.dd - 2019.05.25

Для часу тип Time використовує 24-годинний формат. Він може приймати час в різних форматах:

  • hh:mi - 3:21 (збережене значення 03:21:00 )

  • hh:mi:ss - 19:21:34

  • hhmiss - 192134

Приклади значень для типів DATETIME і TIMESTAMP :

  • 2019-05-25 19:21:34
  • 2019-05-25 (збережене значення 2018-05-25 00:00:00 )

Складові типи

  • ENUM : зберігає одне значення зі списку допустимих значень. Займає 1-2 байта

  • SET : може зберігати кілька значень (до 64 значень) з деякого списку допустимих значень. Займає 1-8 байт.

Бінарні типи

  • TINYBLOB : зберігає бінарні дані у вигляді рядка довжиною до 255 байт.

  • BLOB : зберігає бінарні дані у вигляді рядка довжиною до 65 КБ.

  • MEDIUMBLOB : зберігає бінарні дані у вигляді рядка довжиною до 16 МБ

  • LARGEBLOB : зберігає бінарні дані у вигляді рядка довжиною до 4 ГБ


Наш партнер:
beta test mp3 playlist downloader