Типы полей в MySQL
MySQL поддерживает три группы типов полей: числовые, дата и время, строковые (символьные).
Тип | Применение | Размер |
---|---|---|
TINYINT | целые числа самой маленькой разрядности | Диапазон чисел со знаком: –128 … 127, без знака(unsigned) – 0 … 255 |
SMALLINT | целые числа маленькой разрядности | Диапазон чисел со знаком: –32768 … 32767, без знака(unsigned) – 0 … 65535 |
MEDIUMINT | целые числа средней разрядности | Диапазон чисел со знаком: –8388608 … 8388607, без знака(unsigned) – 0 … 16777215 |
INT или INTEGER | целые числа обыкновенной разрядности | Диапазон чисел со знаком: -2147483648 … 2147483647, без знака(unsigned) – 0 … 4294967295 |
BIGINT | целые числа большой разрядности | Диапазон чисел со знаком: -9223372036854775808 … 9223372036854775807, без знака(unsigned) – 0 … 18446744073709551615 |
FLOAT | числа с плавающей запятой (одинарной точности) | Диапазон от –3. |
DOUBLE, REAL | числа с плавающей запятой (двойной точности) | Диапазон от -1.7976931348623157E+308 до -2.2250738585072014E-308 и от 2.2250738585072014E-308 до 1.7976931348623157E+308 |
DATE | дата | Диапазон от ‘1000-01-01′ до ‘9999-12-31′, отображается в виде ‘YYYY-MM-DD’ |
DATETIME | комбинация даты и времени | Диапазон от ‘1000-01-01 00:00:00′ до ‘9999-12-31 23:59:59′, отображается в виде ‘YYYY-MM-DD HH:MM:SS’ |
timestamp | временная отметка | Диапазон от ‘1970-01-01 00:00:00′ до 2037 года, отображается в виде YYYYMMDDHHMMSS или YYMMDDHHMMSS или YYYYMMDD или YYMMDD |
TIME | время | Диапазон от ‘-838:59:59 до ‘838:59:59′, отображается в виде ‘HH:MM:SS’ |
YEAR | год (2-х или 4-х циферное представление) | Диапазон от 1901 до 2155 (для 4-х циферного представления) и 1970-2069 (70-69, для 2-х циферного представление), отображается в виде ‘YYYY’ |
CHAR | строка фиксированной длины | Диапазон от 1 до 255 символов, пробелы по краям обрезаются при получении значения, заполняется пробелом до заданной длины (если символов меньше, чем заданная длина), сортировка и сравнение значений регистро-независимое |
VARCHAR | строка изменяющийся длины | Диапазон от 1 до 255 символов, пробелы по краям обрезаются при сохранении, сортировка и сравнение значений регистро-независимое |
TINYBLOB, TINYTEXT | столбец типа BLOB или TEXT, максимальная длина 255 символов | |
BLOB, TEXT | столбец типа BLOB или TEXT, максимальная длина 65535 символов | |
MEDIUMBLOB, MEDIUMTEXT | столбец типа BLOB или TEXT, максимальная длина 16777215 символов | |
LONGBLOB, LONGTEXT | столбец типа BLOB или TEXT, максимальная длина 4294967295 символов | |
ENUM | перечисление | строковый объект, может иметь только одно значение из списка, максимальное количество уникальных элементов – 65535 |
SET | множество | строковый объект, может иметь 0 или больше значений из списка, максимальное количество элементов – 64 |
Требования к памяти для числовых типов
Тип столбца | Требуемая память |
TINYINT | 1 byte |
SMALLINT | 2 байта |
MEDIUMINT | 3 байта |
INT | 4 байта |
INTEGER | 4 байта |
BIGINT | 8 байтов |
FLOAT(X) | 4, если X <= 24 или 8, если 25 <= X <= 53 |
FLOAT | 4 байта |
DOUBLE | 8 байтов |
DOUBLE PRECISION | 8 байтов |
REAL | 8 байтов |
DECIMAL(M,D) | M+2 байт, если D > 0, M+1 байт, если D = 0 (D+2, если M < D) |
NUMERIC(M,D) | M+2 байт, если D > 0, M+1 байт, если D = 0 (D+2, если M < D) |
Требования к памяти для типов даты и времени
Тип столбца | Требуемая память |
DATE | 3 байта |
DATETIME | 8 байтов |
TIMESTAMP | 4 байта |
TIME | 3 байта |
YEAR | 1 байт |
Требования к памяти для символьных типов
Тип столбца | Требуемая память |
CHAR(M) | M байт, 1 <= M <= 255 |
VARCHAR(M) | L+1 байт, где L <= M и 1 <= M <= 255 |
TINYBLOB, TINYTEXT | L+1 байт, где L < 2^8 |
BLOB, TEXT | L+2 байт, где L < 2^16 |
MEDIUMBLOB, MEDIUMTEXT | L+3 байт, где L < 2^24 |
LONGBLOB, LONGTEXT | L+4 байт, где L < 2^32 |
ENUM(‘value1′,’value2’,. |
1 или 2 байт, в зависимости от количества перечисляемых величин (максимум 65535) |
SET(‘value1′,’value2’,…) | 1, 2, 3, 4 или 8 байт, в зависимости от количества элементов множества (максимум 64) |
VARCHAR, BLOB и TEXT являются типами данных с переменной длиной строки, для таких типов требования к памяти в общем случае определяются реальным размером величин в столбце (представлен символом L в приведенной выше таблице), а не максимально возможным для данного типа размером. Например, столбец VARCHAR(10) может содержать строку с максимальной длиной 10 символов. Реально требуемый объем памяти равен длине строки (L) плюс 1 байт для записи длины строки. Для строки ‘abcd’ L равно 4 и требуемый объем памяти равен 5 байтов.
В случае типов данных BLOB и TEXT требуется 1, 2, 3 или 4 байта для записи длины значения данного столбца в зависимости от максимально возможной длины для данного типа.
Если таблица включает в себя столбец какого-либо типа с переменной длиной строки, то формат записи также будет переменной длины. Следует учитывать, что при создании таблицы MySQL может при определенных условиях преобразовать тип столбца с переменной длиной в тип с постоянной длиной строки или наоборот.
Размер объекта ENUM определяется количеством различных перечисляемых величин. Один байт используется для перечисления до 255 возможных величин. Используя два байта, можно перечислить до 65535 величин.
Размер объекта SET определяется количеством различных элементов множества. Если это количество равно N, то размер объекта вычисляется по формуле (N+7)/8 и полученное число округляется до 1, 2, 3, 4 или 8 байтов. Множество SET может иметь максимум 64 элемента.
13.02.2010 06:57
Типы полей в MySQL
В этой статье мы освятим очень важный вопрос, связанный с тем, какие типы полей в таблицах предоставляет нам MySQL. Ведь не секрет, что записи в таблицах должны соответствовать этим типам. И каждая ячейка записи должна удовлетворять определённым условиям, которые как раз и задаются типом поля в MySQL.
Давайте с Вами по порядку разберём все типы полей в MySQL
1. VARCHAR. Это тип является строковым, причём строкой переменной длины от 0 до 255 символов.
2. TINYINT. Это тип целых чисел. Диапазон значений от -127 до 128, либо 0 до 255, в зависимости от того, может ли это поле быть отрицательным. О том, как это задавать, я расскажу ниже.
3. TEXT (BLOB). Это обычный строковый тип, в котором максимальная длина составляет 65535 символов. Идеальный вариант для хранения текстов статей.
4. DATE. Этот тип отвечает за дату. Формат следующий: “YYYY-MM-DD“. Например, такое значение будет удовлетворять этому полю: “2011-01-02“.
5. SMALLINT. Также, как и TINYINT – это целый тип данных, но диапазон значений уже побольше: -32768 до 32767, либо от 0 до 65535.
6. MEDIUMINT. Ещё один целый тип, но диапазон значений ещё больше: от -8388608 до 8388607, либо от 0 до 16777215.
7. INT. Самый часто используемый целый тип данных. Его диапазон: от -2147483648 до 2147483647, либо от 0 до 4294967295.
8. BIGINT. Последний целый тип, который используется достаточно редко, так как его диапазон значений особо не востребован: от -9223372036854775808 до 9223372036854775807, либо от 0 до 18446744073709551615.
9. FLOAT. Вещественный тип данных. Точность одинарная, то есть число знаков после запятой может быть не более 24-х. Диапазон значений: от -3,402823466E+38 до -1,175494351E-38, 0, и от 1,175494351E-38 до 3,402823466E+38.
10. DOUBLE. Тот же FLOAT, но с двойной точностью. Количество знаков после запятой может составлять до 53-х. Допустимые значения: от -1,7976931348623157E+308 до -2,2250738585072014E-308, 0, и от 2,2250738585072014E-308 до 1,7976931348623157E+308. В общем, если Вам нужны действительно огромные числа, то DOUBLE – это наилучший выбор.
11. DECIMAL. Редко используемый тип даных, но тем не менее. Это число, похожее на тип DOUBLE, но хранится оно в виде строки. И, фактически, интервал допустимых значений определяется наличием знака “–” и “.“. Если эти знаки отсутсвуют, то допустимый интервал такой же, как и у DOUBLE.
12. DATETIME. Тип данных, отвечающих за хранение даты и времени. Формат следующий: “YYYY-MM-DD HH:MM:SS“.
13. TIMESTAMP. Определённая временная метка, которая может иметь один из следующих форматов: “YYYYMMDDHHMMSS“, “YYMMDDHHMMSS“, “YYYYMMDD“, “YYMMDD“.
14. TIME. Простой тип, отвечающий за время в формате: “HH:MM:SS“.
15. YEAR. Тип, отвечающий за год в одном из двух форматов: “YY“, “YYYY“.
16. CHAR. Строка фиксированной длины. Диапазон состовляет от 0 до 255 символов. При хранении данный тип добавляет к концу строки количество пробелов до заданного размера.
17. TINYTEXT (TINYBLOB). Текст с длиной от 0 до 255 символов.
18. MEDIUMTEXT (MEDIUMBLOB). Текст с длиной от 0 до 16777215 символов.
19. LONGTEXT (LONGBLOB). Текст с длиной от 0 до 4294967295 символов.
20. ENUM. Этот тип содержит список значений. Другими словами, значение соответствующей ячейки записи должно быть выбрано из списка допустимых строковых значений (аналог radiobutton). Максимальное количество значений 65535.
21. SET. Набор значений. Если в ENUM должно быть выбрано только одно, то тут может быть выбрано сразу несколько значений (аналог checkbox). Максимальное количество значений, хранимых в SET – 64.
Вот мы и познакомились со всеми типами полей в MySQL. Как и обещал, рассказываю, как выбрать, какое число будет использоваться: положительное или отрицательное. Для этого есть специальный атрибут UNSIGNED, который если стоит, то число положительное, а если его нет, то число может быть как положительным, так и отрицательным. Впрочем, потом Вы всё поймёте, а пока просто примите это к сведению.
Разумеется, всё это запоминать не нужно. И давайте я сейчас Вам перечислю типы, которые используются очень часто и которые многократно использовал я сам:
- VARCHAR – идеальный тип данных для всяких логинов, паролей, заголовков статей, имён, фамилий и прочего.
- TINYINT – используется для всяких “флагов”. Например, активирован пользователь на сайте или нет, заблокирован пользователь на сайте или нет. Также используется для численной оценки прав пользователя. Например, “1” – это Гость, “2” – Зарегистрированный, “3” – Администратор и так далее.
- TEXT – используется для хранения текста, разумеется, используется очень часто.
- INT – самый популярный вариант использования этого типа – это ID (уникального идентификатора), который уникален для каждой записи в таблице.
- DATETIME – используется для хранения даты и времени.
Например, можно хранить дату и время отправки сообщения на форуме, дату и время регистрации пользователя и так далее.
- ENUM – используется реже тех, которые я описал выше, но тем не менее. Самый простой пример использования этого типа – это словесное описание прав пользователя: “Гость“, “Зарегистрированный“, “Администратор“.
Как видите, типов полей в MySQL очень много, но используются активно всего 5-6, поэтому всё очень и очень просто.
Удачи!
-
Создано 02.01.2011 21:09:18
-
Михаил Русаков
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Обзор
типов данных MySQL
Резюме : В этом руководстве вы узнаете о типах данных MySQL и о том, как их эффективно использовать при проектировании баз данных в MySQL.
Таблица базы данных содержит несколько столбцов с определенными типами данных, такими как числовые или строковые. MySQL предоставляет больше типов данных, кроме числовых и строковых. Каждый тип данных в MySQL можно определить по следующим характеристикам:
- Вид значений, которые он представляет.
- Занимаемое пространство и значения фиксированной или переменной длины.
- Значения типа данных могут быть индексированы или нет.
- Как MySQL сравнивает значения определенного типа данных.
Загрузить Обзор типов данных MySQL
Числовые типы данных MySQL
В MySQL вы можете найти все стандартные числовые типы SQL, включая точные числовые типы данных и приблизительные числовые типы данных, включая целые, с фиксированной запятой и с плавающей запятой. Кроме того, MySQL также имеет BIT
тип данных для хранения битовых значений. Числовые типы могут быть со знаком или без знака, за исключением типа BIT
.
В следующей таблице представлена сводка числовых типов в MySQL:
Числовые типы | Описание |
---|---|
TINYINT |
Очень маленькое целое число |
SMALLINT |
Маленькое число целое число |
СРЕДНИЙ |
Среднее целое число |
INT |
Стандартное целое число |
BIGINT 900 50
| Большое целое число |
ДЕСЯТИЧНОЕ |
Число с фиксированной точкой |
FLOAT |
Число с плавающей запятой одинарной точности |
DOUBLE |
Число с плавающей запятой двойной точности |
BIT |
Битовое поле |
Логический тип данных MySQL
MySQL не имеет встроенного BOOLEAN
или 9002 9 Тип данных BOOL . Для представления логических значений MySQL использует наименьший целочисленный тип
TINYINT(1)
. Другими словами, BOOLEAN
и BOOL
являются синонимами TINYINT(1).
Строковые типы данных MySQL
В MySQL строка может содержать что угодно, от простого текста до двоичных данных, таких как изображения или файлы. Строки можно сравнивать и искать на основе сопоставления с образцом с помощью LIKE
, регулярное выражение и полнотекстовый поиск.
В следующей таблице показаны строковые типы данных в MySQL:
Типы строк | Описание |
---|---|
CHAR |
Недвоичная (символьная) строка фиксированной длины |
VARCHAR |
Недвоичная строка переменной длины |
BINARY |
Двоичная строка фиксированной длины |
VARBINARY |
Двоичная строка переменной длины |
TINYBLOB |
Очень маленький BLOB ( двоичный большой объект) |
BLOB |
Маленький BLOB |
MEDIUMBLOB |
BLOB среднего размера |
LONGBLOB |
Большой BLOB |
9002 9 TINYTEXT | Очень маленькая недвоичная строка |
ТЕКСТ |
Недвоичная строка небольшого размера string |
LONGTEXT |
Большая недвоичная строка |
ENUM |
Перечисление; каждому значению столбца может быть назначен один член перечисления |
SET |
Набор; каждому значению столбца может быть присвоено ноль или более SET членов |
Типы данных даты и времени MySQL
MySQL предоставляет типы для даты и времени, а также комбинацию даты и времени. Кроме того, MySQL поддерживает тип данных timestamp для отслеживания изменений в строке таблицы. Если вы просто хотите хранить годы без дат и месяцев, вы можете использовать тип данных
YEAR
.
Следующая таблица иллюстрирует типы данных даты и времени MySQL:
Типы даты и времени | Описание |
---|---|
DATE |
Значение даты в формате CCYY-MM-DD |
ВРЕМЯ |
Значение времени в формате чч:мм:сс format |
DATETIME |
Значение даты и времени в формате CCYY-MM-DD hh:mm:ss format |
TIMESTA MP |
Значение метки времени в формате CCYY-MM-DD hh: мм:сс 9Формат 0030 |
ГОД |
Год в формате CCYY или YY Формат |
9002 2 Типы пространственных данных MySQL
MySQL поддерживает множество типов пространственных данных, которые содержат различные виды геометрических и географических значений как показаны в следующей таблице:
Типы пространственных данных | Описание |
---|---|
ГЕОМЕТРИЯ |
Пространственная значение любого типа |
POINT |
Точка (пара координат X-Y) |
LINESTRING |
Кривая (одна или более POINT значений) |
POLYGON |
Многоугольник A |
GEOMETRYCOLLECTION |
Набор значений GEOMETRY |
MULTILINESTRING 9005 0
| Набор из LINESTRING значений |
MULTIPOINT |
Набор значений POINT |
MULTIPOLYGON 90 030 |
Набор из значений POLYGON |
Тип данных JSON
MySQL поддерживает собственный JSON
, начиная с версии 5. 7.8, который позволяет более эффективно хранить документы JSON и управлять ими. Собственный тип данных JSON обеспечивает автоматическую проверку документов JSON и оптимальный формат хранения.
В этом руководстве вы изучили различные типы данных MySQL, которые помогут вам определить, какой тип данных следует использовать для столбцов при создании таблиц.
Было ли это руководство полезным?
Типы данных MySQL — javatpoint
следующий → Тип данных определяет конкретный тип данных, например, целое число, числа с плавающей запятой, логические значения и т. д. Он также определяет возможные значения для этого типа, операции, которые можно выполнять с этим типом, и то, как значения этого типа хранится. В MySQL каждая таблица базы данных имеет много столбцов и содержит определенные типы данных для каждого столбца. Мы можем определить тип данных в MySQL со следующими характеристиками:
MySQL поддерживает множество стандартных типов данных SQL в различных категориях. Он использует множество различных типов данных, которые можно разбить на следующие категории: числовые, дата и время, строковые типы, пространственные типы и типы данных JSON. Числовой тип данных MySQL имеет все необходимые числовые типы данных SQL. Эти типы данных могут включать точные числовые типы данных (например, целые, десятичные, числовые и т. д.), а также приблизительные числовые типы данных (например, числа с плавающей запятой, вещественные числа и двойная точность). Он также поддерживает тип данных BIT для хранения битовых значений. В MySQL числовые типы данных подразделяются на два типа: со знаком или без знака, за исключением битового типа данных. Следующая таблица содержит все числовые типы данных, которые поддерживаются в MySQL:
Дата и время Тип данных:Этот тип данных используется для представления временных значений, таких как дата, время, дата-время, отметка времени и год. Каждый временной тип содержит значения, в том числе нулевое. Когда мы вставляем недопустимое значение, MySQL не может его представить, и тогда используется нулевое значение. В следующей таблице показаны все типы данных даты и времени, которые поддерживаются в MySQL:
Строковые типы данных: Строковый тип данных используется для хранения простого текста и двоичных данных, например, файлов, изображений и т. д. MySQL может выполнять поиск и сравнение строкового значения на основе сопоставления с образцом, таким как оператор LIKE, регулярные выражения и т. В следующей таблице показаны все строковые типы данных, которые поддерживаются в MySQL:
Двоичные типы данных больших объектов (BLOB):BLOB в MySQL — это тип данных, который может содержать переменный объем данных. Они делятся на четыре разных типа в зависимости от максимальной длины значений, которые могут содержаться. В следующей таблице показаны все типы данных Binary Large Object, которые поддерживаются в MySQL:
Типы пространственных данныхЭто особый тип данных, который используется для хранения различных геометрических и географических значений. Он соответствует классам OpenGIS. В следующей таблице показаны все пространственные типы, которые поддерживаются в MySQL: .
Тип данных JSON MySQL обеспечивает поддержку собственного типа данных JSON начиная с версии v5.7.8. Этот тип данных позволяет нам быстро и эффективно хранить и получать доступ к документу JSON. |