Типы данных SQL Server с примерами

⚡ Умное резюме

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

  • 🔢 Точное числовое значение: Библиотеки bigint, int, smallint, tinyint, bit, decimal, numeric, money и smallmoney хранят точные целые числа с фиксированной запятой.
  • 〰🇧🇷 Приблизительное числовое значение: Числа с плавающей запятой (float) и вещественные числа (real) хранят приблизительные значения с плавающей запятой, используемые в научных вычислениях.
  • 📅 Дата и время: переменные datetime, smalldatetime, date, time, datetimeoffset и datetime2 хранят временные значения.
  • 🔤 Символы и Юникод: char, varchar и text содержат текст; nchar, nvarchar и ntext содержат текст в формате Unicode.
  • 🖼️ Бинарные и другие: Бинарные, varbinary и image хранят байтовые данные; cursor, xml и uniqueidentifier удовлетворяют особым потребностям.
  • ???? Выбор WiseLY: Сопоставление каждого столбца с наименьшим подходящим типом данных повышает эффективность хранения и целостность данных.

Типы данных SQL Server с примерами

Что такое тип данных?

Тип данных в MS SQL Server Определяется как тип данных, которые может хранить любой столбец или переменная. Это тип данных, которые содержит объект, например, целое число, символ или строка. При создании любого (см. таблицу ниже) or переменнаяПомимо указания имени, вы также задаете тип данных, которые будут храниться.

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

Необходимо заранее определить тип данных, которые может хранить столбец или переменная. Определение типа данных также предотвращает ввод пользователем неожиданных или недопустимых данных.

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

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

Зачем использовать типы данных?

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

Здесь следует отметить, что в реальных условиях:

  • Имя и фамилия всегда будут располагаться в алфавитном порядке.
  • «Контактная информация» всегда будет представлена ​​цифрами.

В приведенном ниже примере показаны эти поля в форме регистрации.

Пример формы регистрации, в которой имя и фамилия заданы символами, а контактные данные — целым числом.

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

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

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

Тип данных, доступный в MS SQL Server

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

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

На приведенной ниже диаграмме типы данных MS SQL Server сгруппированы по этим категориям.

Диаграмма группыping Разделение типов данных MS SQL Server на семь категорий.

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

В SQL Server тип данных «Точный числовой» имеет девять подтипов. Каждый из них хранит целые числа или числа с фиксированной запятой в заданном диапазоне.

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

Точные числовые типы данных в SQL Server с примерами:

Запрос:

DECLARE @Datatype_Int INT = 2
PRINT @Datatype_Int

Выход:

2

Синтаксис:

Decimal (P,S)

Здесь P — точность, а S — масштаб.

Запрос:

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

Выход:

2.31

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

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

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

Для типов данных с плавающей запятой используется следующий синтаксис:

Syntax:  FLOAT [(n)]

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

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

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

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

Выход:

22.1234

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

В этой категории хранятся данные типа «дата и время».

Тип данных Описание Размер хранилища Точность подачи Нижний диапазон Верхний диапазон
DateTime Используется для указания даты и времени с 1 января 1753 года по 31 декабря 9999 года. Точность составляет 3.33 миллисекунды. 8 байт Округлено с шагом 000, 003, 007. 1753-01-01 9999-12-31
маленькая дата и время Используется для указания даты и времени с 1 января 1900 года по 6 июня 2079 года. Точность составляет 1 минуту. 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
смещение даты и времени Аналогично формату даты и времени, но с учетом смещения часового пояса. 10 байт 100 наносекунд 0001-01-01 9999-12-31
дата и время2 Используется для указания даты и времени с 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'

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

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

Тип данных Описание Нижний предел Верхний предел Память
колесница Это строка символов фиксированной ширины. Он хранит максимум 8,000 символов. 0 символов 8000 символов n байт
варчар Это строка символов с переменной шириной. 0 символов 8000 символов n байт + 2 байта
варчар (макс.) Это строка символов переменной ширины. Он хранит максимум 1,073,741,824 XNUMX XNUMX XNUMX символа. 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

Выход:

Это символьный тип данных

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

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

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

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

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

Выход:

Это тип данных nCharacter

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

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

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

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

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

Выход:

0x000C

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

Ниже приведены другие типы данных SQL Server с их описаниями:

Тип данных Описание
Курсор Результатом выполнения является столбец, содержащий значения переменных sp_cursor_list и sp_describe_cursor. Возвращается имя переменной курсора.
Rowversion Это добавляет метки версии к строкам таблицы.
Иерархия Этот тип данных обозначает позицию в иерархии.
Уникальный идентификатор Хранит GUID, часто преобразованный из символьного выражения.
Sql_variant В нем хранятся значения типов данных, поддерживаемых SQL Server.
XML Он хранит данные XML в столбце.
Тип пространственной геометрии Он представляет данные в плоской системе координат.
Тип пространственной географии Он представляет данные в круглоземной системе координат.
(см. таблицу ниже) Он сохраняет набор результатов для последующей обработки.

Интересные факты!

  • Тип данных CHAR быстрее, чем тип данных VARCHAR, при извлечении данных, поскольку его фиксированная ширина позволяет избежать проблем с длиной.ping.

Часто задаваемые вопросы (FAQ)

Для хранения символов, не относящихся к Unicode, используется один байт, а для символов Unicode — два байта. Выбирайте NVARCHAR, если столбец должен содержать символы нескольких языков или символов, выходящие за рамки одной кодовой страницы; в противном случае VARCHAR занимает меньше места.

Используйте тип данных DECIMAL (или NUMERIC), когда значения должны быть точными, например, в денежных операциях или измерениях, поскольку он хранит фиксированную точность. Используйте тип данных FLOAT для приблизительных научных значений, где допустимы незначительные отклонения от округления, и очень широкий диапазон значений важнее точности.

Да. В SQL Server ключи DECIMAL и NUMERIC функционально идентичны. Оба принимают точность и масштаб и хранят точные числа с фиксированной запятой, поэтому эти два ключевых слова взаимозаменяемы. Вы можете использовать любое название, которое ваша команда предпочитает для удобства чтения.

CHAR — это тип данных фиксированной длины, который дополняет более короткие значения пробелами, поэтому каждое значение использует объявленную ширину. VARCHAR — это тип данных переменной длины, который хранит только введенные символы плюс два байта. Используйте CHAR для унифицированных кодов и VARCHAR для текста переменной длины.

Да. ALTER TABLE Команда `table_name ALTER COLUMN column_name new_type` изменяет тип данных столбца. Изменение будет успешным только в том случае, если существующие значения корректно преобразуются в новый тип; в противном случае оно завершится ошибкой, поэтому сначала проверьте преобразования и сделайте резервную копию данных.

Обычная переменная VARCHAR(n) хранит до 8,000 символов. VARCHAR(max) хранит до 2 ГБ (2^31-1 байт) и предназначена для больших текстов, превышающих 8,000 символов. Используйте VARCHAR(max) только тогда, когда значения действительно могут быть такими большими.

Да. Второй пилот GitHub Может предлагать типы данных для столбцов и генерировать операторы DECLARE и CREATE TABLE на основе подсказок на естественном языке. Всегда проверяйте точность, масштаб, длину и соответствие требованиям Unicode, прежде чем применять предложенные варианты в рабочей среде.

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

Подведем итог этой публикации следующим образом: