Типы данных SQL

типы данных SQL

В языке SQL есть очень много типов данных, которые позволяют программисту задать любой диапазон значений данных бизнес процесса. Есть как часто используемые, так и очень специфичные типы данных о которых некоторые даже не догадываются. Сегодня мы постараемся разобраться в этой непростой теме и сделаем ее простой.

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

Для начала нужно классифицировать типы данных в языке SQL:

  1. Числовые
  2. Дата и время
  3. Символьные и строковые
  4. Юникод
  5. Двоичные
  6. Другие (clob, blob, xml и т.д)

Числовые типы данных 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 и т.д.).

Но, смею Вас заверить: для большинство целей типов данных СУБД вполне достаточно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *