Типы данных SQL для MySQL, SQL Server и MS Access. Типы данных SQL Server

Типы данных SQL

Каждый столбец в таблице базы данных должен иметь имя и тип данных.

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

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

Типы данных MySQL

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

Текстовые типы данных:

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

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

Вы вводите возможные значения в этом формате: Enum (‘ X ‘, ‘ Y ‘, ‘ Z ‘)

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

Типы данных чисел:

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

* целочисленные типы имеют дополнительный параметр, называемый неподписанным. Как правило, целое число переходит от отрицательного к положительному значению. Добавление неподписанного атрибута будет перемещаться, что диапазон вверх, поэтому он начинается с нуля, а не отрицательное число.

Типы данных дат:

Тип данныхОписание
DATE() Свидание. Формат: гггг-мм-DD

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

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

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

TIMESTAMP() * Временная метка. Значения timestamp хранятся в виде количества секунд со времени Unix (‘ 1970-01-01 00:00:00 ‘ UTC). Формат: гггг-мм-DD HH: MI: SS

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

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

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

YEAR() Год в формате с двумя или четырьмя цифрами.

Примечание: Допустимые значения в формате четырех цифр: 1901 до 2155. Допустимые значения в формате с двумя цифрами: 70 до 69, представляющие годы с 1970 по 2069

* даже если DateTime и timestamp возвращаются в том же формате, они работают очень по-разному. В запросе INSERT или Update временная метка автоматически устанавливает текущую дату и время. TIMESTAMP также принимает различные форматы, такие как ииииммддххмисс, ииммддххмисс, ГГГГММДД или YYMMDD.

Как использовать тип данных MS SQL

  • Необходимо заранее определить тип данных, которые может хранить столбец или переменная. Определение типа данных также ограничивает пользователя от ввода любых неожиданных или недействительных данных.
  • Вы можете эффективно использовать память, назначая соответствующий тип данных переменной или столбцу, который будет выделять только необходимый объем системной памяти для данных соответствующего столбца.
  • MS SQL предлагает широкую категорию типов данных в соответствии с потребностями пользователя. Как дата, двоичные изображения и т. Д.

Зачем использовать DataTypes?

Давайте возьмем образец простой страницы регистрации приложения веб-сайта. Три поля ввода: Имя, Фамилия и Контактный номер.

Здесь следует отметить, что в режиме реального времени:

  • «Имя / Фамилия» всегда будет буквенным .
  • «Контакт» всегда будет числовым .

Типы данных SQL для MySQL, SQL Server и MS Access. Типы данных SQL Server

  • Из приведенного выше рисунка стоит указать «Имя / Фамилия» как символ, а « Контакт» — как целое число .

Очевидно, что в любом приложении все поля имеют один или другой тип данных. Например, числовой, буквенный, дата и многое другое.

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

Тип данных доступен в MS SQL

Сервер MS SQL поддерживает следующие категории типа данных:

  • Точное число
  • Приблизительный числовой
  • Дата и время
  • Строки символов
  • Строки символов Unicode
  • Двоичные строки
  • Другие типы данных

Типы данных SQL для MySQL, SQL Server и MS Access. Типы данных SQL Server
Типы данных MSQL

Точное число

Точное число имеет девять типов типов данных.

Точные числовые типы данных

Тип данныхОписаниеНижний пределВерхний предел Память
BIGINT Он хранит целые числа в указанном диапазоне -2 ^ 63 (-9 223 372, 036 854 775 808) 2 ^ 63−1 (−9 223 372, 036 854 775 807) 8 байт
ИНТ Он хранит целые числа в указанном диапазоне −2 ^ 31 (-2,147, 483,648) 2 ^ 31−1 (-2,147, 483,647) 4 байта
SMALLINT Он хранит целые числа в указанном диапазоне −2 ^ 15 (−32,767) 2 ^ 15 (−32 768) 2 байта
TINYINT Он хранит целые числа в указанном диапазоне 0 255 1 байт
немного Может принимать значения 0, 1 или NULL. 0 1 1 байт / 8-битный столбец
десятичный Используется для чисел и чисел с фиксированной точностью -10 ^ 38 + 1 10 ^ 381-1 От 5 до 17 байт
числовой Используется для чисел и чисел с фиксированной точностью -10 ^ 38 + 1 10 ^ 381-1 От 5 до 17 байт
Деньги Использованные денежные данные −922,337, 203, 685,477.5808 +922,337, 203, 685,477.5807 8 байт
smallmoney Использованные денежные данные -214,478.3648 +214,478.3647 4 байта

Примеры:

Запрос:

DECLARE @Datatype_Int INT = 2 PRINT @Datatype_Int

Выход: 2

Синтаксис: десятичный (P, S)

Вот,

  • Точность
  • S это масштаб

Запрос:

DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31 PRINT @Datatype_Decimal

Выход: 2.31

Приблизительный Числовой

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

Приблизительный числовой тип данных

Тип данныхОписаниеНижний пределВерхний пределПамятьточность
Поплавок (п) Используется для числа с плавающей точностью -1.79E + 308 1.79E + 308 Зависит от значения n 7 цифр
реальный Используется для числа с плавающей точностью -3.40E + 38 3.40E + 38 4 байта 15-значный

Syntax: FLOAT [(n)]

Здесь n — это количество битов, которые используются для хранения мантиссы с плавающей точкой в научной записи. По умолчанию значение n равно 53.

Когда пользователь определяет тип данных, такой как float, n должно быть значением от 1 до 53.

SQL Server обрабатывает п , как один из двух возможных значений. Если 1 <= n <= 24, n рассматривается как 24. Если 25 <= n <= 53, n рассматривается как 53.

Пример запроса:

DECLARE @Datatype_Float FLOAT(24) = 22.1234 PRINT @Datatype_Float

Выход: 22.1234

Дата и время

Здесь хранятся данные типа Дата и время.

Дата и время Тип данных

Тип данных ОписаниеРазмер хранилища точностьНижний диапазонВерхний Диапазон
DateTime Используется для указания даты и времени с 1 января 1753 года по 31 декабря 9999 года. Точность составляет 3,33 миллисекунды. 8 байт Округлено с шагом .000, .003, .007 1753-01-01 9999-12-31
smalldatetime Используется для указания даты и времени с 1 января 0001 года по 31 декабря 9999 года. Он имеет точность 100 наносекунд 4 байта, исправлено 1 минута 1900-01-01 2079-06-06
свидание Используется для хранения только даты с 1 января 0001 по 31 декабря 9999 3 байта, исправлено 1 день 0001-01-01 9999-12-31
время Используется для хранения только временных значений с точностью до 100 наносекунд. 5 байт 100 наносекунд 00: 00: 00,0000000 23: 59: 59,9999999
DateTimeOffset Подобно времени данных, но имеет смещение часового пояса 10 байт 100 наносекунд 0001-01-01 9999-12-31
datetime2 Используется для указания даты и времени с 1 января 0001 года по 31 декабря 9999 года. 6 байт 100 наносекунд 0001-01-01 9999-12-31

Пример запроса:

DECLARE @Datatype_Date DATE = ‘2030-01-01’ PRINT @Datatype_Date

Выход: «2030-01-01»

Строки символов

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

Типы данных Строки символов

Тип данных ОписаниеНижний пределВерхний предел Память
голец Это строка символов с фиксированной шириной. Он хранит не более 8000 символов. 0 символов 8000 символов n байтов
VARCHAR Это строка символов с переменной шириной 0 символов 8000 символов n байтов + 2 байта
VARCHAR (Макс) Это строка символов с переменной шириной. Он хранит не более 1 073 741 824 символов. 0 символов 2 ^ 31 символов n байтов + 2 байта
текст Это строка символов с переменной шириной. Он хранит максимум 2 ГБ текстовых данных. 0 символов 2 147 483 647 символов n байтов + 4 байта

Пример запроса:

DECLARE @Datatype_Char VARCHAR(30) = ‘This is Character Datatype’ PRINT @Datatype_Char

Вывод: это тип данных персонажа

Строки символов Unicode

В этой категории хранится весь диапазон символов Unicode, который использует кодировку UTF-16.

Типы данных строки символов Unicode

Тип данных ОписаниеНижний пределВерхний предел Память
NCHAR Это строка Unicode фиксированной ширины 0 символов 4000 символов 2 раза n байтов
NVARCHAR Это строка Юникода переменной ширины 0 символов 4000 символов 2 раза n байтов + 2 байта
NTEXT Это строка Юникода переменной ширины 0 символов 1 073 741 823 символа 2 раза длина строки

Пример запроса:

DECLARE @Datatype_nChar VARCHAR(30) = ‘This is nCharacter Datatype’ PRINT @Datatype_nChar

Вывод: это nCharacter Datatype

Двоичная строка

Эта категория содержит двоичную строку фиксированной и переменной длины.

Типы данных двоичных строк

Тип данных ОписаниеНижний пределВерхний предел Память
двоичный Это двоичная строка фиксированной ширины. Он хранит максимум 8 000 байтов. 0 байт 8000 байт n байтов
VARBINARY Это двоичная строка переменной ширины. Он хранит максимум 8000 байт 0 байт 8000 байт Фактическая длина введенных данных + 2 байта
образ Это двоичная строка переменной ширины. Он хранит максимум 2 ГБ. 0 байт 2 147 483 647 байт

Пример запроса:

DECLARE @Datatype_Binary BINARY(2) = 12; PRINT @Datatype_Binary

Выход: 0x000C

Правильный выбор типов данных — важный этап проектирования таблиц

В следующих выпусках рубрики «T-SQL для начинающих» будет рассказано о применении синтаксиса T-SQL для построения таблиц. Но прежде чем начинать строить таблицы, необходимо поговорить о типах данных. Для каждого столбца таблицы должен быть определен некоторый тип данных, например, целые (integer) или символьные (character). Это позволяет системе в последующем контролировать данные, которые будут помещаться в этот столбец. В предлагаемой статье автор рассматривает предусмотренные в системе типы данных и рассказывает о том, как создавать собственные типы данных. Подобные дополнительные типы данных следует создать до того как начнется построение таблиц, ведь при создании таблиц могут понадобиться ссылки на эти типы данных. Определяемые пользователями типы данных позволят существенно усилить контроль над данными и повысить их целостность, особенно в проектах, в которых с базами данных параллельно работают несколько разработчиков.

Столбцам необходимы типы данных

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

Большинство столбцов в этой таблице являются текстовыми полями. Номер телефона, обозначение штата и почтовый индекс всегда имеют постоянную длину, поэтому соответствующие им столбцы phone, state и ZIP удобнее объявить символьными (char). Имя автора, его адрес и город, где он живет, могут различаться по длине, поэтому для них предпочтительнее использовать тип символьных данных переменной длины (varchar). Столбец contract с информацией о наличии контракта с автором, в котором данные представляются в форме да/нет, целесообразно отнести к двоичному типу данных bit, у которого имеется два возможных значения — 0 и 1. Теперь остановимся подробнее на системных типах данных.

Типы данных, предусмотренные в системе

В версии SQL Server 6.0 определено 19 типов данных, а в версии SQL Server 7.0 добавлено еще 4 типа для удобства работы с закодированными с помощью Unicode данными, а также для поддержки приложений, основанных на использовании хранилищ данных. Каждый тип данных имеет ряд разновидностей, отличающихся возможным набором значений. Знание этих значений облегчит выбор подходящего типа данных.

Символьные данные

Символьные данные типа char предсавляют собой один из наиболее распространенных типов данных. К этому типу относятся такие символьные данные, как имена или адреса. В версии SQL Server 6.5 длина любого столбца с символьными данными ограничивалась 255 знаками. Если же информация оказывалась длиннее, к примеру, если в столбец предполагалось вводить свободный комментарий по поводу контракта, то тогда следовало использовать текстовый тип данных (text). В SQL Server 7.0 это ограничение отменено, так что символьное поле может содержать до 8000 байтов. Верхняя граница обусловлена размером страницы памяти, поскольку ни одна запись не может располагаться в памяти на нескольких страницах. В тех случаях, когда для столбца определен тип данных char, данные следует помещать в одинарных кавычках, как показано в следующем примере:

UPDATE….. SET….. WHERE…..

Как отмечалось в статье «Работа с символьными данными», помещенной в майском номере журнала, можно выбрать символьный тип данных либо фиксированной длины, char, либо переменной длины, varchar. Фиксированный размер оказывается предпочтительным в тех случаях, когда данные имеют одинаковую или сходную длину, например, при вводе идентификатора автора (часто в этом качестве используют индивидуальный номер системы социальной безопасности, что, кстати, является плохим примером для подражания). В большинстве ситуаций применение переменной длины данных не приводит к сколько-нибудь заметному увеличению времени обработки. В то же время фамилия автора может быть очень длинной, так что использование типа varchar оказывается вполне оправданным. Применительно к подавляющему большинству фамилий фиксированная длина поля означает потерю значительного объема памяти, поэтому лучше использовать тип данных varchar. При выборе того или иного типа данных всегда следует искать компромисс с учетом двух аспектов: с одной стороны, потери полезного объема памяти при использовании данных фиксированной длины, а с другой стороны, увеличения времени обработки в случае применения данных переменной длины.

SQL Server 7.0 поддерживает набор символов Unicode. В связи с этим, чтобы воспользоваться всеми преимуществами, предоставляемыми расширенными возможностями Unicode, необходимо было ввести дополнительный тип данных.Если вам захочется использовать символьные данные Unicode, то следует указать тип данных Nchar или, если это информация переменной длины, то Nvarchar. При вводе данных Unicode их следует заключать в одиночные кавычки, причем непосредственно перед ними необходимо поставить заглавную латинскую букву N. Если в рассмотренном ранее примере имя автора отнесено к типу данных Unicode, то предыдущий оператор обновления примет следующий вид:

UPDATE….. SET….. WHERE…..

Ограничение максимальной длины информации при работе с типом данных Unicode составляет 4000 знаков. Это объясняется тем, что для хранения каждого символа Unicode требуется два байта памяти. Поэтому на стандартную страницу памяти размером 8К можно поместить в два раза меньше символов Unicode, чем при использовании обычных символов.

Целые

Базовый тип целых чисел integer охватывает диапазон от -2 147 483 638 до 2 147 483 647. Уменьшенные целые smallint включают числа от -32 768 до 32767. Зачастую, когда точно известно, что диапазон возможных числовых значений данных невелик, лучше применять тип данных smallint. К примеру, в базе данных личной коллекции компакт-дисков при выборе типа данных для первичного ключа целесообразно использовать тип данных smallint. Ведь предположение о том, что число компакт-дисков в такой коллекции превысит 32 676 единиц, кажется неправдоподобным. В этой ситуации не следует для оптимизации памяти использовать тип данных tinyint, поскольку он позволяет обрабатывать только значения от 0 до 255. Такой тип данных можно было бы применить для нумерации депозитных сертификатов, а для коллекции компакт-дисков он может оказаться недостаточным.

Точные числовые данные

Базы данных на ПК

Если приложение таково, что необходимо получать из базы данных числовое значение в строго указанном формате, то для этого следует выбрать один из точных числовых типов данных. Существуют два точных числовых типа данных: десятичный (decimal) и числовой (numeric), которые по существу совпадают друг с другом. Для них можно задать требуемые точность p и масштаб s в формате decimal (p,s). Точность представляет собой число значащих символов по обе стороны от десятичной запятой, а масштаб — количество символов справа от нее. Например, число 123,4567 можно хранить в столбце, для которого тип данных задан в виде (7,4). Если число, которое должно быть помещено в столбец с точным числовым типом данных, содержит больше десятичных знаков, чем указано в типе данных, то такое число округляется до требуемой точности. Числовые типы данных могут использовать для хранения значений от 2 до 17 байтов.

Приближенные числовые данные

Некоторые числа нельзя точно представить в десятичном виде с ограниченным числом знаков, например, одну треть или число пи. Для записи таких чисел используются действительный (real) или плавающий (float) типы данных. Данные действительного типа хранятся с точностью от 1 до 7 знаков. Плавающий формат, который иногда называют еще форматом двойной точности, может хранить числа, содержащие от 8 до 15 значащих цифр. Действительный и плавающий типы данных применяются в научных приложениях для хранения чисел, не требующих точного двоичного выражения. Одна-две последние цифры могут не вполне точно сохраняться при преобразованиях в двоичный формат. Поэтому такие числа не следует использовать в операциях точного сравнения, применяемых для формулирования условий оборота WHERE.

Двоичные

Предположим, что в базе данных необходимо хранить двоичную информацию. В этой ситуации имеется выбор между двумя форматами представления: c фиксированной или переменной длиной. Данным фиксированной длины соответствует тип данных binary, а двоичным данным переменной длины соответствует тип данных varbinary.

Денежные

Для представления денежных значений используются два типа данных: денежный (money) и малый денежный (smallmoney). Тип данных денежный применяется для хранения значений от плюс до минус 922 триллионов. Большинство из нас вполне может пользоваться малым денежным типом данных, который перекрывает диапазон значений от -214 748,3648 до +214 748,3647. По существующей договоренности денежный тип данных при хранении имеет четыре десятичных знака после запятой, а для его представления пользователям требуется только два знака . Отметим, что многие финансовые транзакции не используют денежный тип данных. Например, в биржевыех торговых операциях применяются 1/32 доли, для хранения которых необходимо пять десятичных мест.

Календарные типы данных

Тип данных Объем памяти Диапазон Описание
DATE 3 байта от ‘1000-01-01’ до ‘9999-12-31’ Предназначен для хранения даты. В качестве первого значения указывается год в формате «YYYY», через дефис — месяц в формате «ММ», а затем день в формате «DD». В качестве разделителя может выступать не только дефис, а любой символ отличный от цифры.
TIME 3 байта от ‘-838:59:59’ до ‘838:59:59’ Предназначен для хранения времени суток. Значение вводится и хранится в привычном формате — hh:mm:ss, где hh — часы, mm — минуты, ss — секунды. В качестве разделителя может выступать любой символ отличный от цифры.
DATATIME 8 байт от ‘1000-01-01 00:00:00’ до ‘9999-12-31 23:59:59’ Предназначен для хранения и даты и времени суток. Значение вводится и хранится в формате — YYYY-MM-DD hh:mm:ss. В качестве разделителей могут выступать любые символы отличные от цифры.
TIMESTAMP 4 байта от ‘1970-01-01 00:00:00’ до ‘2037-12-31 23:59:59’ Предназначен для хранения даты и времени суток в виде количества секунд, прошедших с полуночи 1 января 1970 года (начало эпохи UNIX).
YEAR (M) 1 байт от 1970 до 2069 для М=2 и от 1901 до 2155 для М=4 Предназначен для хранения года. М — задает формат года. Например, YEAR (2) — 70, а YEAR (4) — 1970. Если параметр М не указан, то по умолчанию считается, что он равен 4.

Тип данных NULL

Вообще-то это лишь условно можно назвать типом данных. По сути это скорее указатель возможности отсутствия значения. Например, когда вы регистрируетесь на каком-либо сайте, вам предлагается заполнить форму, в которой присутствуют, как обязательные, так и необязательные поля. Понятно, что регистрация пользователя невозможна без указания логина и пароля, а вот дату рождения и пол пользователь может указать по желанию. Для того, чтобы хранить такую информацию в БД и используют два значения:
NOT NULL (значение не может отсутствовать) для полей логин и пароль,
NULL (значение может отсутствовать) для полей дата рождения и пол.
По умолчанию всем столбцам присваивается тип NOT NULL, поэтому его можно явно не указывать.
Пример:
create table users (login varchar(20), password varchar(15), sex enum(‘man’, ‘woman’) NULL, date_birth date NULL);
Таким образом, мы создаем таблицу с 4 столбцами: логин (не более 20 символов) обязательное, пароль (не более 15 символов) обязательное, пол (мужской или женский) не обязательное, дата рождения (тип дата) необязательное.
Все, на этом урок, посвященный типам данных, закончен. У вас, возможно, остались вопросы, но они исчезнут по мере освоения дальнейшего материала, т.к. на практике все становится более понятно, чем в теории.

О бинарных типах данных

Пришла очередь и двоичным данным:

  • BINARY: для сохранения бинарных типов данных в качестве последовательности в пределах 1-8 000 байт;
  • VARBINARY: для хранения бинарных типов данных в качестве последовательности в диапазоне 1-8 000 байт, либо до 2^31–1 байт в случае применения значения MAX (VARBINARY(MAX)).

Такой бинарный тип, как IMAGE, тоже устарел, поэтому вместо него желательно использовать тип данных VARBINARY.

Создание пользовательского типа данных

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

Создание пользовательского типа данных осуществляется выполнением системной процедуры:

sp_addtype [@typename=]type,[@phystype=] system_data_type [,[@nulltype=]’null_type’]

Тип данныхsystem_data_type выбирается из следующей таблицы.

Таблица 2.3.
image smalldatetime decimal bit
text real ‘decimal[(p[,s])]’ ‘binary(n)’
uniqueidentifier datetime numeric ‘char(n)’
smallint float ‘numeric[(p[,s])]’ ‘nvarchar(n)’
int ‘float(n)’ ‘varbinary(n)’
ntext ‘varchar(n)’ ‘nchar(n)’

EXEC sp_addtype bir, DATETIME, ‘NULL’ или EXEC sp_addtype bir, DATETIME, ‘NOT NULL’2.1. Создание пользовательского типа данных bir.CREATE TABLE tab (id_n INT IDENTITY(1,1) PRIMARY KEY, names VARCHAR(40), birthday BIR)2.2. Использование пользовательского типа данных bir при создании таблицы.

Удаление пользовательского типа данных происходит в результате выполнения процедуры sp_droptype type: EXEC sp_droptype ‘bir’

Получение информации о типах данных

Получить список всех типов данных, включая пользовательские, можно из системной таблицы systypes:

SELECT * FROM systypes

Преобразование типов

Нередко требуется конвертировать значения одного типа в значения другого. Наиболее часто выполняется конвертирование чисел в символьные данные и наоборот, для этого используется специализированная функция STR. Для выполнения других преобразований SQL Server предлагает универсальные функции CONVERT и CAST, с помощью которых значения одного типа преобразовываются в значения другого типа, если такие изменения вообще возможны. CONVERT и CAST примерно одинаковы и могут быть взаимозаменяемыми.

CAST(выражение AS тип_данных) CONVERT(тип_данных[(длина)], выражение [,стиль])

С помощью аргумента стиль можно управлять стилем представления значений следующих типов данных: дата/время, денежный или нецелочисленный.

DECLARE @d DATETIME DECLARE @s CHAR(8) SET @s=’29.10.01’ SET @d=CAST(@s AS DATETIME)2.3. Преобразование данных символьного типа к данным типа дата/время.

Наряду с типами данных основополагающими понятиями при работе с языком SQL в среде MS SQL Server являются выражения, операторы, переменные, управляющие конструкции.

Источники

  • https://html5css.ru/sql/sql_datatypes.php
  • https://coderlessons.com/tutorials/bazy-dannykh/uchebnik-sql-server/6-tipy-dannykh-sql-server
  • https://www.internet-technologies.ru/articles/podrobno-o-tipah-dannyh.html
  • https://www.site-do.ru/db/sql2.php
  • https://otus.ru/journal/tipy-dannyh-v-ms-sql-transact-sql/
  • https://intuit.ru/studies/courses/5/5/lecture/124?page=2

SQL в хранилищах данных: аналитическая обработка данных. Оконные функции T-SQL

ITandLife.ru