Типы данных в ms sql: какие бывают и как с ними работать

Типы данных субд ms sql Server

Тип

Описание

Двоичные
данные

binary [ ( n) ]

максимальная длина
8 000 байт (n)

varbinary [( n )]

данные переменной
длины, максимальная длина 8 000 байт
(n)

image

максимальная длина
2 147 483 647 байт

bit

тип данных, который
принимает значения 1 или 0

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

сhar [(n)]

максимальная длина
8 000 символов (n)

varchar [(n)]

тип переменной
длины, максимально 8 000 символов (n)

text

максимальная длина
1 073 741 823 символов

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

nchar (n)

максимальная длина
4 000 символов (n)

nvarchar (n)

переменной длины в
кодировке Unicode максимальная длина 4
000 символов (n)

ntext

максимальная длина
1 073 741 823 символов

Числовые
целые данные

bigint

диапазон от -922 337
203 685 4775808 до 922 337 203 685 4775807

Int

диапазон от -2 147 483
648 до 2 147 483 647

smallint

диапазон от — 32 768 до
32 767

tinyint

диапазон от 0 до 255

Числовые
данные с дробной частью числа

decimal[(p[, s])]

диапазон от -1038-1
до 1038-1 с задание фиксированного
количества знаков (p – всего и s – в
дробной части), максимальное общее
количество знаков 38

numeric

то же, что и decimal

float [ ( n ) ]

диапазон от
+2. 29*10-308до +1.79*10308

real

числа с 7-значной
точностью в диапазоне от +1.18*10-38до +3.40*1038.

Тип дата и
время

datetime

диапазон от 1.01.1753
до 31.12.9999 с точностью 3.33 мс

smalldatetime

диапазон от 1.01.1900
до 6.06.2079 с точностью 1 мин.

Денежный
тип

money

диапазон от -922 337
203 685 477.5808 до +922 337 203 685 477.5807

smallmoney

диапазон от -214
748.3648 до +214 748.3647

Данные
специальных типов

timestamp

счетчик, автоматически
увеличивающийся, имеющий уникальное
значение для базы данных (тип binary(8)
или varbinary(8))

uniqueidentifier

Тип, который содержит
уникальный идентификационный номер
(GUID), сохраняемый как 16-битная двоичная
строка

sql_variant

тип, который сохраняет
значения различных типов, кроме text,
ntext, timestamp и sql_variant.

sysname

тип — синоним nvarchar,
используется для ссылок на имена
объектов базы данных

Некоторые
характеристики SQL-сервера MS
SQL
Server
приведены в табл.2.

Таблица 2

Характеристика

Максимальное
значение

Размер базы данных

1
048 516 терабайт

Количество объектов
в базе данных

2 147 483 647

Количество экземпляров
сервера на одном компьютере

16

Количество баз
данных в одном экземпляре сервера

32767

Количество файлов
в базе данных

32767

Количество таблиц
в базе данных

Ограничено количеством
объектов в базе

Количество полей в
таблице базы

1024

Размер файла данных

32
терабайт

Длина идентификаторов

128 символов

Уровень вложенных
процедур

32

Уровень вложенных
запросов

32

Количество некластерных
индексов для одной таблицы базы

249

Количество полей в
одном индексе

16

Количество байт в
одном индексе

800

Количество таблиц
в одном запросе

256

Количество байт в
одной строке таблицы

8060

MS
SQL
Server
имеет входной язык под названием
Transact-SQL, в котором, помимо базовых
SQL — операторов, предусмотрены
программные конструкции — параметры,
переменные и логические структуры (IF,
WHILE и т. д.).

Пользователь
получает доступ к БД с помощью разработанных
программистами клиентских приложений
или специальных программных средств
(утилит), предназначенных для взаимодействия
с MS
SQL
Server,
например, Microsoft SQL
Server
Management
Studio.
Для работы с базами данных в системе
Microsoft Visual
Studio
2005 имеется компонент Server
Explorer,
который также обеспечивает доступ к MS
SQL
Server.
Объекты базы данных размещаются в файле
с расширением .mdf.

Существует
версия MS
SQL
Server
Express,
инсталлируемая вместе с Microsoft Visual
Studio
2005 и реализующая функции СУБД для
локального однопользовательского
применения. Эта версия может использоваться
при разработке клиент-серверных
приложений в качестве модели реального
SQL-сервера или для переноса локальной
БД на SQL-сервер. Кроме того, эта версия
может применяться в качестве процессора
БД в обычных локальных приложениях. Его
применение позволяет программисту
повысить надежность разрабатываемого
приложения и избежать возможной потери
данных при тестировании неотлаженных
приложений на “производственной”
серверной БД.

Если
БД, для работы с которой предназначено
разрабатываемое приложение, уже
существует, то локальный сервер MS
SQL
Server
Express
может быть использован в качестве
проверочной модели перед последующим
подключением приложения к удаленному
SQL-серверу.

Если
реальная БД еще не существует, то
локальный сервер MS
SQL
Server
Express
может использоваться для создания
прототипа данных, на которых будет
проверяться работоспособность приложения.

Если
приложение разрабатывается для уже
существующей БД, функционирующей на
удаленном SQL-сервере, то перед проверкой
работоспособности приложения на реальных
данных локальный сервер MS
SQL
Server
Express
может использоваться для создания
резервных копий данных или для отладки
приложения на представительной выборке
информации из существующей БД.

При
переносе локальной БД на клиент-серверную
платформу локальный сервер MS
SQL
Server
Express
используется в качестве промежуточного
сервера, на котором проверяется структура
новой БД, предназначенной для установки
на сервере. После успешной проверки
база данных переносится на SQL-сервер.

Если
на компьютере с установленным локальным
сервером MS
SQL
Server
Express
не предусмотрен его автоматический
запуск при загрузке операционной системы
Windows, то запуск сервера возможен с помощью
утилиты SQL Server Configuration Manager, которая
вызывается из стартового меню Windows
командой
Программы
| Microsoft SQL Server 2005 | Configuration Tools | SQL Server
Configuration Manager.

Типы данных T-SQL

Типы данных T-SQL

Последнее обновление: 12.07.2017

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

Язык T-SQL предоставляет множество различных типов. В зависимости от характера значений все их можно разделить на группы.

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

  • BIT: хранит значение 0 или 1. Фактически является аналогом булевого типа в языках программирования. Занимает 1 байт.
  • 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: хранит числа c фиксированной точностью. Занимает от 5 до 17 байт в зависимости от количества чисел после запятой.
  • Данный тип может принимать два параметра precision и scale: DECIMAL(precision, scale).

    Параметр precision представляет максимальное количество цифр, которые может хранить число. Это значение должно находиться в диапазоне от 1 до 38. По умолчанию оно равно 18.

    Параметр scale представляет максимальное количество цифр, которые может содержать число после запятой. Это значение должно находиться в диапазоне от 0 до значения параметра precision. По умолчанию оно равно 0.

  • NUMERIC: данный тип аналогичен типу DECIMAL.
  • SMALLMONEY: хранит дробные значения от -214 748.3648 до 214 748.3647. Предназначено для хранения денежных величин. Занимает 4 байта. Эквивалентен типу DECIMAL(10,4).
  • MONEY: хранит дробные значения от -922 337 203 685 477.5808 до 922 337 203 685 477.5807. Представляет денежные величины и занимает 8 байт. Эквивалентен типу DECIMAL(19,4).
  • FLOAT: хранит числа от –1.79E+308 до 1.79E+308. Занимает от 4 до 8 байт в зависимости от дробной части.
  • Может иметь форму опредеения в виде FLOAT(n), где n представляет число бит, которые используются для хранения десятичной части числа (мантиссы). По умолчанию n = 53.

  • REAL: хранит числа от –340E+38 to 3.40E+38. Занимает 4 байта. Эквивалентен типу FLOAT(24).

Примеры числовых столбцов:

1

2

3

4

Salary MONEY,

TotalWeight DECIMAL(9,2),

Age INT,

Surplus FLOAT

Типы данных, представляющие дату и время

  • DATE: хранит даты от 0001-01-01 (1 января 0001 года) до 9999-12-31 (31 декабря 9999 года). Занимает 3 байта.
  • TIME: хранит время в диапазоне от 00:00:00.0000000 до 23:59:59.9999999. Занимает от 3 до 5 байт.
  • Может иметь форму TIME(n), где n представляет количество цифр от 0 до 7 в дробной части секунд.

  • DATETIME: хранит даты и время от 01/01/1753 до 31/12/9999. Занимает 8 байт.
  • DATETIME2: хранит даты и время в диапазоне от 01/01/0001 00:00:00.0000000 до 31/12/9999 23:59:59.9999999. Занимает от 6 до 8 байт в зависимости от точности времени.
  • Может иметь форму DATETIME2(n), где n представляет количество цифр от 0 до 7 в дробной части секунд.

  • SMALLDATETIME: хранит даты и время в диапазоне от 01/01/1900 до 06/06/2079, то есть ближайшие даты. Занимает от 4 байта.
  • DATETIMEOFFSET: хранит даты и время в диапазоне от 0001-01-01 до 9999-12-31. Сохраняет детальную информацию о времени с точностью до 100 наносекунд. Занимает 10 байт.

Распространенные форматы дат:

  • yyyy-mm-dd — 2017-07-12
  • dd/mm/yyyy — 12/07/2017
  • mm-dd-yy — 07-12-17
  • В таком формате двузначные числа от 00 до 49 воспринимаются как даты в диапазоне 2000-2049. А числа от 50 до 90 как диапазон чисел 1950 — 1999.

  • Month dd, yyyy — July 12, 2017

Распространенные форматы времени:

  • hh:mi — 13:21
  • hh:mi am/pm — 1:21 pm
  • hh:mi:ss — 1:21:34
  • hh:mi:ss:mmm — 1:21:34:12
  • hh:mi:ss:nnnnnnn — 1:21:34:1234567

Строковые типы данных

  • CHAR: хранит строку длиной от 1 до 8 000 символов. На каждый символ выделяет по 1 байту. Не подходит для многих языков, так как хранит символы не в кодировке Unicode.
  • Количество символов, которое может хранить столбец, передается в скобках. Например, для столбца с типом CHAR(10) будет выделено 10 байт. И если мы сохраним в столбце строку менее 10 символов, то она будет дополнена пробелами.

  • VARCHAR: хранит строку. На каждый символ выделяется 1 байт. Можно указать конкретную длину для столбца — от 1 до 8 000 символов, например, VARCHAR(10). Если строка должна иметь больше 8000 символов, то задается размер MAX, а на хранение строки может выделяться до 2 Гб: VARCHAR(MAX).
  • Не подходит для многих языков, так как хранит символы не в кодировке Unicode.

    В отличие от типа CHAR если в столбец с типом VARCHAR(10) будет сохранена строка в 5 символов, то в столце будет сохранено именно пять символов.

  • NCHAR: хранит строку в кодировке Unicode длиной от 1 до 4 000 символов. На каждый символ выделяется 2 байта. Например, NCHAR(15)
  • NVARCHAR: хранит строку в кодировке Unicode. На каждый символ выделяется 2 байта.Можно задать конкретный размер от 1 до 4 000 символов: . Если строка должна иметь больше 4000 символов, то задается размер MAX, а на хранение строки может выделяться до 2 Гб.

Еще два типа TEXT и NTEXT являются устаревшими и поэтому их не рекомендуется использовать. Вместо них применяются VARCHAR и NVARCHAR соответственно.

Примеры определения строковых столбцов:

1

2

Email VARCHAR(30),

Comment NVARCHAR(MAX)

Бинарные типы данных

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

Еще один бинарный тип — тип IMAGE является устаревшим, и вместо него рекомендуется применять тип VARBINARY.

Остальные типы данных

  • UNIQUEIDENTIFIER: уникальный идентификатор GUID (по сути строка с уникальным значением), который занимает 16 байт.
  • TIMESTAMP: некоторое число, которое хранит номер версии строки в таблице. Занимает 8 байт.
  • CURSOR: представляет набор строк.
  • HIERARCHYID: представляет позицию в иерархии.
  • SQL_VARIANT: может хранить данные любого другого типа данных T-SQL.
  • XML: хранит документы XML или фрагменты документов XML. Занимает в памяти до 2 Гб.
  • TABLE: представляет определение таблицы.
  • GEOGRAPHY: хранит географические данные, такие как широта и долгота.
  • GEOMETRY: хранит координаты местонахождения на плоскости.

Типы данных MS SQL Server

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

Это пример страницы регистрации веб-сайта.

Есть три поля ввода, это-

  • Имя
  • Фамилия
  • Контактный номер

Здесь Имя и Фамилия всегда будут буквенными.

Контакт всегда будет числовым.

Из приведенного выше изображения вы можете определить, что «Имя и фамилия» используются в качестве символа, а «Контактный номер» — как целое число.

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

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

Хотите пройти сертификацию по SQL? Изучайте SQL у лучших экспертов по SQL и добейтесь успеха в своей карьере благодаря сертификации Intellipaat SQL Server .

Типы данных SQL Server

Microsoft SQL Server поддерживает три основных типа данных:

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

Строковые типы данных

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

Тип данных Описание
char(n) Сохранена строка символов фиксированной длины. Максимальное  количество символов – 8 000.
варчар(н) Сохраняет строку символов переменной длины. Максимальное количество символов — 8000.
varchar (макс.) Сохраняет строку символов переменной длины. В этом случае max означает максимальный размер хранилища 2 ГБ.
текст Сохраняет строку символов переменной длины. 2 ГБ — это максимальный размер хранилища.
нчар Сохранена строка Unicode фиксированной длины. Максимальное количество символов — 4000.
нварчар Сохранена строка Unicode переменной длины. Максимальное количество символов — 4000.
nvarchar (макс.) Сохранена строка Unicode переменной длины. В этом случае max означает максимальный размер хранилища 2 ГБ.
текст Сохранена строка Unicode переменной длины. 2 ГБ — это максимальный размер хранилища.
двоичный(n) Сохраняет двоичные данные фиксированной длины. Может быть сохранено не более 8000 байтов.
переменная(n) Сохраняет двоичные данные переменной длины. Может быть сохранено не более 8000 байтов.
переменная(макс.) Сохраняет двоичные данные переменной длины. В этом случае max означает максимальный размер хранилища 2 ГБ.
изображение Сохраняет двоичные данные переменной длины. Максимальный размер хранилища составляет 8000 байт.

Получите 100% повышение!

Осваивайте самые востребованные навыки прямо сейчас!

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

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

Для хранения таких данных, как цена, зарплата и т. д., используются числовые типы данных.

Тип данных Описание
бит Разрешает сохранение значения 1, 0 или NULL.
крошечный Содержит целочисленные данные в диапазоне значений от 0 до 255.
малое целое Содержит целые числа от -32 768 до 32 767.
целое число Хранение целых чисел от -2 147 483 648 до 2 147 483 647.
большое число Содержит целочисленные данные от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.
десятичный (p,s) Сохраняются числа с заданной точностью и масштабом. Диапазон допустимых значений составляет от 1038+1 до 1038-1.
числовое (p,s) Decimal функционально эквивалентен числовому типу данных.
маленькие деньги Дает возможность точно хранить денежные суммы или суммы в валюте в диапазоне от -214 748,3648 до 214 748,3647.
деньги Позволяет точно хранить деньги или валюту в диапазоне -922 337 203 685 477,5808 и 922 337 203 685 477,5807.
с плавающей запятой (n) Сохраняет числовые значения с плавающей запятой. Допустимые диапазоны составляют от 0 и от 2,23E-308 до 1,79E+308 соответственно.
настоящий Сохраняет числовые значения с плавающей запятой. Диапазон допустимых значений составляет от 3,40E + 38 до -1,18E – 38, 0 и 1,18E – 38 до 3,40E + 38.

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

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

Узнайте больше о SQL Server из учебника по SQL Server.

Дата

Выберите тип данных Дата, если вам нужно записывать даты без связанного с ними определенного времени. Формат типа даты — ГГГГ-ММ-ДД, который содержит год, месяц и день.

Курсы, которые могут вам понравиться

Datetime

Используйте тип данных DateTime, если вы должны хранить и дату, и час. Помимо хранения дат в том же формате, что и даты (ГГГГ-ММ-ДД), тип данных Datetime также включает время в формате ЧЧ:ММ:СС:МС, вплоть до миллисекунды (МС).

Тип данных Описание
дата Сохраняет значение даты между 1 января (0001-01-01) и 31 декабря (9999-12-31). (31 декабря 9999 г.).
время Суточные значения времени хранятся с точностью до 100 наносекунд. Диапазон возможных значений: от 00:00:00,0000000 до 23:59:59,9999999.
дата-время Сохраняет значение времени и даты с точностью 3,33 миллисекунды. Datetime действителен только для дат между 1 января 1753 г. (1 января 1743 г.) и 9999-12-31. (31 декабря 9999 г.).
дата-время2 Тип данных datetime2 является расширением типа данных datetime с более широким диапазоном дат. Действительный диапазон дат Datetime2 — от 0001-01-01 (1 января) до 9999-12-31. (31 декабря 9999 г.).
малая дата и время Сохраняет значение времени и даты с точностью до минуты. Smalldatetime принимает даты между 1 января 1900 г. (1 января 1900 г.) и 06 июня 2079 г. (6 июня 2079 г.).
смещение даты и времени Аналогично datetime2, но с добавленным смещением часового пояса. Стандартный формат: чч:мм:сс[.ннннн] [+|-чч:мм]. Смещение часового пояса имеет подходящий диапазон от -14:00 до +14:00.
метка времени Тип данных версии строки в SQL Server, который автоматически создает отдельные двоичные целые числа в базе данных, называется отметкой времени. Как правило, строки таблицы имеют отметку версии с использованием версии строки.

Оставьте любой из ваших вопросов в нашем Сообществе SQL Server и начните обсуждение.

Расписание курсов

Как получить тип данных столбцов в SQL Server — Data to Fish

19 ноября 2021 г.

Вы можете использовать следующий запрос, чтобы получить тип данных ваших столбцов в SQL Server:

 SELECT
ТАБЛИЦА_КАТАЛОГ,
ТАБЛИЦА_СХЕМА,
ТАБЛИЦА_ИМЯ,
ИМЯ_СТОЛБЦА,
ТИП ДАННЫХ
ИЗ INFORMATION_SCHEMA. COLUMNS
 

Далее вы увидите 3 сценария для получения типа данных:

  • всех столбцов в конкретной базе данных
  • всех столбцов в конкретной таблице
  • для определенного столбца

Сценарий 1. Получение типа данных всех столбцов в определенной базе данных

Для начала выберите нужную базу данных.

Например, предположим, что у вас есть база данных с именем « test_database », которая включает 3 таблицы.

Затем вы можете запустить следующий запрос, чтобы получить тип данных всех столбцов в базе данных test_database :

 SELECT
ТАБЛИЦА_КАТАЛОГ,
ТАБЛИЦА_СХЕМА,
ТАБЛИЦА_ИМЯ,
ИМЯ_СТОЛБЦА,
ТИП ДАННЫХ
ИЗ INFORMATION_SCHEMA.COLUMNS
 

Вот пример результатов, которые вы можете получить, когда тип данных каждого столбца фиксируется в поле DATA_TYPE :

TABLE_CATALOG ТАБЛИЦА_СХЕМА ИМЯ ТАБЛИЦЫ ИМЯ_СТОЛБЦА ТИП_ДАННЫХ
test_database ДБО автомобилей марка нварчар
test_database ДБО автомобилей цена интервал
test_database ДБО человек имя_имя нварчар
test_database ДБО человек фамилия нварчар
test_database ДБО человек возраст интервал
test_database ДБО домашних животных имя нварчар
test_database ДБО домашних животных возраст интервал

Сценарий 2.

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

Допустим, вы хотите найти тип данных столбцов в таблице « people ». В этом случае добавьте , где TABLE_NAME = ‘people’ внизу запроса:

 SELECT
ТАБЛИЦА_КАТАЛОГ,
ТАБЛИЦА_СХЕМА,
ТАБЛИЦА_ИМЯ,
ИМЯ_СТОЛБЦА,
ТИП ДАННЫХ
ИЗ INFORMATION_SCHEMA.COLUMNS
где TABLE_NAME = "люди"
 

В таблице «люди» 3 столбца. Для первых двух столбцов (first_name и last_name) тип данных — nvarchar, , а тип данных для последнего столбца (возраст) — int для целых чисел :

TABLE_CATALOG 9 0004 ТАБЛИЦА_СХЕМА ИМЯ ТАБЛИЦЫ ИМЯ_СТОЛБЦА ТИП_ДАННЫХ
test_database ДБО человек имя_имя нварчар
test_database ДБО человек фамилия нварчар
test_database ДБО человек возраст интервал

Сценарий 3.

Получение типа данных для определенного столбца

Наконец, давайте получим тип данных для столбца first_name (под таблицей people):

 ВЫБОР
ТАБЛИЦА_КАТАЛОГ,
ТАБЛИЦА_СХЕМА,
ТАБЛИЦА_ИМЯ,
ИМЯ_СТОЛБЦА,
ТИП ДАННЫХ
ИЗ INFORMATION_SCHEMA.COLUMNS
где TABLE_NAME = "люди"
и COLUMN_NAME = 'first_name'
 

Как видите, тип данных для столбца first_name — nvarchar:

TABLE_CATALOG ТАБЛИЦА_СХЕМА ИМЯ ТАБЛИЦЫ ИМЯ_СТОЛБЦА ТИП_ДАННЫХ
test_database ДБО человек имя_имя нварчар

При желании вы также можете включить в запрос поле CHARACTER_MAXIMUM_LENGTH :

 SELECT
ТАБЛИЦА_КАТАЛОГ,
ТАБЛИЦА_СХЕМА,
ТАБЛИЦА_ИМЯ,
ИМЯ_СТОЛБЦА,
ТИП ДАННЫХ,
CHARACTER_MAXIMUM_LENGTH
ИЗ INFORMATION_SCHEMA.