Типы данных в ms sql: какие бывают и как с ними работать
Содержание
Типы данных субд ms sql Server
Тип | Описание |
Двоичные | |
binary [ ( n) ] | максимальная длина |
varbinary [( n )] | данные переменной |
image | максимальная длина |
bit | тип данных, который |
Символьные | |
сhar [(n)] | максимальная длина |
varchar [(n)] | тип переменной |
text | максимальная длина |
Символьные | |
nchar (n) | максимальная длина |
nvarchar (n) | переменной длины в |
ntext | максимальная длина |
Числовые | |
bigint | диапазон от -922 337 |
Int | диапазон от -2 147 483 |
smallint | диапазон от — 32 768 до |
tinyint | диапазон от 0 до 255 |
Числовые | |
decimal[(p[, s])] | диапазон от -1038-1 |
numeric | то же, что и decimal |
float [ ( n ) ] | диапазон от |
real | числа с 7-значной |
Тип дата и | |
datetime | диапазон от 1.01.1753 |
smalldatetime | диапазон от 1.01.1900 |
Денежный | |
money | диапазон от -922 337 |
smallmoney | диапазон от -214 |
Данные | |
timestamp | счетчик, автоматически |
uniqueidentifier | Тип, который содержит |
sql_variant | тип, который сохраняет |
sysname | тип — синоним nvarchar, |
Некоторые
характеристики SQL-сервера MS
SQL
Server
приведены в табл.2.
Таблица 2
Характеристика | Максимальное |
Размер базы данных | 1 |
Количество объектов | 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 байт в зависимости от количества чисел после запятой.
- 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 байт в зависимости от дробной части.
- REAL: хранит числа от –340E+38 to 3.40E+38. Занимает 4 байта. Эквивалентен типу FLOAT(24).
Данный тип может принимать два параметра precision и scale: DECIMAL(precision, scale).
Параметр precision представляет максимальное количество цифр, которые может хранить число. Это значение должно находиться в диапазоне от 1 до 38. По умолчанию оно равно 18.
Параметр scale представляет максимальное количество цифр, которые может содержать число после запятой. Это значение должно находиться в диапазоне от 0 до значения параметра precision. По умолчанию оно равно 0.
Может иметь форму опредеения в виде FLOAT(n), где n представляет число бит, которые используются для хранения десятичной части числа (мантиссы). По умолчанию n = 53.
Примеры числовых столбцов:
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 байт.
- 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 байт в зависимости от точности времени.
- SMALLDATETIME: хранит даты и время в диапазоне от 01/01/1900 до 06/06/2079, то есть ближайшие даты. Занимает от 4 байта.
- DATETIMEOFFSET: хранит даты и время в диапазоне от 0001-01-01 до 9999-12-31. Сохраняет детальную информацию о времени с точностью до 100 наносекунд. Занимает 10 байт.
Может иметь форму TIME(n), где n представляет количество цифр от 0 до 7 в дробной части секунд.
Может иметь форму DATETIME2(n), где n представляет количество цифр от 0 до 7 в дробной части секунд.
Распространенные форматы дат:
- yyyy-mm-dd — 2017-07-12
- dd/mm/yyyy — 12/07/2017
- mm-dd-yy — 07-12-17
- Month dd, yyyy — July 12, 2017
В таком формате двузначные числа от 00 до 49 воспринимаются как даты в диапазоне 2000-2049. А числа от 50 до 90 как диапазон чисел 1950 — 1999.
Распространенные форматы времени:
- 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.
- VARCHAR: хранит строку. На каждый символ выделяется 1 байт. Можно указать конкретную длину для столбца — от 1 до 8 000 символов, например, VARCHAR(10). Если строка должна иметь больше 8000 символов, то задается размер MAX, а на хранение строки может выделяться до 2 Гб: VARCHAR(MAX).
- NCHAR: хранит строку в кодировке Unicode длиной от 1 до 4 000 символов. На каждый символ выделяется 2 байта. Например, NCHAR(15)
- NVARCHAR: хранит строку в кодировке Unicode. На каждый символ выделяется 2 байта.Можно задать конкретный размер от 1 до 4 000 символов: . Если строка должна иметь больше 4000 символов, то задается размер MAX, а на хранение строки может выделяться до 2 Гб.
Количество символов, которое может хранить столбец, передается в скобках. Например, для столбца с типом CHAR(10) будет выделено 10 байт. И если мы сохраним в столбце строку менее 10 символов, то она будет дополнена пробелами.
Не подходит для многих языков, так как хранит символы не в кодировке Unicode.
В отличие от типа CHAR если в столбец с типом VARCHAR(10) будет сохранена строка в 5 символов, то в столце будет сохранено именно пять символов.
Еще два типа 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.