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 | Хранит результирующий набор для последующей обработки. |