Sql

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

Содержание

Сопоставления типов данных SQL Server — ADO.NET

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

В SQL Server и . NET Framework используются различные системы типов. Например, максимальная разрядность структуры .NET Framework Decimal составляет 28, в то время как максимальная разрядность десятичных и числовых типов данных SQL Server — 38. чтобы обеспечить целостность данных при чтении и записи данных, SqlDataReader предоставляет SQL Server определенные методы доступа, которые возвращают объекты System.Data.SqlTypes , а также методы доступа, возвращающие платформа .NET Framework типы. Типы данных SQL Server и .NET Framework также представлены перечислениями в классах DbType и SqlDbType, которые можно использовать при указании типов данных SqlParameter.

В следующей таблице приведены выводимый тип .NET Framework DbType и перечисления SqlDbType, а также методы доступа для SqlDataReader.

Тип ядра СУБД SQL ServerТип платформы .NET FrameworkПеречисление SqlDbTypeТипизированный метод доступа SqlDataReader SqlTypes Перечисление DbTypeТипизированный метод доступа SqlDataReader DbType
BIGINTInt64BigIntGetSqlInt64Int64GetInt64
binaryByte[]VarBinaryGetSqlBinaryBinaryGetBytes
bitЛогическоеBitGetSqlBooleanBooleanGetBoolean
charСтрока

Char[]

CharGetSqlStringAnsiStringFixedLength,

String

GetString

GetChars

date 1

(SQL Server 2008 и более поздние версии)

Дата и времяDateDateGetSqlDateTimeDateDateGetDateTime
DATETIMEДата и времяDateTimeGetSqlDateTimeDateTimeGetDateTime
datetime2

(SQL Server 2008 и более поздние версии)

Дата и времяDateTime2НетDateTime2GetDateTime
datetimeoffset

(SQL Server 2008 и более поздние версии)

DateTimeOffsetDateTimeOffsetнетDateTimeOffsetGetDateTimeOffset
DecimalDecimalDecimalGetSqlDecimalDecimalGetDecimal
FILESTREAM attribute (varbinary(max))Byte[]VarBinaryGetSqlBytesBinaryGetBytes
FLOATDoubleFloatGetSqlDoubleDoubleGetDouble
ИзображениеByte[]BinaryGetSqlBinaryBinaryGetBytes
INTInt32IntGetSqlInt32Int32GetInt32
moneyDecimalMoney
GetSqlMoney
DecimalGetDecimal
ncharСтрока

Char[]

NCharGetSqlStringStringFixedLengthGetString

GetChars

ntextСтрока

Char[]

NTextGetSqlStringStringGetString

GetChars

NUMERICDecimalDecimalGetSqlDecimalDecimalGetDecimal
nvarcharСтрока

Char[]

NVarCharGetSqlStringStringGetString

GetChars

realОдинRealGetSqlSingleSingleGetFloat
rowversionByte[]TimestampGetSqlBinaryBinaryGetBytes
smalldatetimeДата и времяDateTimeGetSqlDateTimeDateTimeGetDateTime
smallintInt16SmallIntGetSqlInt16Int16GetInt16
smallmoneyDecimalSmallMoneyGetSqlMoneyDecimalGetDecimal
sql_variantОбъект 2VariantGetSqlValueGetSqlValueObjectGetValueGetValue
textСтрока

Char[]

TextGetSqlStringStringGetString

GetChars

time

(SQL Server 2008 и более поздние версии)

TimeSpanTimeнетTimeGetDateTime
TIMESTAMPByte[]TimestampGetSqlBinaryBinaryGetBytes
tinyintByteTinyIntGetSqlByteByteGetByte
UNIQUEIDENTIFIERGuidUniqueIdentifierGetSqlGuidGuidGetGuid
varbinaryByte[]VarBinaryGetSqlBinaryBinaryGetBytes
varcharСтрока

Char[]

VarCharGetSqlStringAnsiString, StringGetString

GetChars

xmlXmlXmlGetSqlXmlXmlнет

1 нельзя задать для SqlDbType. Date свойства значение SqlParameter .
2 используйте конкретный типизированный метод доступа, если вы знакомы с базовым типом .

документация по SQL Server

Дополнительные сведения о типах данных SQL Server см. в статье Типы данных (Transact-SQL).

См. также

  • Типы данных SQL Server и ADO.NET
  • Двоичные данные и данные больших значений SQL Server
  • Сопоставления типов данных в ADO.NET
  • Настройка параметров и типы данных параметров
  • Общие сведения об ADO.NET

Postgres Pro Standard : Документация: 10: Глава 8. Типы данных : Компания Postgres Professional

RU
EN
RU EN

Содержание

8.1. Числовые типы
8.1.1. Целочисленные типы
8.1.2. Числа с произвольной точностью
8.1.3. Типы с плавающей точкой
8.1.4. Последовательные типы
8. 2. Денежные типы
8.3. Символьные типы
8.4. Двоичные типы данных
8.4.1. Шестнадцатеричный формат bytea
8.4.2. Формат спецпоследовательностей bytea
8.5. Типы даты/времени
8.5.1. Ввод даты/времени
8.5.2. Вывод даты/времени
8.5.3. Часовые пояса
8.5.4. Ввод интервалов
8.5.5. Вывод интервалов
8.6. Логический тип
8.7. Типы перечислений
8.7.1. Объявление перечислений
8.7.2. Порядок
8.7.3. Безопасность типа
8.7.4. Тонкости реализации
8.8. Геометрические типы
8.8.1. Точки
8.8.2. Прямые
8.8.3. Отрезки
8.8.4. Прямоугольники
8.8.5. Пути
8.8.6. Многоугольники
8.8.7. Окружности
8.9. Типы, описывающие сетевые адреса
8.9.1. inet
8.9.2. cidr
8.9.3. Различия inet и cidr
8. 9.4. macaddr
8.9.5. macaddr8
8.10. Битовые строки
8.11. Типы, предназначенные для текстового поиска
8.11.1. tsvector
8.11.2. tsquery
8.12. Тип UUID
8.13. Тип XML
8.13.1. Создание XML-значений
8.13.2. Обработка кодировки
8.13.3. Обращение к XML-значениям
8.14. Типы JSON
8.14.1. Синтаксис вводимых и выводимых значений JSON
8.14.2. Эффективная организация документов JSON
8.14.3. Проверки на вхождение и существование jsonb
8.14.4. Индексация jsonb
8.15. Массивы
8.15.1. Объявления типов массивов
8.15.2. Ввод значения массива
8.15.3. Обращение к массивам
8.15.4. Изменение массивов
8.15.5. Поиск значений в массивах
8.15.6. Синтаксис вводимых и выводимых значений массива
8. 16. Составные типы
8.16.1. Объявление составных типов
8.16.2. Конструирование составных значений
8.16.3. Обращение к составным типам
8.16.4. Изменение составных типов
8.16.5. Использование составных типов в запросах
8.16.6. Синтаксис вводимых и выводимых значений составного типа
8.17. Диапазонные типы
8.17.1. Встроенные диапазонные типы
8.17.2. Примеры
8.17.3. Включение и исключение границ
8.17.4. Неограниченные (бесконечные) диапазоны
8.17.5. Ввод/вывод диапазонов
8.17.6. Конструирование диапазонов
8.17.7. Типы дискретных диапазонов
8.17.8. Определение новых диапазонных типов
8.17.9. Индексация
8.17.10. Ограничения для диапазонов
8.18. Идентификаторы объектов
8.19. Тип pg_lsn
8.20. Псевдотипы

Postgres Pro предоставляет пользователям богатый ассортимент встроенных типов данных. Кроме того, пользователи могут создавать свои типы в Postgres Pro, используя команду CREATE TYPE.

Таблица 8.1 содержит все встроенные типы данных общего пользования. Многие из альтернативных имён, приведённых в столбце «Псевдонимы», используются внутри Postgres Pro по историческим причинам. В этот список не включены некоторые устаревшие типы и типы для внутреннего применения.

Таблица 8.1. Типы данных

ИмяПсевдонимыОписание
bigintint8знаковое целое из 8 байт
bigserialserial8восьмибайтное целое с автоувеличением
bit [ (n) ] битовая строка фиксированной длины
bit varying [ (n) ]varbit [ (n) ]битовая строка переменной длины
booleanboolлогическое значение (true/false)
box прямоугольник в плоскости
bytea двоичные данные («массив байт»)
character [ (n) ]char [ (n) ]символьная строка фиксированной длины
character varying [ (n) ]varchar [ (n) ]символьная строка переменной длины
cidr сетевой адрес IPv4 или IPv6
circle круг в плоскости
date календарная дата (год, месяц, день)
double precisionfloat8число двойной точности с плавающей точкой (8 байт)
inet адрес узла IPv4 или IPv6
integerint, int4знаковое четырёхбайтное целое
interval [ поля ] [ (p) ] интервал времени
json текстовые данные JSON
jsonb двоичные данные JSON, разобранные
line прямая в плоскости
lseg отрезок в плоскости
macaddr MAC-адрес
macaddr8 адрес MAC (Media Access Control) (в формате EUI-64)
money денежная сумма
numeric [ (p, s) ]decimal [ (p, s) ]вещественное число заданной точности
path геометрический путь в плоскости
pg_lsn последовательный номер в журнале Postgres Pro
point геометрическая точка в плоскости
polygon замкнутый геометрический путь в плоскости
realfloat4число одинарной точности с плавающей точкой (4 байта)
smallintint2знаковое двухбайтное целое
smallserialserial2двухбайтное целое с автоувеличением
serialserial4четырёхбайтное целое с автоувеличением
text символьная строка переменной длины
time [ (p) ] [ without time zone ] время суток (без часового пояса)
time [ (p) ] with time zonetimetzвремя суток с учётом часового пояса
timestamp [ (p) ] [ without time zone ] дата и время (без часового пояса)
timestamp [ (p) ] with time zonetimestamptzдата и время с учётом часового пояса
tsquery запрос текстового поиска
tsvector документ для текстового поиска
txid_snapshot снимок идентификатора транзакций
uuid универсальный уникальный идентификатор
xml XML-данные

Совместимость

В стандарте SQL описаны следующие типы (или их имена): bigint, bit, bit varying, boolean, char, character varying, character, varchar, date, double precision, integer, interval, numeric, decimal, real, smallint, time (с часовым поясом и без), timestamp (с часовым поясом и без), xml.

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

База Данных MySQL типы данных MySQL Server MS Access

❮ Назад Дальше ❯


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


Типы данных 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.


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

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

Тип данныхОписаниеМаксимальный размерХранения
char(n)Фиксированная ширина символьной строки8,000 СимволовОпределенная ширина
varchar(n)Переменная ширина символьная строка8,000 Символов2 байта + количество символов
varchar(max)Переменная ширина символьная строка1,073,741,824 Символов2 байта + количество символов
textПеременная ширина символьная строка2GB of text data4 байта + количество символов
ncharФиксированная ширина строки Юникода4,000 СимволовОпределенная ширина x 2
nvarcharПеременная ширина Юникод строка4,000 Символов 
nvarchar(max)Переменная ширина Юникод строка536,870,912 Символов 
ntextПеременная ширина Юникод строка2GB of text data 
binary(n)Фиксированная ширина двоичной строки8,000 bytes 
varbinaryПеременная ширина двоичная строка8,000 bytes 
varbinary(max)Переменная ширина двоичная строка2GB 
imageПеременная ширина двоичная строка2GB 

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

Тип данныхОписаниеХранения
bitЦелое число, которое может быть 0, 1 или null 
tinyintПозволяет целые числа от 0 до 2551 byte
smallintПозволяет целые числа между -32 768 и 32 7672 bytes
intПозволяет целые числа между -2 147 483 648 и 2 147 483 6474 bytes
bigintПозволяет целые числа между -9223372036854775808 и 9 223 372 036 854 775 8078 bytes
decimal(p,s)Fixed precision and scale numbers. 38 – 1.

Параметр p указывает максимальное общее количество цифр, которые могут быть сохранены (как слева, так и справа от десятичной запятой). p должно быть значением от 1 до 38. Значение по умолчанию — 18.

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

5-17 bytes
smallmoneyДенежные данные от-214 748,3648 до 214 748,36474 bytes
moneyДенежные данные от-922 337 203 685 477,5808 до 922 337 203 685 477,58078 bytes
float(n)Плавающая точность данных чисел от-1.79 e + 308 до 1.79 e + 308.

Параметр n указывает, должно ли поле содержать 4 или 8 байт. float (24) содержит 4-байтное поле и float (53) содержит 8-байтное поле. Значение по умолчанию n — 53.

4 or 8 bytes
realПлавающие данные о точности чисел от-38 e +4 bytes

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

Тип данныхОписаниеХранения
datetimeС 1 января 1753 по 31 декабря 9999 с точностью 3,33 миллисекунд8 bytes
datetime2С 1 января 0001 по 31 декабря 9999 с точностью 100.6-8 bytes
smalldatetimeС 1 января 1900 по 6 июня 2079 с точностью до 1 минуты4 bytes
dateХранить только дату. С 1 января 0001 по 31 декабря 99993 bytes
timeХранить время только для точности 100-ти секунд3-5 bytes
datetimeoffsetТак же, как datetime2 с добавлением смещения часового пояса8-10 bytes
timestampХранит уникальный номер, который обновляется каждый раз при создании или изменении строки. Значение timestamp основывается на внутренних часах и не соответствует реальному времени. Каждая таблица может иметь только одну переменную timestamp 

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

Тип данныхОписание
sql_variantХранит до 8 000 байт данных различных типов данных, за исключением текста, ntext и отметки времени
uniqueidentifierХранит глобальный уникальный идентификатор (GUID)
xmlХранит XML-форматированные данные. Максимум 2 ГБ
cursorХранит ссылку на курсор, используемый для операций с базой данных
tableХранит результирующий набор для последующей обработки

Типы данных Microsoft Access

Тип данныхОписаниеХранения
TextИспользуется для текста или комбинаций текста и чисел. 255 символов максимум 
MemoMEMO используется для больших объемов текста. Хранит до 65 536 символов. Примечание: Поле MEMO нельзя сортировать. Тем не менее, они доступны для поиска 
ByteПозволяет целые числа от 0 до 2551 byte
IntegerПозволяет целые числа между-32 768 и 32 7672 bytes
LongПозволяет целые числа между-2 147 483 648 и 2 147 483 6474 bytes
SingleОдинарная точность с плавающей запятой. Будет обрабатывать большинство десятичных знаков4 bytes
DoubleДвойная точность с плавающей запятой. Будет обрабатывать большинство десятичных знаков8 bytes
CurrencyИспользовать для валюты. Вмещает до 15 цифр целых долларов, плюс 4 десятичных знака. Совет: Вы можете выбрать валюту страны для использования8 bytes
AutoNumberПоля автонумерации автоматически дают каждой записи свой номер, обычно начиная с 14 bytes
Date/TimeИспользовать для дат и времени8 bytes
Yes/NoЛогическое поле может отображаться как Yes/No, true/false или вкл/выкл. В коде используйте Константы true и false (эквивалентно-1 и 0). Примечание: Значения NULL не разрешены в полях «да/нет»1 bit
Ole ObjectМожет хранить изображения, аудио, видео, или другие BLOB-объекты (двоичные больших объектов)up to 1GB
HyperlinkСодержать ссылки на другие файлы, включая веб-страницы 
Lookup WizardПозволяет ввести список опций, которые затем можно выбрать из раскрывающегося списка4 bytes

❮ Назад Дальше ❯

БД

Типы данных языка SQL, определенные стандартом

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

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

Таблица 2.1.
Тип данных Объявления
Символьный CHAR | VARCHAR
Битовый BIT | BIT VARYING
Точные числа NUMERIC | DECIMAL | INTEGER | SMALLINT
Округленные числа FLOAT | REAL | DOUBLE PRECISION
Дата/время DATE | TIME | TIMESTAMP
Интервал INTERVAL

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

Символьные данные состоят из последовательности символов, входящих в определенный создателями СУБД набор символов. Поскольку наборы символов являются специфическими для различных диалектов языка SQL, перечень символов, которые могут входить в состав значений данных символьного типа, также зависит от конкретной реализации. Чаще всего используются наборы символов ASCII и EBCDIC. Для определения данных символьного типа используется следующий формат:

<символьный_тип>::=
{ CHARACTER [ VARYING][длина] | [CHAR | 
VARCHAR][длина]}

При определении столбца с символьным типом данных параметр длина применяется для указания максимального количества символов, которые могут быть помещены в данный столбец (по умолчанию принимается значение 1). Символьная строка может быть определена как имеющая фиксированную или переменную (VARYING) длину. Если строка определена с фиксированной длиной значений, то при вводе в нее меньшего количества символов значение дополняется до указанной длины пробелами, добавляемыми справа. Если строка определена с переменной длиной значений, то при вводе в нее меньшего количества символов в базе данных будут сохранены только введенные символы, что позволит достичь определенной экономии внешней памяти.

Битовые данные

Битовый тип данных используется для определения битовых строк, т.е. последовательности двоичных цифр (битов), каждая из которых может иметь значение либо 0, либо 1. Данные битового типа определяются при помощи следующего формата:

<битовый_тип>::=
BIT [VARYING][длина]
Точные числа

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

<фиксированный_тип>::=
{NUMERIC[точность[,масштаб]|{DECIMAL|DEC}
   [точность[, масштаб]
| {INTEGER |INT}| SMALLINT}

Типы NUMERIC и DECIMAL предназначены для хранения чисел в десятичном формате. По умолчанию длина дробной части равна нулю, а принимаемая по умолчанию точность зависит от реализации. Тип INTEGER (INT) используется для хранения больших положительных или отрицательных целых чисел. Тип SMALLINT – для хранения небольших положительных или отрицательных целых чисел; в этом случае расход внешней памяти существенно сокращается.

Округленные числа

Тип округленных чисел применяется для описания данных, которые нельзя точно представить в компьютере, в частности действительных чисел. Округленные числа или числа с плавающей точкой представляются в научной нотации, при которой число записывается с помощью мантиссы, умноженной на определенную степень десяти (порядок), например: 10Е3, +5.2Е6, -0.2Е-4. Для определения данных вещественного типа используется формат:

<вещественный_тип>::=
{ FLOAT [точность]| REAL |
   DOUBLE PRECISION}

Параметр точность задает количество значащих цифр мантиссы. Точность типов REAL и DOUBLE PRECISION зависит от конкретной реализации.

Дата и время

Тип данных «дата/время» используется для определения моментов времени с некоторой установленной точностью. Стандарт SQL поддерживает следующий формат:

<тип_даты/времени>::=
{DATE | TIME[точность][WITH TIME ZONE]| 
   TIMESTAMP[точность][WITH TIME ZONE]}

Тип данных DATE используется для хранения календарных дат, включающих поля YEAR (год), MONTH (месяц) и DAY (день). Тип данных TIME – для хранения отметок времени, включающих поля HOUR (часы), MINUTE (минуты) и SECOND (секунды). Тип данных TIMESTAMP – для совместного хранения даты и времени. Параметр точность задает количество дробных десятичных знаков, определяющих точность сохранения значения в поле SECOND. Если этот параметр опускается, по умолчанию его значение для столбцов типа TIME принимается равным нулю (т.е. сохраняются целые секунды), тогда как для полей типа TIMESTAMP он принимается равным 6 (т. е. отметки времени сохраняются с точностью до миллисекунд). Наличие ключевого слова WITH TIME ZONE определяет использование полей TIMEZONE HOUR и TIMEZONE MINUTE, тем самым задаются час и минуты сдвига зонального времени по отношению к универсальному координатному времени (Гринвичскому времени).

Данные типа INTERVAL используются для представления периодов времени.

Понятие домена

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

Стандарт SQL позволяет определить домен с помощью следующего оператора:

<определение_домена>::=
   CREATE DOMAIN имя_домена [AS]
      тип_данных
   [ DEFAULT значение]
   [ CHECK (допустимые_значения)]

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

Удаление доменов из базы данных выполняется с помощью оператора:

DROP DOMAIN имя_домена [ RESTRICT |
   CASCADE]

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

Альтернативой доменам в среде SQL Server являются пользовательские типы данных.

Типы данных, используемые в SQL-сервере

Системные типы данных

Один из основных моментов процесса создания таблицы – определение типов данных для ее полей. Тип данных поля таблицы определяет тип информации, которая будет размещаться в этом поле. Понятие типа данных в SQL Server полностью адекватно понятию типа данных в современных языках программирования. SQL-сервер поддерживает большое число различных типов данных: текстовые, числовые, двоичные (см. таблицу 2.2).

Таблица 2.2.
image smalldatetime bit binary
text real decimal char
uniqueidentifier money numeric timestamp
tinyint datetime smallmoney nvarchar
smallint float varbinary nchar
int ntext varchar sysname

Приведем краткий обзор типов данных SQL Server.

Для хранения символьной информации используются символьные типы данных, к которым относятся CHAR (длина), VARCHAR (длина), NCHAR (длина), NVARCHAR (длина). Последние два предназначены для хранения символов Unicode. Максимальное значение длины ограничено 8000 знаками (4000 – для символов Unicode).

Хранение символьных данных большого объема (до 2 Гб) осуществляется при помощи текстовых типов данных TEXT и NTEXT.

К целочисленным типам данных относятся INT (INTEGER), SMALLINT, TINYINT, BIGINT. Для хранения данных целочисленного типа используется, соответственно, 4 байта (диапазон от -231 до 231-1), 2 байта (диапазон от -215 до 215-1), 1 байт (диапазон от 0 до 255) или 8 байт (диапазон от -263 до 263-1). Объекты и выражения целочисленного типа могут применяться в любых математических операциях.

Числа, в составе которых есть десятичная точка, называются нецелочисленными. Нецелочисленные данные разделяются на два типа – десятичные и приблизительные.

К десятичным типам данных относятся типы DECIMAL [(точность[,масштаб])] или DEC и NUMERIC [(точность[,масштаб])]. Типы данных DECIMAL и NUMERIC позволяют самостоятельно определить формат точности числа с плавающей запятой. Параметр точность указывает максимальное количество цифр вводимых данных этого типа (до и после десятичной точки в сумме), а параметр масштаб – максимальное количество цифр, расположенных после десятичной точки. В обычном режиме сервер позволяет вводить не более 28 цифр, используемых в типах DECIMAL и NUMERIC (от 2 до 17 байт).

К приблизительным типам данных относятся FLOAT (точность до 15 цифр, 8 байт) и REAL (точность до 7 цифр, 4 байта). Эти типы представляют данные в формате с плавающей запятой, т.е. для представления чисел используется мантисса и порядок, что обеспечивает одинаковую точность вычислений независимо от того, насколько мало или велико значение.

Для хранения информации о дате и времени предназначены такие типы данных, как DATETIME и SMALLDATETIME, использующие для представления даты и времени 8 и 4 байта соответственно.

Типы данных MONEY и SMALLMONEY делают возможным хранение информации денежного типа; они обеспечивают точность значений до 4 знаков после запятой и используют 8 и 4 байта соответственно.

Тип данных BIT позволяет хранить один бит, который принимает значения 0 или 1.

В среде SQL Server реализован ряд специальных типов данных.

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

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

Тип данных SYSNAME предназначен для идентификаторов объектов.

Тип данных SQL_VARIANT позволяет хранить значения любого из поддерживаемых SQL Server типов данных за исключением TEXT, NTEXT, IMAGE и TIMESTAMP.

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

Тип данных CURSOR нужен для работы с такими объектами, как курсоры, и может быть востребован только для переменных и параметров хранимых процедур. Курсоры SQL Server представляют собой механизм обмена данными между сервером и клиентом. Курсор позволяет клиентским приложениям работать не с полным набором данных, а лишь с одной или несколькими строками. Примеры использования данных типа CURSOR мы рассмотрим в лекциях, посвященных курсорам и хранимым процедурам.

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

В системе 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 являются выражения, операторы, переменные, управляющие конструкции.

Выражения

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

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

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

Переменные

В среде SQL Server существует несколько способов передачи данных между командами. Один из них – передача данных через локальные переменные. Прежде чем использовать какую-либо переменную, ее следует объявить. Объявление переменной выполняется командой DECLARE, имеющей следующий формат:

DECLARE {@имя_переменной тип_данных }
   [,...n]

Значения переменной можно присвоить посредством команд SET и SELECT. С помощью команды SELECT переменной можно присвоить не только конкретное значение, но и результат вычисления выражения.

DECLARE @a INT
SET @a=10

Пример 2.4. Использование SET для присваивания значения локальной переменной.

DECLARE @k INT
SELECT @k=SUM(количество) FROM Товар

Пример 2. 5. Использование SELECT для присваивания локальной переменной результата вычислений.

Управляющие конструкции SQL

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

Группировка двух и более команд в единый блок осуществляется с использованием ключевых слов BEGIN и END:

<блок_операторов>::=
BEGIN
{ sql_оператор | блок_операторов }
END

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

Некоторые команды SQL не должны выполняться вместе с другими командами (речь идет о командах резервного копирования, изменения структуры таблиц, хранимых процедур и им подобных), поэтому их совместное включение в конструкцию BEGIN. ..END не допускается.

Нередко определенная часть программы должна выполняться только при реализации некоторого логического условия. Синтаксис условного оператора показан ниже:

<условный_оператор>::=
IF лог_выражение
  { sql_оператор | блок_операторов }
[ ELSE
  {sql_оператор | блок_операторов } ]

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

<оператор_цикла>::=
WHILE лог_выражение
   { sql_оператор | блок_операторов }
   [ BREAK ]
   { sql_оператор | блок_операторов }
   [ CONTINUE ]

Цикл можно принудительно остановить, если в его теле выполнить команду BREAK. Если же нужно начать цикл заново, не дожидаясь выполнения всех команд в теле, необходимо выполнить команду CONTINUE.

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

<оператор_поливариантных_ветвлений>::=
CASE входное_значение
WHEN {значение_для_сравнения |
   лог_выражение } THEN
   вых_выражение [,. ..n]
[ ELSE иначе_вых_значение ]
END

Если входное значение и значение для сравнения совпадают, то конструкция возвращает выходное значение. Если же значение входного параметра не найдено ни в одной из строк WHEN…THEN, то тогда будет возвращено значение, указанное после ключевого слова ELSE.

Основные объекты структуры базы данных SQL-сервера

Рассмотрим логическую структуру базы данных.

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

Логически данные в SQL Server организованы в виде объектов. К основным объектам базы данных SQL Server относятся объекты, представленные в таблице 2. 4.

Таблица 2.4.
Tables Таблицы базы данных, в которых хранятся собственно данные
Views Просмотры (виртуальные таблицы) для отображения данных из таблиц
Stored Procedures Хранимые процедуры
Triggers Триггеры – специальные хранимые процедуры, вызываемые при изменении данных в таблице
User Defined function Создаваемые пользователем функции
Indexes Индексы – дополнительные структуры, призванные повысить производительность работы с данными
User Defined Data Types Определяемые пользователем типы данных
Keys Ключи – один из видов ограничений целостности данных
Constraints Ограничение целостности – объекты для обеспечения логической целостности данных
Users Пользователи, обладающие доступом к базе данных
Roles Роли, позволяющие объединять пользователей в группы
Rules Правила базы данных, позволяющие контролировать логическую целостность данных
Defaults Умолчания или стандартные установки базы данных

Приведем краткий обзор основных объектов баз данных.

Таблицы

Все данные в SQL содержатся в объектах, называемых таблицами. Таблицы представляют собой совокупность каких-либо сведений об объектах, явлениях, процессах реального мира. Никакие другие объекты не хранят данные, но они могут обращаться к данным в таблице. Таблицы в SQL имеют такую же структуру, что и таблицы всех других СУБД и содержат:

  • cтроки; каждая строка (или запись) представляет собой совокупность атрибутов (свойств) конкретного экземпляра объекта;
  • cтолбцы; каждый столбец (поле) представляет собой атрибут или совокупность атрибутов. Поле строки является минимальным элементом таблицы. Каждый столбец в таблице имеет определенное имя, тип данных и размер.
Представления

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

Хранимые процедуры

Хранимые процедуры представляют собой группу команд SQL, объединенных в один модуль. Такая группа команд компилируется и выполняется как единое целое.

Триггеры

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

Функции

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

Индексы

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

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

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

Ограничения целостности

Ограничения целостности – механизм, обеспечивающий автоматический контроль соответствия данных установленным условиям (или ограничениям). Ограничения целостности имеют приоритет над триггерами, правилами и значениями по умолчанию. К ограничениям целостности относятся: ограничение на значение NULL, проверочные ограничения, ограничение уникальности (уникальный ключ), ограничение первичного ключа и ограничение внешнего ключа. Последние три ограничения тесно связаны с понятием ключей.

Правила

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

Умолчания

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

Типы данных SQL Server, которые поддерживаются ArcGIS—Справка

  • Текстовые типы данных
  • Геометрические типы данных
  • Растровые типы данных

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

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

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

В первом столбце в следующей таблице перечислены типы данных ArcGIS. Во втором столбце перечислены SQL Server типы данных, создаваемые ArcGIS. В третьем столбце показано, какие другие SQL Server типы данных (если имеются) сопоставляются типам данных ArcGIS при просмотре таблицы, созданной вне ArcGIS. В последнем столбце при необходимости предоставляется дополнительная информация.

Типы данных ArcGISСоздаваемые типы данных SQL ServerДругие типы данных SQL Server, которые можно просматриватьПримечания

BLOB

VARBINARY(MAX)

BINARY, IMAGE, TIMESTAMP, VARBINARY(n)

DATE

DATETIME2(7)

DATETIME2(n), DATETIME, SMALLDATETIME

DOUBLE

NUMERIC(p,s)

DECIMAL, FLOAT, MONEY, SMALLMONEY

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

FLOAT

NUMERIC(p,s)

REAL

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

GEOMETRY

  • INT
  • GEOMETRY
  • GEOGRAPHY

В многопользовательской базе геоданных тип создаваемых данных SQL Server зависит от параметра GEOMETRY_STORAGE ключевого слова конфигурации, использующегося при создании класса пространственных объектов. SDEBINARY = INT; GEOMETRY = столбец GEOMETRY; GEOGRAPHY = столбец GEOGRAPHY.

В базе данных вы выбираете использование GEOMETRY или GEOGRAPHY при создании класса пространственных объектов.

В настольных базах геоданных и базах геоданных рабочих групп используется тип GEOMETRY.

ArcGIS не поддерживает следующие подтипы GEOMETRY:

  • CircularString
  • CompoundCurve
  • CurvePolygon
  • GeometryCollection

GLOBAL ID

UNIQUEIDENTIFIER

Поддерживается только базами геоданных.

GUID

UNIQUEIDENTIFIER

LONG INTEGER

INT

RASTER

BLOB, INT

Растровые типы данных поддерживаются только базами геоданных.

В настольных базах геоданных и базах геоданных рабочих групп растры создаются в качестве данных типа BLOB.

В многопользовательских базах геоданных тип создаваемых данных SQL Server зависит от ключевого слова конфигурации, использующегося при создании набора растровых данных или набора данных мозаики. Если параметр RASTER_STORAGE ключевого слова установлен на RASTERBLOB, создается столбец BLOB, а если он установлен на BINARY – создается столбец INT.

OBJECT ID

INT(4) when created in an enterprise geodatabase

INTEGER with IDENTITY property when created in a database

В ArcGIS тип ObjectID соответствует столбцу с идентификаторами записей (ID) таблицы (или класса объектов). В таблице может быть только один.

SHORT INTEGER

SMALLINT

BIT, TINYINT

TEXT

VARCHAR, NVARCHAR, VARCHAR(MAX), NVARCHAR(MAX)

CHAR, NCHAR

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

Если вы создаете поле VARCHAR или VARCHAR(MAX) в базе данных SQL Server, то оно будет совмещено с типом данных ArcGIS TEXT при просмотре в ArcGIS. Если вы создадите поле TEXT в базе данных SQL Server в ArcGIS, то будет использоваться NVARCHAR или NVARCHAR(MAX).

В случае если параметр конфигурации UNICODE_STRING в многопользовательской базе геоданных равен FALSE, а длина текстового поля – 7999 символов и менее, используется VARCHAR.

Если параметр конфигурации UNICODE_STRING имеет значение FALSE, а длина текстового поля больше или равна 8000 символов, используется VARCHAR(MAX).

Если параметр конфигурации UNICODE_STRING имеет значение TRUE, а длина текстового поля меньше или равна 3 999 знаков, используется NVARCHAR.

Если параметр конфигурации UNICODE_STRING имеет значение TRUE, а длина текстового поля больше или равна 4 000 символов, используется NVARCHAR(MAX).

Геометрические типы данных

Как отмечено в таблице, ArcGIS создает и может работать с тремя типами данных геометрии в SQL Server: сжатый двоичный формат, SQL Server Geometry и SQL Server Geography.

Сжатый бинарный формат

Тип Esri compressed binary использует механизм бинарного хранения для хранения геометрии пространственных объектов. Хранение геометрии Compressed binary может использоваться только в базах геоданных. Сжатый бинарный класс пространственных объектов состоит из трех таблиц: бизнес-таблицы, таблицы объектов и таблицы пространственного индекса.

После проверки геометрии клиентское приложение сжимает и отсылает ее в базу геоданных, где она хранится в сжатом бинарном формате в таблице пространственных объектов, или F-таблице. Сжатие геометрии клиентским приложением снимает эту задачу с сервера базы данных и сокращает время на пересылку этой геометрии. Оно также обеспечивает эффективное хранение и извлечение пространственных данных, экономя пространство, необходимое для хранения данных, на целых 40 процентов.

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

Отношения между бизнес-таблицей и таблицей объектов управляются через пространственный столбец и столбец ID объектов (FID). Данный ключ, который поддерживается ArcGIS, является уникальным.

SQL Server Geometry

Здесь представлено краткое описание типа Microsoft Geometry. Более подробные сведения о типе Geometry и его использовании можно найти в документации к Microsoft SQL Server.

  • Тип Microsoft Geometry поддерживает любую систему координат X/Y.
  • Для отображения и пространственных сравнений используются вычисления на плоскости (Евклидовы) и прямолинейная интерполяция между вершинами.
  • Соответствует спецификации Open Geospatial Consortium (OGC) Simple Features for SQL версии 1.1.9 и совместимо с ISO-стандартом SQL MM.

SQL Server Geography

Здесь представлено краткое описание типа Microsoft Geography. Более подробные сведения о типе Geography и его использовании можно найти в документации к Microsoft SQL Server.

  • Тип Geography поддерживает многие стандартные географические системы координат, например, широта-долгота GPS.

    Microsoft рекомендует использовать SRID и географические системы координат, заданные в словаре данных SQL Server.

  • Для вычислений и пространственных сравнений используются модель эллипсоида (круглая Земля) и интерполяция отрезков линий между вершинами Great Elliptic.
  • Тип Geography использует глобальный (на сфере) экстент слоя.

    Координаты данных не могут выходить за пределы глобального экстента.

Растровые типы данных

В базе геоданных на SQL Server по умолчанию используется тип BLOB (rasterblob).

SQL Типы данных для различных блоков данных

❮ Предыдущая Следующая Глава ❯


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


Типы Microsoft для доступа к данным

Тип данных Описание Место хранения
Text Используйте для текста или их комбинации текста и чисел. максимум 255 символов
Memo Memo используется для больших объемов текста. Сохраняет до 65536 символов. Note: Вы не можете сортировать поле МЕМО. Тем не менее, они будут доступны для поиска
Byte Позволяет целые числа от 0 до 255 1 байт
Integer Позволяет целые числа между 32768 и 32767 2 байта
Long Позволяет целые числа между -2147483648 и 2147483647 4 байта
Single Одинарной точности с плавающей запятой. Будет ли работать с большинством знаков после запятой 4 байта
Double Двойной точности с плавающей запятой. Будет ли работать с большинством знаков после запятой 8 байт
Currency Используйте для валюты. Вмещает до 15 цифр целых долларов, плюс 4 знаков после запятой. Tip: Вы можете выбрать какой страны валюту использовать 8 байт
AutoNumber Autonumber поля автоматически дают каждой записи свой собственный номер, как правило, начиная с 1 4 байта
Date/Time Используйте для даты и времени 8 байт
Yes/No Логическое поле может отображаться как Да / Нет, True / False, или вкл / выкл. В коде, используйте константы истинные и ложные (эквивалент -1 и 0). Note: Нулевые значения не допускаются в Да / Нет полей 1 бит
Ole Object Можно хранить фотографии, аудио, видео или другие двоичные объекты (больших двоичных объектов) до 1 Гб
Hyperlink Содержать ссылки на другие файлы, в том числе веб-страниц
Lookup Wizard Пусть вам ввести список опций, которые затем могут быть выбраны из выпадающего списка 4 байта


Типы данных MySQL

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

Text types:

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

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

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

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

Number types:

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

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

Date types:

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

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

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

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

TIMESTAMP() * Временная метка. TIMESTAMP значения сохраняются как число секунд с Unix эпохи ( ‘1970-01-01 00:00:00’ UTC). Формат: YYYY-MM-DD HH: MI: SS

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

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

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

YEAR() Через год в формате четырехзначным двухзначным или.

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

* Даже если DATETIME и TIMESTAMP возвращают один и тот же формат, что они работают очень по-разному. В INSERT или UPDATE запроса, то автоматически устанавливается ТШЕЗТАМР себя к текущей дате и времени. TIMESTAMP также принимает различные форматы, такие как YYYYMMDDHHMISS, YYMMDDHHMISS, YYYYMMDD или YYMMDD.


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

String types:

Тип данных Описание Место хранения
char(n) Фиксированная ширина строка символов. Максимум 8000 символов Определяется ширина
varchar(n) Переменная строка ширина символа. Максимум 8000 символов 2 байта + количество символов
varchar(max) Переменная строка ширина символа. Максимум 1073741824 символов 2 байта + количество символов
text Переменная строка ширина символа. Максимальное 2GB текстовых данных 4 байта + количество символов
nchar Фиксированная ширина строки Unicode. Максимум 4000 символов Определяется ширина х 2
nvarchar Переменная строка ширина Unicode. Максимум 4000 символов
nvarchar(max) Переменная строка ширина Unicode. Максимальное количество символов 536,870,912
ntext Переменная строка ширина Unicode. Максимальное 2GB текстовых данных
bit Позволяет 0, 1 или NULL
binary(n) Фиксированная ширина двоичная строка. 38 -1.

Параметр р указывает максимальное общее количество цифр, которые могут быть сохранены (как слева и справа от десятичной точки). р должно иметь значение от 1 до 38. По умолчанию 18.

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

5-17 байт
smallmoney Денежные данные -214,748.3648 к 214,748.3647 4 байта
money Денежные данные -922,337,203,685,477.5808 к 922,337,203,685,477.5807 8 байт
float(n) Плавающие данные точности число от -1.79E + 308 до 1.79E + 308.

П параметр указывает, следует ли поле держать 4 или 8 байт. с плавающей точкой (24) имеет поле 4 байта и с плавающей точкой (53) имеет поле 8 байт. По умолчанию значение п 53.

4 или 8 байт
real Плавающие данные точности число от -3.40E + 38 до 3.40E + 38 4 байта

Date types:

Тип данных Описание Место хранения
datetime С 1 января 1753 года по 31 декабря 9999 с точностью 3,33 миллисекунды 8 байт
datetime2 С 1 января 0001 года по 31 декабря 9999 с точностью до 100 наносекунд 6-8 байтов
smalldatetime С 1 января 1900 года по 6 июня 2079 с точностью до 1 минуты 4 байта
date Хранить только дату. С 1 января 0001 года по 31 декабря 9999 3 байта
time Хранить время только с точностью до 100 наносекунд 3-5 байтов
datetimeoffset То же самое, как datetime2 с добавлением смещение часового пояса 8-10 байт
timestamp Сохраняет уникальный номер, который обновляется каждый раз, когда строка получает созданный или измененный. Значение временной метки основана на внутренние часы и не соответствует реальному времени. Каждая таблица может иметь только одну переменную временную метку

Other data types:

Тип данных Описание
sql_variant Сохраняет до 8000 байт данных различных типов данных, за исключением текста, NTEXT и временную метку
uniqueidentifier Магазины глобально уникальный идентификатор (GUID)
xml Магазины XML-данных в формате. Максимальная 2GB
cursor Сохраняет ссылку на курсор, используемый для операций с базами данных
table Сохраняет результат набора для последующей обработки

❮ Предыдущая Следующая Глава ❯

Логические, логические, да/нет или битовые типы данных в SQL

Типы данных T-SQL — int, float, decimal, varchar и т. д. Создавая таблицы в SQL Server, используя переменные SQL или передавая параметры хранимым процедурам, вам необходимо понимать, какие возможные типы данных вы можете использовать.

  1. Типы данных в T-SQL для SQL Server
  2. Типы текстовых данных в T-SQL
  3. Численные типы данных в T-SQL
  4. Типы данных даты и времени в SQL
  5. Логические, логические, да/нет или битовые типы данных в SQL (этот блог)
  6. Преобразование между типами данных

Этот блог является частью нашего руководства по SQL. Не забывайте, что Wise Owl в основном предоставляет учебные курсы по SQL (и другим).

Сообщение от Энди Браун 05 октября 2012 г.

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

Некоторые вещи в жизни черно-белые, и бит данные тип — один из них: оттенков серого нет, не говоря уже о 50 (я желая протащить эту ссылку в блог о компьютерном обучении на целую вечность).

Что представляет битовый тип данных

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

  • Либо ты женщина, либо нет.
  • Ты либо женат, либо нет.
  • Ты либо жив, либо нет (хотя если ты читая это, вы, вероятно, есть).
  • Вы либо все еще работаете в компании в качестве сотрудника, либо вы не.

Вот как этот тип данных называется в примере других приложений:

Заявка Как это называется
Доступ Да/Нет
Visual Basic/VBA Логический
С# логический

В SQL вы просто используете тип данных бит , который содержит число 0 (соответствует False ) или 1 (соответствует Правда ).

Это не так много места для хранения, как вы думаете. Есть (как каждый школьник знает?) 8 бит в байте, а если у тебя бит тип данных в таблице SQL отложит для него целый байт. Экономия возникает, когда у вас есть 8 разных полей бит , в которых case SQL сожмет их все вместе в один байт.

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

В целом, SQL будет применять следующие правила:

Данные Преобразуется в
Ложь, 0 0
Правда, любое другое число, кроме 0 1

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

— Создайте новую таблицу для хранения покупок

Создание таблицы TBLPayments (

Покупка VARCHAR (100),

Количество INT,

Сумма Десятилетня можно использовать любое число, кроме 0, в качестве Значение IfOk и он будет преобразован в 1:

— добавить покупку, значение OK которой равно ИСТИНА 42

)

Вы также можете использовать слова True и False , хотя вы должны сделать это с помощью текстовых строк:

— добавить покупку, значение OK которой равно FALSE

INSERT INTO tblPayments (

Покупка, Количество, Сумма, IfOk

) ЗНАЧЕНИЯ (

‘Космический корабль’, 1, 100, ‘ЛОЖЬ’

)

После выполнения приведенных выше SQL-команд у вас будет две покупки в таблице. Вы могли бы показать ON -One следующим образом:

— отображать только покупки OK

Select

Приобретение,

IFOK

из

TBLPAYMENTS

Где

IFOK = ‘True’

Это даст вам :

Покупки, для которых IfOk равно 1.

 

На практике правила, когда SQL будет принимать True и False настолько сложно запомнить, что проще использовать 0 и 1. Однако другие программы будут читать типы данных бит . in as True / False значений.

  1. Типы данных в T-SQL для SQL Server
  2. Типы текстовых данных в T-SQL
  3. Численные типы данных в T-SQL
  4. Типы данных даты и времени в SQL
  5. Логические, логические, да/нет или битовые типы данных в SQL (этот блог)
  6. Преобразование между типами данных

В этом блоге 0 тем Добавить сообщение

Какие типы данных поддерживает SQL Server?

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

В этом руководстве мы рассмотрим все типы данных, которые поддерживает SQL Server, а также процесс определения пользовательских типов данных с помощью Transact-SQL или Microsoft .NET Framework.

Содержание

  • Что такое SQL Server?
  • Почему важны типы данных?
  • Какие существуют категории данных?
  • Определение пользовательских типов данных
  • Выбор правильного типа данных

Что такое SQL Server?

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

Microsoft SQL Server больше не является эксклюзивным для среды Windows и теперь доступен в Linux, что является отличной новостью для тех, кто заинтересован в использовании SQL Server. Кроме того, облачная платформа Microsoft, известная как Azure, поддерживает SQL Server. Итак, если вам нужно место для его размещения, нет лучшего места, чем собственное решение.

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

Однако независимо от того, где вы размещаете SQL Server, важно отметить, что SQL Server использует немного другой язык SQL. Microsoft разработала Transact-SQL (T-SQL), который очень похож на стандартный SQL, но определяет набор собственных концепций, необходимых для программирования SQL Server.

Если вы знакомы с SQL, использование Transact-SQL не составит труда, и вы сможете легко использовать SQL Server. Но еще одним важным аспектом эффективного использования SQL Server является понимание всех типов данных, которые он поддерживает.

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

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

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

Какие существуют категории данных?

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

Exact Numerics

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

  • tinyint : Наименьший целочисленный тип хранения, способный хранить числа от 0 до 255.
  • smallint : Целочисленный тип хранения с удвоенным размером, до 2 байт.
  • int: Целочисленный тип хранения до 4 байт.
  • bigint : Самый большой целочисленный тип хранилища, способный хранить до 8 байтов данных.
  • десятичный и числовой: Эти синонимичные термины относятся к одному и тому же типу данных, который характеризуется фиксированным масштабом и точностью.
  • бит : Этот тип данных всегда имеет значение 1, 0 или NULL. Вы можете преобразовать данные true/false в бит, где 1 равно True, а 0 равно False.
  • smallmoney : Этот тип данных представляет денежные значения и допускает до двух знаков после запятой.
  • деньги: это еще один тип денежных данных, но он допускает до четырех знаков после запятой.

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

Если вы не знакомы с Unicode, это универсальный стандарт, который присваивает уникальный номер каждому символу, что позволяет последовательно кодировать и представлять написанный текст. Например, «привет» в Юникоде будет разбито следующим образом: U+0048 («H»), U+0065 («E») и U+0059. («Я»).

SQL Server поддерживает весь диапазон символьных данных Unicode, используя эти строки символов. Они могут быть фиксированными или переменными.

  • nchar : фиксированный размер, рекомендуется для использования, когда размеры данных в столбце совпадают.
  • nvarchar : переменный размер, рекомендуется для использования, когда размеры данных в столбце значительно различаются.
  • ntext : планируется удалить в будущих версиях SQL Server, разработан как тип данных переменной длины для Unicode. Вместо этого Microsoft рекомендует использовать nvarchar(max).

Приблизительные числовые значения

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

Числа с плавающей запятой могут быть невероятно большими или невероятно маленькими. Как с плавающей запятой, так и с десятичным типом данных можно хранить число с десятичной дробью — разница в том, что для плавающей запятой требуется меньше места для хранения, а десятичная — более точная. SQL Server поддерживает два типа приблизительных числовых значений с типами данных float и real.

  • float : число с плавающей запятой двойной точности, которое соответствует 8 байтам или 64 битам.

real : число с плавающей запятой одинарной точности, которое соответствует 4 байтам или 32 битам.

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

Строки символов имеют говорящее название: Эти типы данных используются для хранения символов. Они могут быть фиксированными или переменными по размеру.

  • char : Строковые данные фиксированного размера, использующие статическую ячейку памяти. Идеально, когда вы знаете длину строки и все строки в столбце будут одинаковыми
  • varchar : Строковые данные переменного размера, использующие расположение в динамической памяти. Используйте, если вы не уверены в длине строки или когда длина строк в столбце будет значительно различаться.
  • текст : планируется удалить в будущих версиях SQL Server, разработан как тип данных переменной длины для данных, отличных от Unicode. Microsoft рекомендует заменить его на varchar (max).

Двоичные строки

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

  • двоичный : Фиксированная длина, идеально подходит для использования, когда размеры данных в столбце согласованы.
  • varbinary : Переменная длина идеальна, когда размеры данных в столбце значительно различаются. Изображение
  • : планируется удалить в будущих версиях SQL Server, предназначенных для хранения двоичных данных переменной длины. Microsoft рекомендует заменить его на varbinary (max).

Дата и время

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

  • дата : Определяет дату. Формат по умолчанию — ГГГГ-ММ-ДД, но его можно отформатировать более чем 20 различными способами, включая ДМГ, ДГМ и ГМД.
  • datetimeoffset : Определяет дату и время суток. Этот тип данных учитывает часовой пояс.
  • datetime2: расширение указанного выше типа данных с дополнительной точностью до долей секунды.
  • datetime : аналогично datetime2, но с меньшей точностью до долей секунды.
  • smalldatetime : определяет дату и время дня, но секунды всегда равны нулю.
  • time: Определяет время суток, но без учета часового пояса.

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

В SQL Server существуют дополнительные типы данных, но они не подходят ни под одну из вышеперечисленных категорий. По этой причине эти типы данных просто существуют под «другим». К другим типам данных относятся следующие: 

  • rowversion : используется для отметки версий строк в таблице. Простое возрастающее число, не сохраняющее дату и время.
  • иерархический идентификатор : Тип системных данных переменной длины, используемый для представления позиции в иерархии.
  • uniqueidentifier : Глобальный уникальный идентификатор (GUID), способный хранить до 16 байтов.
  • sql_variant : Хранит различные типы данных, поддерживаемые SQL. Наиболее важной частью sql_variant является то, что она является переменной. Например, один столбец sql_variant может содержать целое число в одной строке и двоичное значение в другой. Для применения арифметических операций, таких как SUM или PRODUCT, тип должен быть сначала приведен к чему-то, что работает с этой операцией.
  • xml : Хранит XML-данные.
  • Типы пространственной геометрии : Представляет данные в плоской системе координат.
  • Типы пространственной географии : Представляет данные в земной системе координат.
  • таблица: специальный тип данных, используемый для хранения результатов для последующей обработки.

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

Если у вас есть пользовательский тип данных, не относящийся ни к одной из перечисленных выше категорий, вы все равно можете перенести его на SQL Server, если вы настроили его заранее. Используя Transact-SQL или Microsoft .NET Framework, разработчики могут определять пользовательские типы данных для своих проектов.

При создании пользовательского типа данных в интерфейсе SQL Server есть несколько инструментов, помогающих создавать Transact-SQL. Поля, которые вам нужно будет указать, — это схема, имя, базовый тип данных, длина, допустимые значения NULL, размер в байтах, необязательные поля в значении по умолчанию и любые правила, которым должен следовать тип данных. Например, поле электронной почты, скорее всего, будет использовать базовый тип varchar и должно содержать символы @ и ., а также список запрещенных символов. Затем вы устанавливаете максимальную длину, соответствующую вашим потребностям, и количество байтов автоматически заполняется в интерфейсе.
Microsoft предлагает дополнительную информацию, если вам нужно создать собственный тип данных.

Выбор правильного типа данных

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

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

Большинство сказали бы вам выбирать между smallint, integer, bigint или decimal всякий раз, когда вы работаете с числовыми данными. Если вы имеете дело с очень большими числами, они могут предложить decfloat или float. Но этот совет слишком упрощенный и общий, когда вы имеете дело с конкретными вариантами использования.

Например, вы можете работать с системой инвентаризации, которая требует четырехзначных значений и ведущих нулей. Или вы можете хранить номера социального страхования, которые должны быть правильно отформатированы с дефисами как XXX-XX-XXXX. Как вы понимаете, существует множество сложных приложений для SQL Server, для которых общих рекомендаций недостаточно для выбора правильного типа данных. По этой причине знание всех доступных типов данных является первым шагом в выборе наилучшего типа данных для любой информации, которую вам нужно хранить. К счастью, вам не нужно запоминать все типы данных и их диапазон информации. У Microsoft есть отличная документация, которая проведет вас по всем обсуждаемым здесь типам данных, если вам когда-нибудь понадобится более подробная информация в будущем.

Требуется логическое значение SQL Server? Используйте тип данных BIT!

Время чтения: 6 минут

При создании таблицы или объекта базы данных в SQL Server обязательно будут случаи, когда вам потребуется сохранить логическое значение (также известное как true или false ). Но существует ли такая вещь, как SQL Server  Boolean ?

В SQL Server абсолютно точно существует тип данных, который мы можем использовать для представления логического значения. Было бы удобно, если бы этот тип данных назывался просто boolean или boolean , но это не так. Тип данных, который мы можем использовать, называется BIT .

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

Тип данных BIT упоминается в следующем БЕСПЛАТНОМ РУКОВОДСТВЕ :

БЕСПЛАТНАЯ 1-страничная шпаргалка по простому SQL по 10 основным типам данных, которые вам нужно знать!

В этом руководстве представлен краткий обзор наиболее распространенных типов данных, включая тип данных BIT, которые вы будете использовать в своей карьере разработчика баз данных. Это определенно будет хорошим ресурсом для вас, когда вы будете продолжать запрашивать и разрабатывать базы данных SQL Server. Обязательно загрузите руководство сегодня!

В этом руководстве мы рассмотрим следующие темы:

  1. Что такое тип данных BIT?
  2. Пример использования типа данных BIT в качестве логического значения.
  3. Использование столбца BIT в выражении CASE
  4. Советы, рекомендации и ссылки.

Давайте приступим.

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

Тип данных BIT — это целочисленный тип данных, который хранит только значение 1 или 0 (или NULL).

Если вы знакомы с программированием, вы уже понимаете, как мы можем представить значения True или False , используя числа 1 или 0 соответственно. Поскольку BIT может хранить только 1 или 0 , это идеальный тип данных для использования, если мы хотим сохранить значение true или false (также известное как логическое значение) в SQL Server.

2. Пример

использования типа данных BIT в качестве логического значения.

Тип данных BIT очень прост для понимания. Давайте создадим простую таблицу Products со столбцом InStock , чтобы продемонстрировать использование BIT.

Вот таблица Products со столбцом InStock с типом данных BIT:

 CREATE TABLE Products
(
ProdID INT IDENTITY,
Название продуктаVARCHAR(20),
Цена ДЕСЯТИЧНАЯ(5,2),
БИТ в наличии
) 

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

Давайте добавим новый продукт, который в настоящее время на складе :

 ВСТАВИТЬ В ПРОДУКТЫ (название продукта, цена, наличие на складе)
значения ('Large Bench', 198.00, 1) 

(В нашем операторе INSERT нам не нужно указывать значение для столбца ProdID , потому что он использует удобное свойство IDENTITY)

Теперь, если мы проверим данные , мы можем видеть, что значение для столбца InStock равно 1 , конечно:

Поскольку мы знаем, что 1 означает «истина», а 0 означает «ложь», мы можем с уверенностью сказать, что продукт «Большая скамья» находится в факт, в наличии .

Добавим товар, которого нет в наличии ( InStock установите на 0 ):

 INSERT INTO Products (ProductName, Price, InStock)
values ​​('Coffee Table', 225.00, 0) 

Теперь, если мы проверим данные, мы можем сказать, что «Coffee Table» отсутствует на складе :

Ребята, вот и все!

3. Использование столбца BIT в выражении CASE

Один из наиболее распространенных способов сделать тип данных BIT более readable в запросе означает использовать его в удобном операторе CASE.

Используя оператор CASE, мы можем вернуть пользователю более очевидное значение, чем просто 1 или 0 . Наши конечные пользователи могут на самом деле не знать, что означает 1 или 0.

Они могут подумать, что число в этой колонке относится к количеству товара на складе. Они смотрели на данные и думали: « Вау, у нас очень мало запасов. Если у нас вообще есть продукт, то только ОДИН! »

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

Вот хороший запрос с оператором CASE:

 SELECT ProdID, ProductName, Price,
КЕЙС В наличии
КОГДА 1 ТОГДА 'Да'
КОГДА 0 ТО 'Нет'
ЗАКАНЧИВАТЬСЯ КАК "Товар в наличии?"
FROM Products 

В этом запросе используется простой оператор CASE . Существует также другой способ написать это с помощью искал оператор CASE .

Взгляните на полный учебник, чтобы узнать больше: Заявление SQL Server CASE: практическое руководство is not:

Конечно, мы можем очень легко изменить метки в этом столбце. Мы можем изменить имя столбца на «Статус товара» или «В наличии?» , например. Или мы могли бы изменить значения замены на ‘ Верно и Ложно или В наличии и Нет в наличии , например. Все, что пожелаете!

Дело в том, что назначение нового столбца теперь совершенно очевидно для конечного пользователя: Сообщить нам, есть товар на складе или нет!

4. Советы, рекомендации и ссылки.

Вот список советов и приемов, которые следует знать при работе с типом данных BIT:

Совет № 1: Если вы попытаетесь вставить любое число, отличное от 0, вместо 9 будет вставлено значение 1.0233

Давайте добавим еще одну строку в нашу таблицу Products , указав InStock значение , отличное от 0 :

 INSERT INTO Products (ProductName, Price, InStock)
значения («Разделочная доска», 85.00, 9383) 

Теперь давайте проверим данные:

Когда мы вставляем что-то отличное от 0 , 1 вставляется. И ребята, это произойдет для любого числа, которое НЕ НУЛЬ, даже если число равно 9.0460 отрицательный или десятичный . Псих!

Совет № 2: единственный способ получить значение 0 — это вставить значение 0

. Поэтому, если буквально что-то отличное от 0 в конечном итоге вставит 1 в столбец, это не должно быть сюрпризом чтобы узнать, что единственный способ ввести значение 0 в столбец — это вставить значение 0 !

Единственный способ получить 0 — ввести 0 . Очень тривиально 🙂

Совет №3: Вы можете использовать строковые значения ‘True’ или ‘False’ и значения 1 или 0 будут вставлены соответственно

SQL Server очень умный . Если вы хотите, вы можете выделить буквальные слова « True » или « False », чтобы вставить значение 1 или 0 соответственно в столбец BIT. Давайте попробуем:

 ВСТАВЬТЕ В ПРОДУКТЫ (название продукта, цена, наличие на складе)
ценности
(«Подставка для специй», 45. 00, «ПРАВДА»),
(«Барный стул», 60.00, «ЛОЖЬ») 

Вот данные:

Мой разум BLOWN

Ссылки

Вот официальная проверочная документация по типу данных SQL Server BIT: BIT (Transact-SQL)

3 Make it out .

Следующие шаги:

Не забудьте загрузить БЕСПЛАТНОЕ руководство .

В этом руководстве рассматриваются наиболее распространенные типы данных, с которыми вы столкнетесь в своей карьере разработчика базы данных или администратора. Убедитесь, что вы получили руководство, чтобы изучить их все!

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

Целочисленные типы данных SQL: все, что вам нужно знать

Большое спасибо за чтение!

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

Спасибо за прочтение! Если у вас есть какие-либо вопросы, или если вы боретесь с другой темой, связанной с SQL Server, я буду рад обсудить это. Оставьте комментарий или посетите мою контактную страницу и отправьте мне электронное письмо!

T-SQL вторник 136 — Bit по сравнению с другими типами данных

Время чтения: 5 минут

Мой доклад T-SQL за вторник в этом месяце посвящен биту типа данных SQL Server по сравнению со всеми другими типами данных. Который в этом месяце ведет Брент Озар.

Брент пригласил всех нас поговорить о наших любимых типах данных (или о любимых). На самом деле, будучи постоянным участником, я ожидаю в этом месяце гораздо больше взносов, чем обычно. Вы можете узнать больше о приглашении, нажав здесь или на изображении ниже.

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

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

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

Int

Начнем с другого популярного числового типа — int. Int хорош и может принести значительный выигрыш в производительности при использовании в рамках стратегии индексирования.

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

Однако будет справедливо сказать, что было гораздо больше запросов на преобразование int в bigint, чем на изменение бита. По этой причине у меня никогда не было просьбы конвертировать бит, так что здесь бит выигрывает.

Tinyint и smallint

Продолжим работу с числовыми типами данных. И tinyint, и smallint имеют свои потенциальные применения. Однако на самом деле большинство людей придерживаются int «на всякий случай». Я понимаю это в некоторой степени с tinyint, но наверняка есть больше пользовательских случаев для значений, которые никогда не достигнут 32 767?

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

Имея это в виду, бит выигрывает здесь.

Bigint

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

К счастью, это можно определить с помощью профилирования данных. Тем не менее, тип данных bigint все еще может использоваться неправильно.

На самом деле с bigint может произойти обратное тому, что произошло с типом данных int. Например, столбец идентификаторов был объявлен как bigint, тогда как на самом деле он может быть int или даже smallint.

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

Приблизительные числа

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

Итак, бит явно выигрывает здесь, потому что он непротиворечив.

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

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

Однако самое интересное становится, когда в игру вступает varchar.

varchar

Переменные строки данных могут быть отличными. Разрешение вашим символьным строкам изменять размер. С учетом сказанного, с ними также были сделаны вещи, которые некоторые сочтут странными.

Для начала varchar(1). Посмотрим правде в глаза, на том или ином этапе многие из нас видели это в использовании. На самом деле, я ожидаю, что и другие упомянут об этом сегодня. Потому что это очень распространено.

Что меня удивит, так это если кто-нибудь упомянет ниже, что, поверьте мне, вполне возможно.

  1. Сначала указан varchar(1) и установлено значение null.
  2. Затем следует функция ISNULL, чтобы установить тот же столбец в 0.

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

Кроме того, это также можно определить, когда запросы на вытягивание выполняются в системе управления версиями. Например, когда выполняется запрос на вытягивание для слияния работы с другой ветвью в Azure DevOps. Итак, если вы пытаетесь оправдать использование системы контроля версий перед своими коллегами, вы можете использовать этот пример.

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

Это заставляет меня задаться вопросом, должно ли быть какое-то предупреждение, когда люди используют varchar(1). Например, спросив, не хотят ли они пересмотреть его использование.

varchar(max)

Конечно, varchar(max) может быть полезен для хранения данных больших объектов в SQL Server. Если кто-то не решит использовать его по какой-то причине.

Я знаю, что некоторые люди стремятся использовать его для данных XML, но именно по этой причине у нас есть типы данных XML в SQL Server. Только по этой причине здесь выигрывает битовый тип данных.

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

Символы Unicode могут иметь множество применений. Однако у людей возникают проблемы при подсчете объема пространства, которое они используют.

Только по одной этой причине здесь выигрывает бит.

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

Типы данных данных и времени могут быть полезны. Тем более с новыми типами данных.

Из-за того, что в прошлом мне приходилось отливать и конвертировать выпуски в Европе, здесь бит выигрывает.

Типы данных XML

Типы данных XML впервые были представлены в SQL Server 2005. Фактически, они составляли большую часть экзаменов по SQL Server 2005. Кроме того, вы можете использовать с ними специальные XML-индексы, о которых я говорил в старом посте здесь.

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

Имея это в виду, бит выигрывает здесь.

sql_variant

Впервые появился в SQL Server 2000, и мне еще предстоит найти законное использование типа данных sql_variant ни в одной базе данных SQL Server, с которой я работал. Он появился в небольшом количестве баз данных, которые я поддерживал. Впрочем, это все.

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

Недостаток широты

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

Принимая во внимание, что битовый тип данных поддерживается и в других сервисах. Например, Azure Synapse Analytics. Облегчение перемещения данных между ними.

На самом деле, бит намного проще объявить, чем иерархию. Имея это в виду, бит выигрывает и здесь.

Бит побеждает

Итак, как вы можете видеть в этом слегка предвзятом посте, здесь побеждает битовый тип данных. Конечно, на самом деле большинство типов данных здесь имеют свое место в SQL Server, кроме sql_variant.

Шутки в сторону, я просто никогда не использовал sql_variant по назначению. Если вы это сделали, не стесняйтесь поделиться с комментарием, для чего вы его использовали.

Как всегда, если у вас есть какие-либо вопросы или комментарии по поводу этого поста, не стесняйтесь обращаться ко мне.

Справочник по типам данных SQL Server

Знаете ли вы точно каждый тип данных sql в SQL Server и требования к их использованию и хранению? Если нет, найдите их все в этом справочном листе. Автор: Альберт Олофссон.

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

Пример преимуществ

Выбор типа данных sql tinyint вместо int для столбца ProductType со значениями от 1 до 10 сэкономит три байта на запись. Имея 100 000 записей, вы сэкономите 300 000 байт. Это немного с точки зрения дискового пространства («хранилище дешево и т. д.»), но у вас, вероятно, будут индексы, содержащие этот столбец , и если этот индекс занимает меньше памяти , механизм базы данных будет обрабатывать этот индекс намного эффективнее в каждом «присоединиться» и «где» и т. д.

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

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

Справочный лист

типов данных SQL

Столбцы с именами 8, 9, 10 и 11 указывают на поддержку типа данных версии SQL Server, где

  • 8 = SQL Server 2000
  • 9 = SQL Server 2005
  • 10 = SQL Server 2008
  • 11 = SQL Server 2012

963-1 931 байт
Тип данных Мин. Максимум Хранение 8 9 10 11 Тип Примечания
8 байт Точный
Внутренний -2 147 483 648 2 147 483 647 4 байта Точный
Малый -32 768 32 767 2 байта Точный
Тиньинт 0 255 1 байт 938–1 Точность 1–9 = 5 байт, точность 10–19 = 9 байт, точность 20–28 = 13 байт, точность 29–38 = 17 байт Точный Десятичный и числовой типы данных абсолютно одинаковы. Точность — это общее количество цифр. Масштаб — это количество десятичных знаков. Для обоих минимум 1 и максимум 38.
Цифровой то же, что десятичный то же, что десятичный то же, что десятичное число 963-1/10000 8 байт Точный
Смоллмани -214 748,3648 214 748,3647 4 байта Точный
Поплавок -1,79В + 308 1.79E + 308 4 байта при точности менее 25 и 8 байт при точности от 25 до 53 Около Точность указывается от 1 до 53.
Реальный -3.40Е + 38 3.40E + 38 4 байта Около Точность зафиксирована на 7.
Дата и время 1753-01-01 00:00:00. 000 9999-12-31 23:59:59.997 8 байт Дата и время Если вы используете SQL Server 2008 или более позднюю версию и вам нужна точность в миллисекундах, вместо этого используйте datetime2(3), чтобы сэкономить 1 байт.
Малая дата и время 1900-01-01 00:00 2079-06-06 23:59 4 байта Дата и время
Дата 0001-01-01 9999-12-31 3 байта нет нет Дата и время
Время 00:00:00.0000000 23:59:59.9999999 время (0-2) = 3 байта, время (3-4) = 4 байта, время (5-7) = 5 байтов нет нет Дата и время Можно указать точность. TIME(3) будет иметь точность в миллисекундах. TIME(7) является самой высокой точностью и точностью по умолчанию. Приведение значений к более низкой точности приведет к округлению значения.
Дата и время2 0001-01-01 00:00:00.0000000 9999-12-31 23:59:59.9999999 Presicion 1-2 = 6 байтов точности 3-4 = 7 байтов точности 5-7 = 8 байтов нет Дата и время Объединяет тип данных даты и тип данных времени в один. Логика точности такая же, как и для типа данных time.
Смещение даты и времени 0001-01-01 00:00:00.0000000 -14:00 9999-12-31 23:59:59.9999999 +14:00 Presicion 1-2 = точность 8 байт 3-4 = точность 9 байт 5-7 = 10 байт нет нет Дата и время Тип данных datetime2 с добавленным смещением UTC. 931 символ 2 байта + количество символов нет Строка Переменная ширина
Текст 0 символов 2 147 483 647 символов 4 байта + количество символов Строка Переменная ширина
Нчар 0 символов 4000 символов Заданная ширина x 2 930 символов нет Юникод Переменная ширина
Нтекст 0 символов 1 073 741 823 символа Юникод Переменная ширина
Двоичный 0 байт 8000 байт Двоичный Фиксированная ширина
Варбинар нет Двоичный Переменная ширина
Изображение 0 байт 2 147 483 647 байт Двоичный Переменная ширина. Предпочтительно использовать тип varbinary(max), поскольку тип изображения будет удален в будущих версиях.
Sql_вариант Другое Сохраняет значения различных типов данных, поддерживаемых SQL Server, кроме text, ntext и timestamp.
Метка времени 8 байт Другое Сохраняет уникальный номер для всей базы данных, который обновляется каждый раз при обновлении строки.
Уникальный идентификатор 16 байт Другое Сохраняет глобальный уникальный идентификатор (GUID).
Xml нет Другое Сохраняет XML-данные. Вы можете хранить экземпляры xml в столбце или переменной.
Курсор Другое Ссылка на курсор.
Стол Другое Сохраняет набор результатов для последующей обработки.

Примечание о точности

Пространство, занимаемое записями значений типов, указывающих точность (Float, Decimal, DateTime2 и т. д.), всегда одинаково. Именно определение столбца определяет, сколько места занимает каждая запись, а не размер самого значения. Таким образом, десятичное (25,5) значение 999,999 занимает 13 байтов, а не 5 байтов. Даже значение NULL займет 13 байт. Столбец имеет фиксированную длину. Несмотря на то, что это может показаться плохим, при работе с данными фиксированной длины происходит прирост производительности ЦП (также помните, что деревья индексов содержат эти значения и требования к хранилищу фиксированной длины).

Другим соображением является то, что при суммировании значения на основе точности результирующий тип данных суммированных значений будет таким же (если не преобразован), что и определение столбца, и может произойти арифметическое переполнение. Если вы знаете, что ваши значения будут, например, варьироваться от 0 до 999,99, нет смысла с космической точки зрения не определять его как Decimal (9,2) в любом случае (самое высокое 5-байтовое определение). Таким образом, у вашего итогового результата будет больше свободного места, и вы, возможно, сможете избежать приведения. С точки зрения ограничений Decimal(5,2) может быть более подходящим, но, возможно, требования ограничений не следует смешивать с решениями о типах данных (ну, это другое обсуждение, выходящее за рамки этой статьи).

Мой лучший совет: «Определите свою точность как наивысшую точку до того, как возрастут требования к хранению» .

Резюме

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

Справочные листы типов данных для конкретных версий

Справочный лист типов данных SQL Server был извлечен в листов для конкретной версии. Они находятся в следующих местах: SQL Server 2012, SQL Server 2008, SQL Server 2005 и SQL Server 2000.

типов данных SQL Server

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

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

SQL Server предоставляет встроенные типы данных для всех типов данных, которые можно использовать в SQL Server. Кроме того, вы также можете определить свой собственный тип данных в T-SQL.

Категории типов данных:

Категория Типы данных
Точные цифры бит, tinyint, smallint, int, bigint, десятичный, числовой, деньги, smallmoney
Приблизительные цифры Вещественный, плавающий
Дата и время дата, малая дата и время, дата и время, дата и время 2, дата и время смещение, время
Строки символов char, varchar, текст
Строки символов Юникода нчар, нварчар, нтекст
Другие типы данных курсор, иерархия, sql_variant, типы пространственной геометрии, типы пространственной географии, версия строки, уникальный идентификатор, xml, таблица

Точные цифры

Тип данных Ценность Описание
кусочек 0,1 или НУЛЬ Наименьший тип данных с размером хранилища 1 байт
крошечный от 0 до 255 1 байт размер хранилища
малыйинт -32 768 до 32 767 размер хранилища 2 байта
инт −2 147 483 648 4 байта хранения
большойинт 938−1 Числовой тип данных с фиксированной точностью и масштабом.
маленькие деньги -214 748,3648 до 214 748,3647 4 байта
Деньги -922 337 203 685 477,5808 до 922 337 203 685 477,5807 8 байт

Приблизительные цифры

Тип данных Ценность Описание
поплавок (сущ. ) — 1,79от E+308 до -2.23E-308, 0 Память зависит от значения n.
настоящий — 3.40E + 38 до -1.18E — 38, 0 и 1.18E — 38 до 3.40E + 38 4 байта

Дата и время

Тип данных Ценность Описание
свидание 01-01-0001 по 31-12-9999 3 байта
дата и время Дата: с 01. 01.1753 по 31.12.9999. 8 байт
дата и время2 Дата: с 01.01.01 по 31.12.9999. Точность
маленькая дата и время с 1 января 1900 г. по 06 июня 2079 г. 4 байта фиксированные
смещение даты и времени Дата: с 01.01.01 по 10 байт фиксировано
время 00:00:00. 0000000 до 23:59:59.9999999 фиксировано 5 байт

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

Тип данных Ценность Описание
символ [(n)] от 1 до 8000 символов n байт
varchar[(n)] от 1 до 8000 n байтов + 2 байта 931-1 n байтов + 4 байта
текст от 0 до 2 147 483 647 n байтов + 4 байта

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

Тип данных Ценность Описание
nchar[(n)] от 1 до 4000 символов 2 раза по n байт
nvarchar[(n|макс. )] от 1 до 4000 2 раза по n байт
текст от 0 до 1 073 741 823 в 2 раза больше длины строки

Двоичные строки

Тип данных Ценность Описание
двоичный [(п)] от 1 до 8000 байт n байт
varbinary[(n|max)] от 1 до 8000 Фактическая длина строки + 2 байта
Изображение от 0 до 2 147 483 647 Двоичные данные переменной длины

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

Тип данных Описание
курсор Тип данных для переменных или хранимых процедур OUTPUT параметров, содержащих ссылку на курсор.
версия строки Он возвращает автоматически сгенерированные уникальные двоичные числа в базе данных.
иерархический идентификатор Это системный тип данных переменной длины.
уникальный идентификатор Является 16-байтовым GUID
sql_вариант Тип данных, в котором хранятся значения различных типов данных, поддерживаемых SQL Server.
XML Он хранит xml-данные.

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

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