SQL Типы данных для MySQL, SQL Server и MS Access
Тип данных столбца определяет, какое значение может содержать столбец: целое число, символ, деньги, дата и время, двоичный код и так далее.
SQL Типы данных
Каждый столбец в таблице базы данных должен иметь имя и тип данных.
Разработчик SQL должен решить, какой тип данных будет храниться внутри каждого столбца при создании таблицы. Тип данных является ориентиром для SQL, позволяющим понять, какой тип данных ожидается внутри каждого столбца, а также определяет, как SQL будет взаимодействовать с сохраненными данными.
Примечание: Типы данных могут иметь разные имена в разных базах данных. И даже если имя одно и то же, размер и другие детали могут отличаться! Всегда проверяйте документацию!
MySQL Типы данных (Version 8.0)
В MySQL существует три основных типа данных: строковые, числовые, а также дата и время.
Строковые Типы данных
Типы данных | Описание |
---|---|
CHAR(size) | Строка ФИКСИРОВАННОЙ длины (может содержать буквы, цифры и специальные символы). В размер параметр задает длину столбца в символах - может быть от 0 до 255. Значение по умолчанию равно 1 |
VARCHAR(size) | Строка ПЕРЕМЕННОЙ длины (может содержать буквы, цифры и специальные символы). Параметр size задает максимальную длину строки в символах - может составлять от 0 до 65535 |
BINARY(size) | Равен CHAR(), но хранит двоичные байтовые строки. Параметр size задает длину столбца в байтах. Значение по умолчанию равно 1 |
VARBINARY(size) | Равен VARCHAR(), но хранит двоичные байтовые строки. Параметр size задает максимальную длину столбца в байтах. |
TINYBLOB | Для больших двоичных объектов (двоичных объектов большого размера). Максимальная длина: 255 байт |
TINYTEXT | Содержит строку с максимальной длиной 255 символов |
TEXT(size) | Содержит строку с максимальной длиной 65 535 байт |
BLOB(size) | Для больших двоичных объектов (двоичных объектов большого размера). Содержит до 65 535 байт данных |
MEDIUMTEXT | Содержит строку с максимальной длиной 16 777 215 символов |
MEDIUMBLOB | Для больших двоичных объектов (двоичных объектов большого размера). Содержит до 16 777 215 байт данных |
LONGTEXT | Содержит строку с максимальной длиной 4 294 967 295 символов |
LONGBLOB | Для больших двоичных объектов (двоичных больших объектов). Содержит до 4 294 967 295 байт данных |
ENUM(val1, val2, val3, ...) | Объект string, который может иметь только одно значение, выбранное из списка возможных значений. Вы можете перечислить до 65535 значений в перечислимом списке. Если вставлено значение, которого нет в списке, будет вставлено пустое значение. Значения сортируются в том порядке, в котором вы их вводите |
SET(val1, val2, val3, ...) | Объект string, который может иметь 0 или более значений, выбранных из списка возможных значений. В заданном списке можно указать до 64 значений |
Числовые Типы данных
Тип данных | Описание |
---|---|
BIT(size) | Тип битового значения. Количество битов на значение указывается в параметре size. Параметр size может содержать значение от 1 до 64. Значение по умолчанию для size равно 1. |
TINYINT(size) | Очень маленькое целое число. Диапазон значений со знаком от -128 до 127. Диапазон значений без знака от 0 до 255. Параметр size задает максимальную ширину отображения (которая равна 255) |
BOOL | Ноль считается ложным, ненулевые значения считаются истинными. |
BOOLEAN | Равно BOOL |
SMALLINT(size) | Маленькое целое число. Диапазон со знаком - от -32768 до 32767. Диапазон без знака - от 0 до 65535. Параметр size задает максимальную ширину дисплея (которая равна 255). |
MEDIUMINT(size) | Среднее целое число. Диапазон значений со знаком - от -8388608 до 8388607. Диапазон значений без знака - от 0 до 16777215. Параметр size задает максимальную ширину дисплея (которая равна 255). |
INT(size) | Среднее целое число. Диапазон значений со знаком - от -2147483648 до 2147483647. Диапазон значений без знака - от 0 до 4294967295. Параметр size задает максимальную ширину дисплея (которая равна 255). |
INTEGER(size) | Равно INT(size) |
BIGINT(size) | Большое целое число. Диапазон значений со знаком составляет от -9223372036854775808 до 9223372036854775807. Диапазон без знака - от 0 до 18446744073709551615. Параметр size задает максимальную ширину дисплея (которая равна 255). |
FLOAT(size, d) | Число с плавающей запятой. Общее количество цифр указывается в размере. Количество цифр после запятой указывается в параметре d. Этот синтаксис устарел в MySQL 8.0.17, и он будет удален в будущих версиях MySQL |
FLOAT(p) | Число с плавающей запятой. MySQL использует значение p, чтобы определить, следует ли использовать FLOAT или DOUBLE для результирующего типа данных. Если p равно от 0 до 24, тип данных становится FLOAT(). Если p равно от 25 до 53, тип данных становится DOUBLE() |
DOUBLE(size, d) | Число с плавающей запятой обычного размера. Общее количество цифр указывается в параметре size. Количество цифр после запятой указывается в параметре d) |
DOUBLE PRECISION(size, d) | |
DECIMAL(size, d) | Точное число с фиксированной запятой. Общее количество цифр указывается в размере. Количество цифр после запятой указывается в параметре d. Максимальное значение для размера равно 65. Максимальное значение для d равно 30. Значение по умолчанию для размера равно 10. Значение по умолчанию для d равно 0. |
DEC(size, d) | Равно DECIMAL(size,d) |
Примечание: Все числовые типы данных могут иметь дополнительную опцию: UNSIGNED или ZEROFILL. Если вы добавите опцию UNSIGNED, MySQL запретит отрицательные значения для столбца. Если вы добавите опцию ZEROFILL, MySQL автоматически также добавит в столбец атрибут UNSIGNED.
Типы данных даты и времени
Типы данных | Описание |
---|---|
DATE | Дата. Формат: ГГГГ-ММ-ДД. Поддерживаемый диапазон составляет от '1000-01-01' до '9999-12-31' |
DATETIME(fsp) | Комбинация даты и времени. Формат: ГГГГ-ММ-ДД чч: мм: сс. Поддерживаемый диапазон составляет от '1000-01-01 00:00:00' до '9999-12-31 23:59:59'. Добавление значения ПО УМОЛЧАНИЮ и ПРИ ОБНОВЛЕНИИ в определение столбца для автоматической инициализации и обновления до текущей даты и времени |
TIMESTAMP(fsp) | Временная метка. Значения ВРЕМЕННОЙ МЕТКИ сохраняются как количество секунд, прошедших с эпохи Unix ('1970-01-01 00:00:00' UTC). Формат: ГГГГ-ММ-ДД чч: мм: сс. Поддерживаемый диапазон составляет от '1970-01-01 00:00:01' UTC до '2038-01-09 03:14:07' UTC. Автоматическую инициализацию и обновление до текущей даты и времени можно указать, используя CURRENT_TIMESTAMP ПО УМОЛЧАНИЮ и ПРИ ОБНОВЛЕНИИ CURRENT_TIMESTAMP в определении столбца |
TIME(fsp) | Время. Формат: чч: мм: сс. Поддерживаемый диапазон составляет от '-838:59:59' до '838:59:59' |
YEAR | Год в четырехзначном формате. Допустимые значения в четырехзначном формате: с 1901 по 2155 и 0000. MySQL 8.0 не поддерживает год в двузначном формате. |
SQL Server Типы данных
Строковые Типы данных
Типы данных | Описание | Максимальный size | Хранение |
---|---|---|---|
char(n) | Символьная строка фиксированной ширины | 8000 символов | Определенная ширина |
varchar(n) | Символьная строка переменной ширины | 8,000 символов | 2 байта + количество символов |
varchar(max) | Символьная строка переменной ширины | 1,073,741,824 символов | 2 байта + количество символов |
text | Символьная строка переменной ширины | 2 ГБ текстовых данных | 4 байта + количество символов |
nchar | Строка Юникода фиксированной ширины | 4,000 символов | Определенная ширина x 2 |
nvarchar | Строка Юникода переменной ширины | 4,000 символов | |
nvarchar(max) | Строка Юникода переменной ширины | 536,870,912 символов | |
ntext | Строка Юникода переменной ширины | 2 ГБ текстовых данных | |
binary(n) | Двоичная строка фиксированной ширины | 8000 байт | |
varbinary | Двоичная строка переменной ширины | 8000 байт | |
varbinary(max) | Двоичная строка переменной ширины | 2GB | |
image | Двоичная строка переменной ширины | 2GB |
Числовые Типы данных
Типы данных | Описание | Хранение |
---|---|---|
bit | Целое число, которое может быть 0, 1 или NULL | |
tinyint | Допускает целые числа от 0 до 255 | 1 байт |
smallint | Допускает целые числа от -32,768 до 32,767 | 2 байта |
int | Допускает целые числа от -2,147,483,648 до 2,147,483,647 | 4 байта |
bigint | Допускает целые числа от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 | 8 байт |
decimal(p,s) | Фиксированные значения точности и масштаба.
Допускает числа от -10^38 +1 до 10^38 -1. Параметр p указывает максимальное общее количество цифр, которое может быть сохранено (как слева, так и справа от десятичной точки). p должно быть значением от 1 до 38. Значение по умолчанию равно 18. Параметр s указывает максимальное количество цифр, хранящихся справа от десятичной точки. s должно быть значением от 0 до p. Значение по умолчанию равно 0 |
5-17 байт |
numeric(p,s) | Фиксированные значения точности и масштаба.
Допускает числа от -10^38 +1 до 10^38 -1. Параметр p указывает максимальное общее количество цифр, которое может быть сохранено (как слева, так и справа от десятичной точки). p должно быть значением от 1 до 38. Значение по умолчанию равно 18. Параметр s указывает максимальное количество цифр, хранящихся справа от десятичной точки. s должно быть значением от 0 до p. Значение по умолчанию равно 0 |
5-17 байт |
smallmoney | Денежные данные с -214,748.3648 to 214,748.3647 | 4 байта |
money | Денежные данные с -922,337,203,685,477.5808 по 922,337,203,685,477.5807 | 8 байт |
float(n) | Числовые данные с плавающей точностью от -1.79E + 308 до 1.79 E + 308.
Параметр n указывает, должно ли поле содержать 4 или 8 байт. float(24) содержит 4-байтовое поле, а float(53) - 8-байтовое поле. Значение n по умолчанию равно 53. |
4 или 8 байт |
real | Числовые данные с плавающей точностью от -3.40E + 38 до 3.40E + 38 | 4 байта |
Типы данных даты и времени
Типы данных | Описание | Хранение |
---|---|---|
datetime | С 1 января 1753 года по 31 декабря 9999 года с точностью 3,33 миллисекунды | 8 байт |
datetime2 | С 1 января 0001 года по 31 декабря 9999 года с точностью до 100 наносекунд | 6-8 байт |
smalldatetime | С 1 января 1900 года по 6 июня 2079 года с точностью до 1 минуты | 4 байта |
date | Сохраняйте только дату. С 1 января 0001 по 31 декабря 9999 | 3 байта |
time | Сохраняйте время только с точностью до 100 наносекунд | 3-5 байт |
datetimeoffset | То же, что и datetime2 , с добавлением смещения часового пояса | 8-10 байт |
timestamp | Хранит уникальный номер, который обновляется каждый раз при создании или изменении строки. Значение метки времени основано на внутренних часах и не соответствует реальному времени. Каждая таблица может иметь только одну переменную метки времени |
Другие Типы данных
Типы данных | Описание |
---|---|
sql_variant | Хранит до 8000 байт данных различных типов, за исключением text, ntext и timestamp |
uniqueidentifier | Хранит глобально уникальный идентификатор (GUID) |
xml | Хранит данные в формате XML. Максимум 2 ГБ |
cursor | Хранит ссылку на курсор, используемый для операций с базой данных |
table | Сохраняет набор результатов для последующей обработки |
MS Access Типы данных
Типы данных | Описание | Хранение |
---|---|---|
Text | Используется для текста или комбинаций текста и цифр. Максимум 255 символов | |
Memo | Memo используется для больших объемов текста. Содержит до 65 536 символов. Примечание: Вы не можете отсортировать поля memo. Однако они доступны для поиска | |
Byte | Допускает целые числа от 0 до 255 | 1 байт |
Integer | Допускает целые числа от -32,768 до 32,767 | 2 байта |
Long | Допускает целые числа от -2,147,483,648 до 2,147,483,647 | 4 байта |
Single | С плавающей запятой одинарной точности. Будет обрабатывать большинство десятичных знаков | 4 байта |
Double | Двойная точность с плавающей запятой. Будет обрабатывать большинство десятичных знаков | 8 байт |
Currency | Использовать в качестве валюты. Содержит до 15 цифр целых долларов плюс 4 знака после запятой. Совет: Вы можете выбрать валюту какой страны использовать | 8 байт |
AutoNumber | Поля автоматической нумерации автоматически присваивают каждой записи свой собственный номер, обычно начинающийся с 1 | 4 байта |
Date/Time | Используйте для указания дат и времени | 8 байт |
Yes/No | Логическое поле может отображаться как Yes/No, True /False или On/Off. В коде используйте константы True и False (эквивалентные -1 и 0). Примечание: Нулевые значения не допускаются в полях Yes/No | 1 бит |
Ole Object | Может хранить изображения, аудио, видео или другие большие двоичные объекты (двоичные большие объекты) | до 1 ГБ |
Hyperlink | Содержат ссылки на другие файлы, включая веб-страницы | |
Lookup Wizard | Позволяет ввести список параметров, которые затем можно выбрать из выпадающего списка | 4 байта |