кодесурса
«MySQL

Типы данных MySQL

script1adsense2code
script1adsense3code

Что такое тип данных

1. Тип данных указывает конкретный тип данных, например, целое число, число с плавающей запятой, логическое значение и т. Д.

2. Тип данных также определяет возможные значения для этого типа, операции, которые могут быть выполнены с этим типом, и способ хранения значений этого типа.

Типы данных MySQL

MySQL поддерживает несколько стандартных типов данных SQL в различных категориях. MySQL имеет числовые типы, типы DATETIME , DATE и TIMESTAMP и строковые типы. Типы данных, обсуждаемые на этой странице, основаны на сервере сообщества MySQL 5.6.

Числовые типы MySQL

MySQL поддерживает все стандартные числовые типы данных SQL, включая INTEGER, SMALLINT, DECIMAL и NUMERIC. Он также поддерживает приблизительные числовые типы данных (FLOAT, REAL и DOUBLE PRECISION). Ключевое слово INT является синонимом INTEGER, а ключевые слова DEC и FIXED являются синонимами DECIMAL. DOUBLE - это синоним DOUBLE PRECISION (нестандартное расширение). REAL является синонимом DOUBLE PRECISION (нестандартный вариант), если не включен режим SQL REAL_AS_FLOAT. Тип данных BIT хранит значения битовых полей и поддерживается для таблиц MyISAM, MEMORY, InnoDB и NDB.

Целочисленные типы

Стандартные целочисленные типы SQL INTEGER (или INT) и SMALLINT поддерживаются MySQL. В качестве расширения к стандарту MySQL также поддерживает целочисленные типы TINYINT, MEDIUMINT и BIGINT. В следующей таблице показано требуемое хранилище и диапазон (максимальное и минимальное значение для целого числа со знаком и без знака) для каждого типа целого числа.

Тип длина
в байтах
Минимальное значение
(Подпись)
Максимальное значение
(Подпись)
Минимальное значение
(Без знака)
Максимальное значение
(Без знака)
TINYINT 1 -128 127 0 255
SMALLINT 2 -32768 32767 0 65535
MEDIUMINT 3 -8388608 8388607 до 0 16777215
INT 4 -2147483648 2147483647 0 4294967295
BIGINT 8 -9223372036854775808 92233720368
54775807
0 184467440737
09551615

Типы с плавающей точкой

Типы FLOAT и DOUBLE представляют приблизительные числовые значения данных. MySQL использует четыре байта для значений одинарной точности и восемь байтов для значений двойной точности.

Типы Описание
FLOAT Точность от 0 до 23 приводит к четырехбайтовому столбцу FLOAT одинарной точности
DOUBLE Точность от 24 до 53 приводит к восьмибайтовому столбцу двойной точности DOUBLE.

MySQL допускает нестандартный синтаксис: FLOAT (M, D) или REAL (M, D) или DOUBLE PRECISION (M, D). Здесь значения могут храниться в сумме до M цифр, где D представляет десятичную точку. Например, столбец, определенный как FLOAT (8,5), будет выглядеть как -999,999999. MySQL выполняет округление при сохранении значений, поэтому, если вы вставите 999.00009 в столбец FLOAT (7,4), приблизительный результат будет 999.0001.

В следующей таблице показано необходимое хранилище и диапазон (максимальное и минимальное значение для целого числа со знаком и без знака) для каждого типа с плавающей запятой.

Тип длина
в байтах
Минимальное значение
(Подпись)
Максимальное значение
(Подпись)
Минимальное значение
(Без знака)
Максимальное значение
(Без знака)
FLOAT 4 -3.402823466E + 38 -1.175494351E-38 1.175494351E-38 3.402823466E + 38
DOUBLE 8 -1,7976931348623
157E + 308
-2,22507385850720
14E- 308
0 и
+2,22507385850720
14E- 308
+1,797693134862315
7E + 308

Типы с фиксированной точкой

Типы данных с фиксированной точкой используются для сохранения точной точности, например, с валютными данными. В MySQL типы DECIMAL и NUMERIC хранят точные числовые значения данных. MySQL 5.6 сохраняет значения DECIMAL в двоичном формате.

В стандартном SQL синтаксис DECIMAL (5,2) (где 5 - точность, а 2 - масштаб.) Может хранить любое значение с пятью цифрами и двумя десятичными знаками. Поэтому диапазон значений будет от -999,99 до 999,99. Синтаксис DECIMAL ( M ) эквивалентен DECIMAL ( M , 0). Аналогично, синтаксис DECIMAL эквивалентен DECIMAL ( M , 0). MySQL поддерживает обе эти разновидности синтаксиса DECIMAL. По умолчанию значение M равно 10. Если масштаб равен 0, значения DECIMAL не содержат десятичной точки или дробной части.
Максимальное количество цифр для DECIMAL составляет 65, но фактический диапазон для данного столбца DECIMAL может быть ограничен точностью или масштабом для данного столбца.

Типы битовых значений

Тип данных BIT используется для хранения значений битовых полей. Тип BIT (N) позволяет хранить N-битные значения. N может варьироваться от 1 до 64.
Чтобы указать битовые значения, можно использовать обозначение b'value. значение - это двоичное значение, записанное с использованием нулей и единиц. Например, b'111 'и b'10000000' представляют 7 и 128 соответственно

Атрибуты числового типа

MySQL поддерживает расширение для необязательного указания ширины отображения целочисленных типов данных в скобках после ключевого слова base для типа

Типы Описание
ТИП (N) Где N - целое число, а ширина отображения типа - до N цифр.
ZEROFILL Заполнение пробелов по умолчанию заменяется нулями. Так, для столбца INT (3) ZEROFILL 7 отображается как 007.

MySQL Date and Time Types

Типы даты и времени представляют собой ДАТУ, ВРЕМЯ, DATETIME, TIMESTAMP и YEAR. Каждый тип имеет диапазон допустимых значений, а также «нулевое» значение.

DATETIME, DATE и TIMESTAMP Типы

Типы Описание Формат отображения Спектр
DATETIME Используйте, когда вам нужны значения, содержащие информацию о дате и времени. ГГГГ-ММ-ДД ЧЧ: ММ: СС '1000-01-01 00:00:00' до '9999-12-31 23:59:59'.
ДАТА Используйте, когда вам нужна только информация о дате. YYYY-MM-DD «1000-01-01» - «9999-12-31».
TIMESTAMP Значения преобразуются из текущего часового пояса в UTC при сохранении и преобразуются обратно из UTC в текущий часовой пояс при получении. ГГГГ-ММ-ДД ЧЧ: ММ: СС '1970-01-01 00:00:01' UTC до '2038-01-19 03:14:07' UTC

Тип времени

MySQL извлекает и отображает значения ВРЕМЕНИ в формате «ЧЧ: ММ: СС» или «ЧЧЧ: ММ: СС». Диапазон. ВРЕМЕНИ значения от -838: 59: 59 до 838: 59: 59. Часть часов может быть довольно большой, потому что не только тип ВРЕМЯ может использоваться для представления времени суток, то есть менее 24 часов, но также прошедшее время или время интервала между двумя событиями.

Значения ВРЕМЕНИ в MySQL можно распознать во многих различных форматах, некоторые из которых могут включать в себя конечную долю доли секунды с точностью до 6 цифр в микросекундах. Диапазон значений TIME: от -838: 59: 59.000000 до 838: 59: 59.000000.

MySQL объясняет сокращенные значения ВРЕМЕНИ двоеточиями как время суток. Предположим, «09: 10» означает «09: 10: 00», а не «00: 09: 10». MySQL понимает сокращенные значения без двоеточий, так как две самые правые цифры представляют секунды. Например, мы думаем, что «0910» и «0910» означают «09: 10: 00», то есть через 10 минут после 9 часов, но реальность такова, что MySQL понимает их как «00: 09: 10», то есть 9 минут и 10 секунд. Поэтому будьте осторожны с использованием сокращенного времени в MySQL.

По умолчанию значения времени, которые находятся вне TIME, преобразуются в допустимый диапазон значений времени. Например, «-930: 00: 00» и «930: 00: 00» преобразуются в «-838: 59: 59» и «838: 59: 59». Недопустимые значения TIME преобразуются в «00: 00: 00», потому что «00: 00: 00» само по себе является допустимым значением «TIME» в MySQL.

Тип года

Тип YEAR - это однобайтовый тип, используемый для представления значений года. Он может быть объявлен как YEAR (2) или YEAR (4), чтобы указать ширину отображения двух или четырех символов. Если ширина не указана, по умолчанию используется четыре символа

ГОД (4) и ГОД (2) имеют разный формат отображения, но имеют одинаковый диапазон значений.
Для 4-значного формата MySQL отображает значения YEAR в формате YYYY в диапазоне от 1901 до 2155 или 0000.
Для двухзначного формата MySQL отображает только последние две (наименее значимые) цифры; например, 70 (1970 или 2070) или 69 (2069).

Вы можете указать значения YEAR в различных форматах:

Длина строки Спектр
4-значная строка С 1901 по 2155.
4-значный номер С 1901 по 2155 год
1- или 2-значная строка От 0 до 99 Значения в диапазонах от «0» до «69» и от «70» до «99» преобразуются в значения ГОД в диапазонах с 2000 по 2069 и с 1970 по 1999 год.
1- или 2-значное число От 1 до 99. Значения в диапазонах от 1 до 69 и от 70 до 99 преобразуются в значения ГОДА в диапазонах с 2001 по 2069 и с 1970 по 1999 год.

Типы строк

Типы строк: CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM и SET.

Типы CHAR и VARCHAR

Типы CHAR и VARCHAR похожи, но отличаются тем, как они хранятся и извлекаются. Они также различаются по максимальной длине и сохранению задних пробелов.

Типы Описание Формат отображения Диапазон символов
CHAR Содержит недвоичные строки. Длина фиксируется, как вы объявляете при создании таблицы. При сохранении они дополняются правыми пробелами до указанной длины. Конечные пробелы удалены. Длина может быть любым значением от 0 до 255.
VARCHAR Содержит недвоичные строки. Столбцы являются строками переменной длины. Как хранится. Значение от 0 до 255 до MySQL 5.0.3 и от 0 до 65 535 в 5.0.3 и более поздних версиях.

Двоичные и варварские типы

Типы BINARY и VARBINARY похожи на CHAR и VARCHAR, за исключением того, что они содержат двоичные строки, а не недвоичные строки.

Типы Описание Диапазон в байтах
BINARY Содержит двоичные строки. От 0 до 255
VARBINARY Содержит двоичные строки. Значение от 0 до 255 до MySQL 5.0.3 и от 0 до 65 535 в 5.0.3 и более поздних версиях.

Типы BLOB и TEXT

BLOB - это большой двоичный объект, который может содержать переменное количество данных. Существует четыре типа BLOB, TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB. Они отличаются только максимальной длиной значений, которые они могут содержать.
Четырьмя типами TEXT являются TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT. Они соответствуют четырем типам BLOB и имеют одинаковую максимальную длину и требования к хранению.

Типы Описание категории Спектр
большой двоичный объект Большой двоичный объект, содержащий переменное количество данных. Значения обрабатываются как двоичные строки. Вам не нужно указывать длину при создании столбца. TINYBLOB Максимальная длина 255 символов.
MEDIUMBLOB Максимальная длина 16777215 символов.
LONGBLOB Максимальная длина 4294967295 символов
ТЕКСТ Значения обрабатываются как строки символов, имеющие набор символов. TINYBLOB Максимальная длина 255 символов.
MEDIUMBLOB Максимальная длина 16777215 символов.
LONGBLOB Максимальная длина 4294967295 символов

Типы ENUM

Строковый объект, значение которого выбирается из списка значений, указанных во время создания таблицы. Например -

CREATE TABLE length (     length ENUM('small', 'medium', 'large') ); 

Типы SET

Строковый объект, имеющий ноль или более значений, разделенных запятыми (максимум 64). Значения выбираются из списка значений, указанных во время создания таблицы.

Разница между типами данных MySQL Datetime и Timestamp

Тип DATETIME используется, когда вам нужны значения, содержащие информацию как даты, так и времени. MySQL извлекает и отображает значения DATETIME в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС». Поддерживаемый диапазон: от 1000-01-01 от 00:00:00 до 9999-12-31 23:59:59.

Тип данных TIMESTAMP также используется, когда вам нужны значения, содержащие информацию как о дате, так и о времени. У TIMESTAMP есть диапазон от «1970-01-01 00:00:01» UTC до «2038-01-19 03:14:07» UTC

Основное различие между DATETIME и TIMESTAMP заключается в том, что значения TIMESTAMP при сохранении преобразуются из текущего часового пояса в UTC и при получении возвращаются из UTC в текущий часовой пояс. Значение типа данных datetime не изменяется.

Смотрите следующий пример:

Следующая команда отображает информацию о текущем часовом поясе:

Давайте создадим таблицу с двумя полями udatetime (тип данных -> datetime) utimestamp (тип данных -> timestamp) и вставим одну запись с now () (возвращает текущую дату и время) в качестве значения в обоих полях.

MySQL> create table tempdate (udatetime datetime, utimestamp timestamp);
Query OK, 0 rows affected (0.32 sec)
MySQL> insert into tempdate values ((now()), (now())); 
Query OK, 1 row affected (0.05 sec)

Теперь посмотрите записи;

На этом этапе типы данных datetime и timestamp имеют одинаковые значения.

В приведенном выше выводе оба поля имеют одинаковые значения. Давайте изменим часовой пояс и увидим результат.

MySQL> SET TIME_ZONE ='Europe/Paris';
Query OK, 0 rows affected (0.00 sec)

Теперь выполните следующую команду:

Пример вывода:

 MySQL> select * from tempdate;
+ --------------------- + --------------------- +
| время | метка времени |
+ --------------------- + --------------------- +
| 2013-06-29 16:55:18 | 2013-06-29 13:25:18 |
+ --------------------- + --------------------- +
1 ряд в наборе (0,00 сек)

Приведенный выше вывод показывает, что udatetime (тип данных - DATETIME) не изменяется, тогда как utimestamp (тип данных - TIMESTAMP) изменяется, поскольку для нового часового пояса установлено значение «Европа / Париж».

Описание: типы данных MySQL

«MySQL

Предыдущая: Структура языка MySQL
Далее: Расширения MySQL для пространственных данных

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code