Bigint
Содержание:
- Date/Time типы данных
- Типы числовых данных
- Пример — использование условия IN с оператором NOT
- Соответствие стандартам ANSI и ISO 8601ANSI and ISO 8601 compliance
- Типы данных SQL Server
- Временные типы
- Дата и время — см. такжеDate and time-related topics
- Типы данных Microsoft Access
- SQL Server, SSIS и Biml типы данных
- АргументыArguments
- SQL Server Data Types
- Приоритет типов данных (Transact-SQL)
- RemarksRemarks
- Числовые типы данных
- Пример — использование условия IN с числовыми значениями
- Округление типа данных datetime до долей секундыRounding of datetime Fractional Second Precision
- Числовые типы данных
Date/Time типы данных
Ниже приведены типы данных дата / время в MySQL:
Синтаксис | Максимальный размер | Пояснение |
---|---|---|
DATE | Значения варьируются от ‘1000-01-01’ до ‘9999-12-31’. | Отображается как ‘YYYY-MM-DD’. |
DATETIME | Значения варьируются от ‘1000-01-01 00:00:00’ до ‘9999-12-31 23:59:59’. | Отображается как ‘YYYY-MM-DD HH:MM:SS’. |
TIMESTAMP(m) | Значения варьируются от ‘1970-01-01 00:00:01’ UTC до ‘2038-01-19 03:14:07’ UTC. | Отображается как ‘YYYY-MM-DD HH:MM:SS’. |
TIME | Значения варьируются от ‘-838: 59: 59’ до ‘838: 59: 59’. | Отображается как ‘HH:MM:SS. |
YEAR | Значение года как 2 цифры или 4 цифры. | Значение по умолчанию — 4 цифры. |
Типы числовых данных
Тип | Описание |
TINYINT(size) | От -128 до 127. От 0 до 255 UNSIGNED *. Максимальное количество цифр может быть указано в круглых скобках |
SMALLINT(size) | -32768 до 32767 нормально. 0 до 65535 UNSIGNED*. Максимальное количество цифр может быть указано в скобках |
MEDIUMINT(size) | -8388608 до 8388607 normal. 0 до 16777215 UNSIGNED*. Максимальное количество цифр может быть указано в скобках |
INT(size) | -2147483648 до 2147483647 normal. 0 до 4294967295 UNSIGNED*. Максимальное количество цифр может быть указано в скобках |
BIGINT(size) | -9223372036854775808 до 9223372036854775807 normal. 0 до 18446744073709551615 UNSIGNED *. Максимальное количество цифр может быть указано в скобках |
FLOAT(size,d) | Небольшое число с плавающей запятой. Максимальное количество цифр может быть указано в параметре размера. Максимальное количество цифр справа от десятичной точки указано в параметре d |
DOUBLE(size,d) | Большое число с плавающей запятой. Максимальное количество цифр может быть указано в параметре размера. Максимальное количество цифр справа от десятичной точки указано в параметре d |
DECIMAL(size,d) | DOUBLE хранится как строка, позволяющая фиксированную десятичную точку. Максимальное количество цифр может быть указано в параметре размера. Максимальное количество цифр справа от десятичной точки указано в параметре d |
UNSIGNED — дополнительный параметр целочисленного типа. Обычно целое число переходит от отрицательного к положительному. Добавление атрибута UNSIGNED будет перемещать этот диапазон вверх так, чтобы он начинался с нуля вместо отрицательного числа.
Пример — использование условия IN с оператором NOT
Наконец, давайте посмотрим, как использовать условие IN с оператором NOT. Оператор NOT используется для отмены условия. Когда мы используем оператор NOT с условием IN, мы создаем условие NOT IN. Это проверяет, нет ли выражения в списке.
В этом примере у нас есть таблица products со следующими данными:
product_id | product_name | category_id |
---|---|---|
1 | Pear | 50 |
2 | Banana | 50 |
3 | Orange | 50 |
4 | Apple | 50 |
5 | Bread | 75 |
6 | Sliced Ham | 25 |
7 | Kleenex | NULL |
Введите следующий SQL оператор:
PgSQL
SELECT *
FROM products
WHERE product_name NOT IN (‘Pear’, ‘Banana’, ‘Bread’);
1 |
SELECT* FROMproducts WHEREproduct_nameNOT IN(‘Pear’,’Banana’,’Bread’); |
Будет выбрано 4 записи. Вот результаты, которые вы получите:
product_id | product_name | category_id |
---|---|---|
3 | Orange | 50 |
4 | Apple | 50 |
6 | Sliced Ham | 25 |
7 | Kleenex | NULL |
В этом примере будут возвращены все строки из таблицы products, где product_name не является Pear, Banana или Bread. Иногда более эффективно перечислять значения, которые вы не хотите, в отличие от значений, которые вы хотите.
Это эквивалентно следующему оператору SQL:
PgSQL
SELECT *
FROM products
WHERE product_name <> ‘Pear’
AND product_name <> ‘Banana’
AND product_name <> ‘Bread’;
1 |
SELECT* FROMproducts WHEREproduct_name<>’Pear’ ANDproduct_name<>’Banana’ ANDproduct_name<>’Bread’; |
Как видите, эквивалентный оператор записывается с использованием условий AND вместо условий OR, поскольку условие IN отменяется.
Соответствие стандартам ANSI и ISO 8601ANSI and ISO 8601 compliance
Значение date соответствует стандартному определению ANSI SQL для григорианского календаря: «Замечание 85 — данные типа Datetime позволяют хранить даты григорианского календаря в виде чисел диапазона от 0001-01-01 CE до 9999–12–31 CE».date complies with the ANSI SQL standard definition for the Gregorian calendar: «NOTE 85 — Datetime data types will allow dates in the Gregorian format to be stored in the date range 0001-01-01 CE through 9999-12-31 CE.»
Формат строковых литералов по умолчанию, используемый для клиентов низкого уровня, соответствует стандарту SQL, в котором он определен как ГГГГ-ММ-ДД.The default string literal format, which is used for down-level clients, complies with the SQL standard form that is defined as YYYY-MM-DD. Данный формат аналогичен определению даты в стандарте ISO 8601.This format is the same as the ISO 8601 definition for DATE.
Примечание
Для Informatica диапазон ограничен интервалом от 1582-10-15 (15 октября 1582 г.) до 9999-12-31 (31 декабря 9999 г.).For Informatica, the range is limited to 1582-10-15 (October 15, 1582 CE) to 9999-12-31 (December 31, 9999 CE).
Типы данных 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) | Фиксированная ширина двоичная строка. Максимум 8000 байтов | |
varbinary | Переменная ширина двоичная строка. Максимум 8000 байтов | |
varbinary(max) | Переменная ширина двоичная строка. Максимальная 2GB | |
image | Переменная ширина двоичная строка. Максимальная 2GB |
Number types:
Тип данных | Описание | Место хранения |
---|---|---|
tinyint | Позволяет целые числа от 0 до 255 | 1 байт |
smallint | Позволяет целые числа между 32768 и 32767 | 2 байта |
int | Позволяет целые числа между -2147483648 и 2147483647 | 4 байта |
bigint | Позволяет целые числа между -9,223,372,036,854,775,808 и 9,223,372,036,854,775,807 | 8 байт |
decimal(p,s) | Фиксированная точность и масштаб числа.
Позволяет числа от -10 ^ 38 + 1 до 10 ^ 38 -1. Параметр р указывает максимальное общее количество цифр, которые могут быть сохранены (как слева и справа от десятичной точки). р должно иметь значение от 1 до 38. По умолчанию 18. Параметр s указывает максимальное количество цифр, сохраненных справа от десятичной точки. s должен иметь значение от 0 до р. Значение по умолчанию равно 0 |
5-17 байт |
numeric(p,s) | Фиксированная точность и масштаб числа.
Позволяет числа от -10 ^ 38 + 1 до 10 ^ 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 | Сохраняет результат набора для последующей обработки |
❮ Предыдущая Следующая Глава ❯
Временные типы
- DATE — предназначен для хранения даты. Формат: год «YYYY», разделитель, месяц «ММ», разделитель, день «DD». В качестве разделителя может выступать не только дефис «-», но и любой символ отличный от цифры.
- DATETIME — предназначен для хранения и даты и времени суток. Позволяет хранить значения в большом диапазоне, с 1001 до 9999 года, с точностью в одну секунду. Дата и время упаковываются в целое число в формате YYYYMMDDHHMMSS независимо от часового пояса. Под значение отводится восемь байт. По умолчанию MySQL показывает данные типа DATETIME в точно определенном, допускающем сортировку формате: 2008-01-16 22:37:08. Этот способ представления даты и времени согласуется со стандартом ANSI.
- TIME — предназначен для хранения времени суток. Значение вводится и хранится в привычном формате: hh:mm:ss, где hh — часы, mm — минуты, ss — секунды. В качестве разделителя может выступать любой символ отличный от цифры.
- TIMESTAMP — предназначен для хранения даты и времени суток в виде количества секунд, прошедших с полуночи 1 января 1970 года по гринвичскому времени (начало эпохи UNIX). С точки зрения занимаемого места на диске он гораздо эффективнее, чем DATETIME. Для хранения типа TIMESTAMP используется только четыре байта, поэтому он позволяет представить значительно меньший диапазон дат, чем тип DATETIME: с 1970 года до некоторой даты в 2038 году. В MySQL имеют ся функции FROM_UNIXTIME() и UNIX_TIMESTAMP(), служащие для преобразования временной метки UNIX в дату и наоборот. Столбцы типа TIMESTAMP по умолчанию создаются в режиме NOT NULL, если вы не указали значение для столбца, MySQL вставляет в первый столбец типа TIMESTAMP текущее время. Тип TIMESTAMP имеет также специальные свойства, которых нет у типа DATETIME.
- YEAR(N) — предназначен для хранения года. Число N задает формат года: YEAR (2) — 70, а YEAR (4) — 1970. По умолчанию, N = 4.
Типы данных | Формат |
DATETIME | ‘0000-00-00 00:00:00’ |
DATE | ‘0000-00-00’ |
TIMESTAMP | 00000000000000 (длина зависит от количества выводимых символов) |
TIME | ‘00:00:00’ |
YEAR | 0000 |
РазделTopic | ОписаниеDescription |
---|---|
FORMATFORMAT | Возвращает значение в указанных формате и культуре (не обязательно).Returns a value formatted with the specified format and optional culture. Для выполнения форматирования значения даты, времени и чисел с учетом локали в виде строк используется функция FORMAT.Use the FORMAT function for locale-aware formatting of date/time and number values as strings. |
Функции CAST и CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL) | Предоставляет сведения о преобразовании значений даты и времени в строковые литералы и обратно, а также в другие форматы даты и времени.Provides information about the conversion of date and time values to and from string literals, and other date and time formats. |
Написание инструкций Transact-SQL, адаптированных к международному использованиюWrite International Transact-SQL Statements | Предоставляет рекомендации относительно переносимости баз данных и приложений баз данных, использующих инструкции Transact-SQLTransact-SQL, с одного языка на другой или в многоязычную среду.Provides guidelines for portability of databases and database applications that use Transact-SQLTransact-SQL statements from one language to another, or that support multiple languages. |
Скалярные функции ODBC (Transact-SQL)ODBC Scalar Functions (Transact-SQL) | Предоставляет сведения о скалярных функциях ODBC, которые могут использоваться в инструкциях Transact-SQLTransact-SQL.Provides information about ODBC scalar functions available for use in Transact-SQLTransact-SQL statements. К ним относятся функции даты и времени ODBC.This includes ODBC date and time functions. |
AT TIME ZONE (Transact-SQL)AT TIME ZONE (Transact-SQL) | Обеспечивает преобразование часовых поясов.Provides time zone conversion. |
Типы данных Microsoft Access
Тип данных | Описание | Хранения |
---|---|---|
Text | Используется для текста или комбинаций текста и чисел. 255 символов максимум | |
Memo | MEMO используется для больших объемов текста. Хранит до 65 536 символов. Примечание: Поле MEMO нельзя сортировать. Тем не менее, они доступны для поиска | |
Byte | Позволяет целые числа от 0 до 255 | 1 byte |
Integer | Позволяет целые числа между-32 768 и 32 767 | 2 bytes |
Long | Позволяет целые числа между-2 147 483 648 и 2 147 483 647 | 4 bytes |
Single | Одинарная точность с плавающей запятой. Будет обрабатывать большинство десятичных знаков | 4 bytes |
Double | Двойная точность с плавающей запятой. Будет обрабатывать большинство десятичных знаков | 8 bytes |
Currency | Использовать для валюты. Вмещает до 15 цифр целых долларов, плюс 4 десятичных знака. Совет: Вы можете выбрать валюту страны для использования | 8 bytes |
AutoNumber | Поля автонумерации автоматически дают каждой записи свой номер, обычно начиная с 1 | 4 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 Server, SSIS и Biml типы данных
Таблица ниже является упрощенной схемой связи между типами данныхSQL Server, SSIS и Biml.
Таблица не включает все возможные комбинации и все виды типов данных, но полезна как быстрая ссылка при разработке и изучении Biml.
SQL Server | SSIS Variables | SSIS Pipeline Buffer | OLE DB | ADO.NET | Biml |
---|---|---|---|---|---|
bigint | Int64 | DT_I8 | LARGE_INTEGER | Int64 | Int64 |
binary | Object | DT_BYTES | — | Binary | Binary |
bit | Boolean | DT_BOOL | VARIANT_BOOL | Boolean | Boolean |
char | String | DT_STR | VARCHAR | StringFixedLength | AnsiStringFixedLength |
date | Object | DT_DBDATE | DBDATE | Date | Date |
datetime | DateTime | DT_DBTIMESTAMP | DATE | DateTime | DateTime |
datetime2 | Object | DT_DBTIMESTAMP2 | DBTIME2 | DateTime2 | DateTime2 |
datetimeoffset | Object | DT_DBTIMESTAMPOFFSET | DBTIMESTAMPOFFSET | DateTimeOffset | DateTimeOffset |
decimal | Decimal | DT_NUMERIC | NUMERIC | Decimal | Decimal |
float | Double | DT_R8 | FLOAT | Double | Double |
geography | — | DT_IMAGE | — | Object | Object |
geometry | — | DT_IMAGE | — | Object | Object |
hierarchyid | — | DT_BYTES | — | Object | Object |
image (*) | Object | DT_IMAGE | — | Binary | Binary |
int | Int32 | DT_I4 | LONG | Int32 | Int32 |
money | Object | DT_CY, DT_NUMERIC | CURRENCY | Currency | Currency |
nchar | String | DT_WSTR | NVARCHAR | StringFixedLength | StringFixedLength |
ntext (*) | String | DT_NTEXT | — | String | String |
numeric | Decimal | DT_NUMERIC | NUMERIC | Decimal | Decimal |
nvarchar | String | DT_WSTR | NVARCHAR | String | String |
nvarchar(max) | Object | DT_NTEXT | — | — | String |
real | Single | DT_R4 | FLOAT, DOUBLE | Single | Single |
rowversion | Object | DT_BYTES | — | Binary | Binary |
smalldatetime | DateTime | DT_DBTIMESTAMP | DATE | DateTime | DateTime |
smallint | Int16 | DT_I2 | SHORT | Int16 | Int16 |
smallmoney | Object | DT_CY, DT_NUMERIC | CURRENCY | Currency | Currency |
sql_variant | Object | DT_WSTR, DT_NTEXT | — | Object | Object |
table | Object | — | — | — | — |
text (*) | Object | DT_TEXT | — | — | AnsiString |
time | Object | DT_DBTIME2 | DBTIME2 | Time | Time |
timestamp (*) | Object | DT_BYTES | — | Binary | Binary |
tinyint | Byte | DT_UI1 | BYTE | Byte | Byte |
uniqueidentifier | String, Object | DT_GUID | GUID | Guid | Guid |
varbinary | Object | DT_BYTES | — | Binary | Binary |
varbinary(max) | Object | DT_IMAGE | — | Binary | Binary |
varchar | String | DT_STR | VARCHAR | String | AnsiString |
varchar(max) | Object | DT_TEXT | — | — | AnsiString |
xml | Object | DT_NTEXT | — | — | Xml |
(* Данные типы данных будут удалены в будущих версиях SQL Server.
Избегайте использование этих типов данных в новых проектах и, по возможности, измените их в текущих проектах.)
АргументыArguments
nchar nchar Строковые данные фиксированного размера.Fixed-size string data. n определяет размер строки в парах байтов и должно иметь значение от 1 до 4000.n defines the string size in byte-pairs and must be a value from 1 through 4,000. Размер хранилища — дважды n байт.The storage size is two times n bytes. В случае с кодировкой размер при хранении определяется как дважды n байт, а количество хранимых символов равно n.For encoding, the storage size is two times n bytes and the number of characters that can be stored is also n. Для кодировки UTF-16 размер при хранении также равен дважды n байт, но количество хранимых символов может быть меньше n, так как дополнительные символы используют две пары байтов (также называются ).For UTF-16 encoding, the storage size is still two times n bytes but the number of characters that can be stored may be smaller than n because Supplementary Characters use two byte-pairs (also called ). Синонимами типа nchar по стандарту ISO являются типы national char и national character.The ISO synonyms for nchar are national char and national character.
nvarchar nvarchar Строковые данные переменного размера.Variable-size string data. n определяет размер строки в парах байтов и может иметь значение от 1 до 4000.n defines the string size in byte-pairs and can be a value from 1 through 4,000. Значение max указывает, что максимальный размер при хранении составляет 2^30-1 символов (2 ГБ).max indicates that the maximum storage size is 2^30-1 characters (2 GB). Размер при хранении определяется как дважды n байт + 2 байта.The storage size is two times n bytes + 2 bytes. В случае с кодировкой размер при хранении определяется как дважды n байт + 2 байта, а количество хранимых символов равно n.For encoding, the storage size is two times n bytes + 2 bytes and the number of characters that can be stored is also n. Для кодировки UTF-16 размер при хранении также равен дважды n байт + 2 байта, но количество хранимых символов может быть меньше n, так как дополнительные символы используют две пары байтов (также называются ).For UTF-16 encoding, the storage size is still two times n bytes + 2 bytes but the number of characters that can be stored may be smaller than n because Supplementary Characters use two byte-pairs (also called ). Синонимами типа nvarchar по стандарту ISO являются типы national char varying и national character varying.The ISO synonyms for nvarchar are national char varying and national character varying.
SQL Server Data Types
String Data Types
Data type | Description | Max size | Storage |
---|---|---|---|
char(n) | Fixed width character string | 8,000 characters | Defined width |
varchar(n) | Variable width character string | 8,000 characters | 2 bytes + number of chars |
varchar(max) | Variable width character string | 1,073,741,824 characters | 2 bytes + number of chars |
text | Variable width character string | 2GB of text data | 4 bytes + number of chars |
nchar | Fixed width Unicode string | 4,000 characters | Defined width x 2 |
nvarchar | Variable width Unicode string | 4,000 characters | |
nvarchar(max) | Variable width Unicode string | 536,870,912 characters | |
ntext | Variable width Unicode string | 2GB of text data | |
binary(n) | Fixed width binary string | 8,000 bytes | |
varbinary | Variable width binary string | 8,000 bytes | |
varbinary(max) | Variable width binary string | 2GB | |
image | Variable width binary string | 2GB |
Numeric Data Types
Data type | Description | Storage |
---|---|---|
bit | Integer that can be 0, 1, or NULL | |
tinyint | Allows whole numbers from 0 to 255 | 1 byte |
smallint | Allows whole numbers between -32,768 and 32,767 | 2 bytes |
int | Allows whole numbers between -2,147,483,648 and 2,147,483,647 | 4 bytes |
bigint | Allows whole numbers between -9,223,372,036,854,775,808 and 9,223,372,036,854,775,807 | 8 bytes |
decimal(p,s) | Fixed precision and scale numbers.
Allows numbers from -10^38 +1 to 10^38 –1. The p parameter indicates the maximum total number of digits that can be stored (both to the left and to the right of the decimal point). p must be a value from 1 to 38. Default is 18. The s parameter indicates the maximum number of digits stored to the right of the decimal point. s must be a value from 0 to p. Default value is 0 |
5-17 bytes |
numeric(p,s) | Fixed precision and scale numbers.
Allows numbers from -10^38 +1 to 10^38 –1. The p parameter indicates the maximum total number of digits that can be stored (both to the left and to the right of the decimal point). p must be a value from 1 to 38. Default is 18. The s parameter indicates the maximum number of digits stored to the right of the decimal point. s must be a value from 0 to p. Default value is 0 |
5-17 bytes |
smallmoney | Monetary data from -214,748.3648 to 214,748.3647 | 4 bytes |
money | Monetary data from -922,337,203,685,477.5808 to 922,337,203,685,477.5807 | 8 bytes |
float(n) | Floating precision number data from -1.79E + 308 to 1.79E + 308.
The n parameter indicates whether the field should hold 4 or 8 bytes. float(24) holds a 4-byte field and float(53) holds an 8-byte field. Default value of n is 53. |
4 or 8 bytes |
real | Floating precision number data from -3.40E + 38 to 3.40E + 38 | 4 bytes |
Date and Time Data Types
Data type | Description | Storage |
---|---|---|
datetime | From January 1, 1753 to December 31, 9999 with an accuracy of 3.33 milliseconds | 8 bytes |
datetime2 | From January 1, 0001 to December 31, 9999 with an accuracy of 100 nanoseconds | 6-8 bytes |
smalldatetime | From January 1, 1900 to June 6, 2079 with an accuracy of 1 minute | 4 bytes |
date | Store a date only. From January 1, 0001 to December 31, 9999 | 3 bytes |
time | Store a time only to an accuracy of 100 nanoseconds | 3-5 bytes |
datetimeoffset | The same as datetime2 with the addition of a time zone offset | 8-10 bytes |
timestamp | Stores a unique number that gets updated every time a row gets created or modified. The timestamp value is based upon an internal clock and does not correspond to real time. Each table may have only one timestamp variable |
Other Data Types
Data type | Description |
---|---|
sql_variant | Stores up to 8,000 bytes of data of various data types, except text, ntext, and timestamp |
uniqueidentifier | Stores a globally unique identifier (GUID) |
xml | Stores XML formatted data. Maximum 2GB |
cursor | Stores a reference to a cursor used for database operations |
table | Stores a result-set for later processing |
Приоритет типов данных (Transact-SQL)
Если оператор связывает два выражения различных типов данных, то по правилам приоритета типов данных определяется, какой тип данных имеет меньший приоритет и будет преобразован в тип данных с большим приоритетом.
Если неявное преобразование не поддерживается, возвращается ошибка.
Если оба операнда выражения имеют одинаковый тип данных, результат операции будет иметь тот же тип данных.
В SQL Server используется следующий приоритет типов данных:
- sql_variant
- xml
- datetimeoffset
- datetime2
- datetime
- smalldatetime
- date
- time
- float
- real
- decimal
- money
- smallmoney
- bigint
- int
- smallint
- tinyint
- bit
- ntext
- text
- image
- timestamp
- uniqueidentifier
- nvarchar (including nvarchar(max) )
- nchar
- varchar (including varchar(max) )
- char
- varbinary (including varbinary(max) )
- binary (lowest)
RemarksRemarks
sql_variant может использоваться в столбцах, параметрах, переменных и значениях, возвращаемых определяемыми пользователем функциями.sql_variant can be used in columns, parameters, variables, and the return values of user-defined functions. sql_variant позволяет этим объектам баз данных поддерживать значения других типов данных.sql_variant enables these database objects to support values of other data types.
Столбец типа sql_variant может содержать строки различных типов данных.A column of type sql_variant may contain rows of different data types. Например, в столбце, определенном как sql_variant, могут храниться значения int, binary и char.For example, a column defined as sql_variant can store int, binary, and char values.
Максимальная длина значения типа данных sql_variant составляет 8016 байт.sql_variant can have a maximum length of 8016 bytes. Сюда входят сведения о базовом типе и значение базового типа.This includes both the base type information and the base type value. Максимальная длина значения соответствующего базового типа составляет 8 000 байт.The maximum length of the actual base type value is 8,000 bytes.
Перед тем как задействовать тип данных sql_variant в таких операциях, как сложение и вычитание, его нужно привести к значению базового типа данных.A sql_variant data type must first be cast to its base data type value before participating in operations such as addition and subtraction.
Типу данных sql_variant может быть присвоено значение по умолчанию.sql_variant can be assigned a default value. Этот тип данных в качестве значения может содержать значение NULL, однако значению NULL не будет соответствовать базовый тип.This data type can also have NULL as its underlying value, but the NULL values will not have an associated base type. Кроме того, тип данных sql_variant не может в качестве базового иметь другой тип данных sql_variant.Also, sql_variant cannot have another sql_variant as its base type.
Уникальный, первичный или внешний ключ может содержать столбцы типа sql_variant, но общая длина значений данных, составляющих ключ определенной строки, не должна превышать максимальную длину индекса.A unique, primary, or foreign key may include columns of type sql_variant, but the total length of the data values that make up the key of a specific row should not be more than the maximum length of an index. Эта длина составляет 900 байт.This is 900 bytes.
Таблица может иметь любое количество столбцов типа sql_variant.A table can have any number of sql_variant columns.
Тип sql_variant нельзя использовать в инструкциях CONTAINSTABLE и FREETEXTTABLE.sql_variant cannot be used in CONTAINSTABLE and FREETEXTTABLE.
Протокол ODBC поддерживает тип sql_variant не полностью.ODBC does not fully support sql_variant. Поэтому столбцы типа sql_variant, запрашиваемые через поставщик Microsoft OLE DB для ODBC (MSDASQL), возвращаются в виде двоичных данных.Therefore, queries of sql_variant columns are returned as binary data when you use Microsoft OLE DB Provider for ODBC (MSDASQL). Например, столбец типа sql_variant, содержащий строку «PS2091», возвращается в виде 0x505332303931.For example, a sql_variant column that contains the character string data ‘PS2091’ is returned as 0x505332303931.
Числовые типы данных
Как и следовало ожидать по их названию, числовые типы данных применяются для представления чисел. Эти типы и их краткое описание приводятся в таблице ниже:
Тип данных | Описание |
---|---|
INTEGER |
Представляет целочисленные значения длиной в 4 байта в диапазоне от -232 до 232 — 1. INT — сокращенная форма от INTEGER. |
SMALLINT |
Представляет целочисленные значения длиной в 2 байта в диапазоне от -32 768 до 32 767 |
TINYINT |
Представляет целочисленные значения длиной в 1 байт в диапазоне от 0 до 255 |
BIGINT |
Представляет целочисленные значения длиной в 8 байт в диапазоне от -263 до 263 — 1 |
DECIMAL(p,) |
Представляет значения с фиксированной точкой. Аргумент p (precision — точность) указывает общее количество разрядов, а аргумент s (scale — степень) — количество разрядов справа от полагаемой десятичной точки. В зависимости от значения аргумента p, значения decimal сохраняются в 5 до 17 байтах. DEC — сокращенная форма от DECIMAL. |
NUMERIC(p,) |
Синоним DECIMAL. |
REAL |
Применяется для представления значений с плавающей точкой. Диапазон положительных значений простирается приблизительно от 2,23E -308 до -1,18E -38. Также может быть представлено и нулевое значение. |
FLOAT |
Подобно типу REAL, представляет значения с плавающей точкой . Аргумент p определяет точность. При значении p < 25 представляемые значения имеют одинарную точность (требуют 4 байта для хранения), а при значении p >= 25 — двойную точность (требуют 8 байтов для хранения). |
MONEY |
Используется для представления денежных значений. Значения типа MONEY соответствуют 8-байтовым значениям типа DECIMAL, округленным до четырех разрядов после десятичной точки |
SMALLMONEY |
Представляет такие же значения, что и тип MONEY, но длиной в 4 байта |
Пример — использование условия IN с числовыми значениями
Далее давайте посмотрим, как использовать условие IN с числовыми значениями.
В этом примере у нас есть таблица customer и следующими данными:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | NULL |
9000 | Russell | Crowe | google.com |
Введите следующий SQL оператор:
PgSQL
SELECT *
FROM customers
WHERE customer_id IN (5000, 7000, 8000, 9000);
1 |
SELECT* FROMcustomers WHEREcustomer_idIN(5000,7000,8000,9000); |
Будет выбрано 4 записи. Вот результаты, которые вы должны получить:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
5000 | Selena | Gomez | bing.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | NULL |
9000 | Russell | Crowe | google.com |
В этом примере будут возвращены все записи из таблицы customers, где customer_id равен 5000, 7000, 8000 или 9000.
Это эквивалентно следующему оператору SQL:
PgSQL
SELECT *
FROM customers
WHERE customer_id = 5000
OR customer_id = 7000
OR customer_id = 8000
OR customer_id = 9000;
1 |
SELECT* FROMcustomers WHEREcustomer_id=5000 ORcustomer_id=7000 ORcustomer_id=8000 ORcustomer_id=9000; |
Округление типа данных datetime до долей секундыRounding of datetime Fractional Second Precision
Значения типа datetime округляются в большую сторону до 0,000, 0,003 или 0,007 секунды, как показано в таблице, представленной ниже.datetime values are rounded to increments of .000, .003, or .007 seconds, as shown in the following table.
Указанное пользователем значениеUser-specified value | Значение, хранимое системойSystem stored value |
---|---|
01/01/98 23:59:59.99901/01/98 23:59:59.999 | 1998-01-02 00:00:00.0001998-01-02 00:00:00.000 |
01/01/98 23:59:59.99501/01/98 23:59:59.99501/01/98 23:59:59.99601/01/98 23:59:59.99601/01/98 23:59:59.99701/01/98 23:59:59.99701/01/98 23:59:59.99801/01/98 23:59:59.998 | 1998-01-01 23:59:59.9971998-01-01 23:59:59.997 |
01/01/98 23:59:59.99201/01/98 23:59:59.99201/01/98 23:59:59.99301/01/98 23:59:59.99301/01/98 23:59:59.99401/01/98 23:59:59.994 | 1998-01-01 23:59:59.9931998-01-01 23:59:59.993 |
01/01/98 23:59:59.99001/01/98 23:59:59.99001/01/98 23:59:59.99101/01/98 23:59:59.991 | 1998-01-01 23:59:59.9901998-01-01 23:59:59.990 |
Числовые типы данных
Ниже приведены числовые типы данных в SQL Server (Transact-SQL):
Синтаксис типа данных | Максимальный размер | Пояснение |
---|---|---|
BIT | Целое число, которое может быть 0, 1 или NULL. | |
TINYINT | От 0 до 255 | |
SMALLINT | -32768 до 32767 | |
INT | -2,147,483,648 до 2,147,483,647 | |
BIGINT | -9,223,372,036,854,775,808 — 9,223,372,036,854,775,807 | |
DECIMAL(m,d) | m по умолчанию — 18, если не указано. d по умолчанию равно 0, если не указано. |
Где m — это суммарное количество цифр, а d — количество цифр после десятичного знака. |
DEC(m,d) | m по умолчанию — 18, если не указано. d по умолчанию равно 0, если не указано. |
Где m — это суммарное количество цифр, а d — количество цифр после десятичного знака. Это синоним типа DECIMAL. |
NUMERIC(m,d) | m по умолчанию — 18, если не указано. d по умолчанию равно 0, если не указано. | Где m — это суммарные цифры, а d — количество цифр после десятичного знака. Это синоним типа DECIMAL. |
FLOAT(n) | Число с плавающей точкой. n по умолчанию — 53, если не указано. | Где n — количество бит, которое должно храниться в научной нотации. |
REAL | Эквивалент FLOAT (24) | |
SMALLMONEY | — 214,748.3648 до 214,748.3647 | |
MONEY | -922,337,203,685,477,5808 до 922,337,203,685,477.5807 |