SQL Типы данных для различных баз данных


Типы данных и диапазоны, используемые Microsoft Access, MySQL и SQL Server.


Типы данных Microsoft Access

Тип данных Описание Хранилище
Текст Используется для текста или комбинаций текста и чисел. Максимум 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 байта
Дата/время Используется для дат и времени 8 байт
Да/Нет Логические поля могут отображаться как Да/Нет, Истина/Ложь или Вкл/Выкл. В коде используйте константы True и False (эквивалентны 1 и 0).Примечание:Значения Null не допускаются в полях Да/Нет 1 бит
Объект OLE Может хранить изображения, аудио, видео или другие BLOBs (Binary Large OBjects). До 1GB
Hyperlink Содержит ссылки на другие файлы, включая веб-страницы.
Мастер подстановок Позволяет создать список параметров, которые можно выбирать из раскрывающегося списка. 4 байта


Типы данных MySQL

В MySQL есть три основных типа: текстовые, числовые и типы даты/времени.

Текстовые типы:

Тип данных Описание
CHAR(size) Хранит строку фиксированной длины (может содержать буквы, цифры и специальные символы). Укажите длину строки в скобках. До 255 символов.
VARCHAR(size) Хранит строку переменной длины (может содержать буквы, цифры и специальные символы). Укажите максимальную длину строки в скобках. До 255 символов.Примечание:Если длина значения больше 255, оно преобразуется в тип TEXT.
TINYTEXT Хранит строку максимальной длиной 255 символов.
TEXT Хранит строку максимальной длиной 65,535 символов.
BLOB Используется для BLOBs (большие двоичные объекты). Хранит до 65,535 байт данных.
MEDIUMTEXT Хранит строку максимальной длиной 16,777,215 символов.
MEDIUMBLOB Используется для BLOBs (большие двоичные объекты). Хранит до 16,777,215 байт данных.
LONGTEXT Хранит строку максимальной длиной 4,294,967,295 символов.
LONGBLOB Используется для BLOBs (большие двоичные объекты). Хранит до 4,294,967,295 байт данных.
ENUM(x,y,z,etc.) Позволяет ввести список возможных значений. В списке ENUM можно указать до 65,535 значений. Если вставляемое значение отсутствует в списке, вставляется значение NULL.

Примечание:Эти значения сортируются в порядке их ввода.

Возможные значения можно ввести в таком формате: ENUM('X','Y','Z')

SET Аналогично ENUM, за исключением того, что SET может содержать не более 64 элементов списка, и SET может хранить более одного выбранного значения.

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

Тип данных Описание
TINYINT(size) Знаковый: от -128 до 127, беззнаковый: от 0 до 255.
SMALLINT(size) Знаковый диапазон от -32768 до 32767, беззнаковый — от 0 до 65535, size по умолчанию — 6.
MEDIUMINT(size) Знаковый диапазон от -8388608 до 8388607, беззнаковый диапазон — от 0 до 16777215. size по умолчанию — 9.
INT(size) Знаковый диапазон от -2147483648 до 2147483647, беззнаковый диапазон — от 0 до 4294967295. size по умолчанию — 11.
BIGINT(size) Знаковый диапазон от -9223372036854775808 до 9223372036854775807, беззнаковый диапазон — от 0 до 18446744073709551615. size по умолчанию — 20.
FLOAT(size,d) Небольшие числа с плавающей десятичной точкой. Укажите максимальное количество отображаемых цифр в параметре size. Укажите максимальное количество цифр справа от десятичной точки в параметре d.
DOUBLE(size,d) Большие числа с плавающей десятичной точкой. Укажите максимальное количество отображаемых цифр в параметре size. Укажите максимальное количество цифр справа от десятичной точки в параметре d.
DECIMAL(size,d) Тип DOUBLE, хранимый как строка, что позволяет использовать фиксированную десятичную точку. Укажите максимальное количество отображаемых цифр в параметре size. Укажите максимальное количество цифр справа от десятичной точки в параметре d.

Примечание:Упомянутый выше size не отражает фактическую длину, хранимую в базе данных; например, int(4) не означает, что он может хранить только числа длиной в 4 цифры.

На самом деле, int(size) не имеет ничего общего с тем, сколько места для хранения используется. int(3), int(4) и int(8) все занимают 4 байта дискового пространства. Помимо небольшого различия в способе их отображения пользователю, int(M) — то же самое, что и тип данных int.

Пример:

1. значение int 10 (с указанным zerofill)

int(9)显示结果为000000010
int(3)显示结果为010

Различается лишь отображаемая длина; все они занимают четыре байта пространства.

Типы дат:

Тип данных Описание
DATE() Дата. Формат: YYYY-MM-DD

Примечание:Поддерживаемый диапазон — от '1000-01-01' до '9999-12-31'

DATETIME() *Комбинация даты и времени. Формат: YYYY-MM-DD HH:MM:SS

Примечание:Поддерживаемый диапазон — от '1000-01-01 00:00:00' до '9999-12-31 23:59:59'

TIMESTAMP() *Метка времени. Значения TIMESTAMP хранятся в виде количества секунд, прошедших с начала эпохи Unix ('1970-01-01 00:00:00' UTC). Формат: YYYY-MM-DD HH:MM:SS

Примечание:Поддерживаемый диапазон — от '1970-01-01 00:00:01' UTC до '2038-01-09 03:14:07' UTC

TIME() Время. Формат: HH:MM:SS

Примечание:Поддерживаемый диапазон — от '-838:59:59' до '838:59:59'

YEAR() Год в 2-значном или 4-значном формате.

Примечание:Допустимые значения в 4-значном формате: с 1901 по 2155. Допустимые значения в 2-значном формате: с 70 по 69, что соответствует 1970–2069.

*Хотя DATETIME и TIMESTAMP возвращают один и тот же формат, работают они совершенно по-разному. В запросах INSERT или UPDATE TIMESTAMP автоматически устанавливается в текущую дату и время. TIMESTAMP также принимает различные форматы, например YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD или YYMMDD.


Типы данных SQL Server

Строковые типы:

Тип данных Описание Хранилище
char(n) Строки фиксированной длины. До 8,000 символов. Заданная ширина
varchar(n) Строки переменной длины. До 8,000 символов. 2 байта + количество символов
varchar(max) Строки переменной длины. До 1,073,741,824 символов. 2 байта + количество символов
text Строки переменной длины. До 2GB текстовых данных. 4 байта + количество символов
nchar Строка Unicode фиксированной длины. До 4,000 символов. Заданная ширина x 2
nvarchar Строка Unicode переменной длины. До 4,000 символов.
nvarchar(max) Строка Unicode переменной длины. До 536,870,912 символов.
ntext Строка Unicode переменной длины. До 2GB текстовых данных.
bit Допускает 0, 1 или NULL.
binary(n) Двоичная строка фиксированной длины. До 8,000 bytes.
varbinary Двоичная строка переменной длины. До 8,000 bytes.
varbinary(max) Двоичная строка переменной длины. До 2GB.
image Двоичная строка переменной длины. До 2GB.

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

Тип данных Описание Хранилище
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 до 214,748.3647. 4 байта
money Данные денежного типа в диапазоне от -922,337,203,685,477.5808 до 922,337,203,685,477.5807. 8 байт
float(n) Данные чисел с плавающей точкой в диапазоне от -1.79E + 308 до 1.79E + 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 января 1753 года по 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 Хранит уникальное число, которое обновляется при создании или изменении строки. Значение timestamp основано на внутренних часах и не соответствует реальному времени. Каждая таблица может иметь только одну переменную timestamp.  

Другие типы данных:

Тип данных Описание
sql_variant Хранит до 8,000 байт данных разных типов, кроме text, ntext и timestamp.
uniqueidentifier Хранит глобально уникальный идентификатор (GUID).
xml Хранит данные в формате XML. До 2GB.
cursor Хранит ссылку на указатель, используемый для операций с базой данных.
table Хранит результирующий набор для последующей обработки.
Другие расширения