Основни типове данни в MySQL

Помощен център

Основни типове данни в MySQL

MySQL поддържа няколко SQL типа данни в няколко категории: цифрови, дата и час, низ (текст), пространствени (spatial) и JSON.

Описанията на типа данни използват тези конвенции:

  • M - показва максималната ширина на дисплея за типовете цели числа. За типовете с плаваща запетая и фиксирана точка M е общият брой цифри, които могат да се съхраняват. За низове, M е максималната дължина. Максималната допустима стойност на M зависи от типа данни.
  • D - се отнася за типове с плаваща запетая и за фиксирана точка и показва броя на цифрите след десетичната запетая.
  • fsp (fractional seconds precision) - се отнася за типовете TIME, DATETIME и TIMESTAMP и представлява броя на цифрите след десетичната запетая за части от секунди. Стойността на fsp, ако е зададена, трябва да бъде в диапазона от 0 до 6.
  • Квадратните скоби [and] показват незадължителни части от типовите дефиниции.

Цифрови типове данни

MySQL поддържа всички стандартни SQL цифрови типове данни. Тези типове включват точните цифрови типове данни (INTEGER, SMALLINT, DECIMAL и NUMERIC), както и приблизителните цифрови типове данни (FLOAT, REAL и DOUBLE PRECISION). Ключовата дума INT е синоним на INTEGER, а ключовите думи DEC и FIXED са синоними за DECIMAL.

Тип данниОписание
TINYINT (големина)съдържа стойности в интервал от -128 до 127, 0 до 255 UNSIGNED*. Максималният брой цифри може да бъде посочен в скоби.
SMALLINT (големина)съдържа стойности в интервал от -32768 до 32767, 0 до 65535 UNSIGNED. Максималният брой цифри може да бъде посочен в скоби.
MEDIUMINT (големина)съдържа стойности в интервал от -8388608 до 8388607, 0 до 16777215 UNSIGNED. Максималният брой цифри може да бъде посочен в скоби
INT (големина)съдържа стойности в интервал от -2147483648 до 2147483647, 0 до 4294967295 UNSIGNED. Максималният брой цифри може да бъде посочен в скоби.
BIGINT (големина)съдържа стойности в интервал от -9223372036854775808 до 9223372036854775807, 0 до 18446744073709551615 UNSIGNED. Максималният брой цифри може да бъде посочен в скоби.
FLOAT (големина, d)Малък номер с плаваща десетична запетая. Максималният брой цифри може да бъде посочен в параметъра за големина. Максималният брой цифри вдясно от десетичната запетая се определя в параметъра d.
DOUBLE (големина, d)Голям номер с плаваща десетична запетая. Максималният брой цифри може да бъде посочен в параметъра за големина. Максималният брой цифри вдясно от десетичната запетая се определя в параметъра d.
DECIMAL (големина, d)ДВОЙНА, съхранена като низ, позволяваща фиксиран десетичен знак. Максималният брой цифри може да бъде посочен в параметъра за големина. Максималният брой цифри вдясно от десетичната запетая се определя в параметъра d.

Всички цифрови типове данни могат да имат незадължителен атрибут UNSIGNED. UNSIGNED се използва за разрешаване само на неотрицателни числа в колона или когато имате нужда от по-голяма положителна стойност за колоната.

Tипове данни за дата и час

Тип данниОписание
DATE()Дата във формат: ГГГГ-ММ-ДД, поддържан диапазон от "1000-01-01" до "9999-12-31"
DATETIME()Комбинация от дата и час във формат: ГГГГ-ММ-ДД HH: MI: SS, поддържаният диапазон от "1000-01-01 00:00:00" до "9999-12-31 23:59:59"
TIMESTAMP()Стойностите на TIMESTAMP се съхраняват като брой секунди от епохата Unix ('1970-01-01 00:00:00' UTC). Формат: ГГГГ-ММ-ДД HH: MI: SS, поддържан диапазон от '1970-01-01 00:00:01' UTC до '2038-01-09 03:14:07' UTC
TIME()Време във формат: HH: MI: SS, поддържан обхват от "-838: 59: 59" до "838: 59: 59"
YEAR()Година в двуцифрен или четирицифрен формат. Разрешени стойности в четирицифрен формат: 1901 до 2155. Допустими стойности в двуцифрен формат: от 70 до 69, представляващи години от 1970г. до 2069г.

Бележка: Типът данни YEAR(2) е deprecated и поддръжката за него е премахната в MySQL 5.7.5.

Колоните TIMESTAMP и DATETIME могат автоматично да бъдат инициализирани и актуализирани до текущата дата и час (т.е. текущото време).

Текстови типове данни

Типовете текстови данни (низ, string) са CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM и SET.

Тип данниОписание
CHAR (големина)Съхранява низ с фиксирана дължина (може да съдържа букви, цифри и специални знаци). Фиксираният размер е посочен в скоби. Може да съхранява до 255 знака.
VARCHAR (големина)Съхранява низ с променлива дължина (може да съдържа букви, цифри и специални знаци). Максималният размер е посочен в скоби. Може да съхранява до 255 знака. Забележка: Ако поставите стойност по-голяма от 255, тя ще бъде преобразувана в тип TEXT.
TINYTEXTСъдържа стринг с максимална дължина от 255 знака/символа.
TEXTСъдържа стринг с максимална дължина от 65,535 знака/символа.
BLOBBinary Large OBjects - съхранява до 65 535 байта данни.
MEDIUMTEXTЗадържа низ с максимална дължина 16 777 215 знака.
MEDIUMBLOBBinary Large OBjects - съхранява до 16 777 215 байта данни.
LONGTEXTЗадържа низ с максимална дължина от 4,294,967,295 знака.
LONGBLOBBinary Large OBjects - съхранява до 4 294 967 295 байта данни.
ENUM (x, y, z)Позволява въвеждане на списък с възможни стойности (до 65535). Ако се вмъкне стойност, която не е в списъка, ще бъде добавена празна стойност. Стойностите се сортират в реда, в който се въвеждат.
SETКолоната SET може да има максимум 64 различни членове. Една таблица може да съдържа не повече от 255 уникални списъци с дефиниции в колоните ENUM и SET, считани за група.

Типовете BINARY и VARBINARY са подобни на CHAR и VARCHAR, с изключение на това, че съдържат двоични (binary) низове, а не nonbinary. Те съдържат низове от байтове вместо буквени знаци и имат двоичен символен набор и съпоставяне, а сравнението и сортирането се основават на числените стойности на байтовете в стойностите.

Пространствен тип данни

Пространствените данни (Spatial Data Types) представляват информация за физическото разположение и формата на геометричните обекти. Тези обекти могат да бъдат точки или по-сложни обекти като държави, пътища или езера.

SQL Server поддържа два типа пространствени данни: геометрични и географски.

  • геометричният тип представя данни в евклидова (плоска) координатна система.
  • географският тип представя данни в кръгова координатна система.

JSON тип данни

От версия 5.7.8 MySQL поддържа JSON тип данни , дефиниран от RFC 7159, който позволява достъп до данни в JSON (JavaScript Object Notation) документи.