В языке SQL есть очень много типов данных, которые позволяют программисту задать любой диапазон значений данных бизнес процесса. Есть как часто используемые, так и очень специфичные типы данных о которых некоторые даже не догадываются. Сегодня мы постараемся разобраться в этой непростой теме и сделаем ее простой.
В любом языке программирования указания типа данных говорит о том, в каком виде данные будут представлены в поле. SQL не исключение. При создании каждого поля в таблице необходимо указывать тип данных, который будет там храниться.
Для начала нужно классифицировать типы данных в языке SQL:
Числовые типы данных SQL
Первые и одни из самых популярных. Если Вы хотите сохранять числа – их использование неизбежно. Весь перечень числовых типов представлен ниже:
Тип | От | До |
---|---|---|
bit | 0 | 1 |
tinyint | 0 | 255 |
smallint | -32,768 | 32,767 |
int | -2,147,483,648 | 2,147,483,647 |
bigint | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
decimal | -10^38 +1 | 10^38 -1 |
numeric | -10^38 +1 | 10^38 -1 |
float | -1.79E + 308 | 1.79E + 308 |
real | -3.40E + 38 | 3.40E + 38 |
Как видите, перечень очень большой. Какой тип использовать зависит от того, какой диапазон данных Вы собираетесь хранить в поле. Для малого диапазона значений вполне подойдет smallint или tinyint. Для тех полей, диапазон значений которых Вам пока не известный, я советую брать тип с запасом.
Тип данных дата и время
В SQL удобно хранить дату и время. Для этого можно выбрать один из следующих типов данных:
Тип | Описание |
---|---|
DATE | Хранит дату в формате YYYY-MM-DD |
TIME | Хранит время в формате HH:MI:SS |
DATETIME | Хранит дату и время в формате YYYY-MM-DD HH:MI:SS |
TIMESTAMP | Хранит количество секунд с (‘1970-01-01 00:00:00’ UTC) |
YEAR | Хранит год в 2 цифровом или 4 цифровом формате. |
Символьные и строковые типы данных
Строки – пожалуй самый любимый формат новичков. Ниже перечень всех строковых и символьных ТД:
Тип | Описание |
---|---|
CHAR | Фиксированная длина с максимальной длиной 8,000 символов |
VARCHAR | Хранение переменной длины с максимальной длиной 8,000 символов |
VARCHAR(max) | Хранение переменной длины с предоставленными максимальными символами |
TEXT | Хранение переменной длины с максимальным размером 2GB |
Заметьте, что текст может хранить практически неограниченное количество символов. VARCHAR(max) позволяет указать максимальное количество символов. При добавлении записи в данное поле, если количество символов будет превышать максимальное – выдаст ошибку.
Юникод (Unicode)
Не самый распространенный тип полей, но для общего развития мы рассмотрим и его. Сразу оговорюсь, данные типы не поддерживаются в MySql, на базе которой мы делаем все примеры по SQL.
Тип | Описание |
---|---|
NCHAR | Фиксированная длина с максимальной длиной 4,000 символов |
NVARCHAR | Хранение переменной длины с максимальной длиной 4,000 символов |
NVARCHAR(max) | Хранение переменной длины с предоставленными максимальными символами |
NTEXT | Хранение переменной длины с максимальным размером 1GB |
Двоичные типы данных SQL
Тип | Описание |
---|---|
BINARY | Фиксированная длина с максимальной длиной 8,000 символов |
VARBINARY | Хранение переменной длины с максимальной длиной 8,000 символов |
VARBINARY(max) | Хранение переменной длины с предоставленными максимальными символами |
IMAGE | Хранение переменной длины с максимальным размером 2GB |
Из этих типов я несколько раз использовал IMAGE. Этот формат позволяет сохранять картинки. Изображение конвертируется в двоичный тип и хранится в таком виде в базе.
Помимо такого богатого диапазона числовых и строковых данных SQL позволяет хранить и другие типы:
- xml – для хранения xml данных
- json – для json-а
- blob – для больших двоичных объектов
- clob – символ больших объектов, который может вместить до 2 ГБ
Это все, что касается типов данных в языке SQL. Каждая СУБД имеет свои особенности и поэтому не все типы данных SQL можно использовать в конкретной СУБД (MySql, PostreSql и т.д.).
Но, смею Вас заверить: для большинство целей типов данных СУБД вполне достаточно.