SQL. Числовые типы данных. Обзор. Примеры

Числовые типы данных. Обзор. Примеры


Содержание


Поиск на других ресурсах:

1. Обзор числовых типов данных

В Microsoft SQL Server поддерживаются следующие числовые типы данных:

  • bit – целочисленный тип данных, который может принимать 1, 0 или NULL;
  • decimal или numeric – тип с фиксированной точностью и масштабом;
  • float или real – типы приближенных числовых данных;
  • int, bigint, smallint, tinyint – целочисленные типы данных;
  • money, smallmoney – типы, представляющие денежные (валютные) значения.

 

2. Тип данных bit. Пример

Тип данных bit определяет данные, которые могут принимать 0, 1 или Null. Нулевые значения воспринимаются как 0 (ноль), а любые ненулевые значения воспринимаются как 1. Значение Null это не нулевое значение, то есть оно не равно 0.

-- Создать таблицу с типом данных bit
CREATE TABLE [Flags]
(
    Flag1 BIT Not Null,
    Flag2 BIT Not Null,
    Flag3 BIT Not Null
);

INSERT INTO [Flags]
VALUES ( 5, 0, 15 );

INSERT INTO [Flags]
VALUES ( 0, 0, 11 );

INSERT INTO [Flags]
VALUES ( 1, 100, 1 );

SELECT * FROM [Flags]

Результат

------------------------
Flag1 | Flag2 | Flag3 |
------------------------
  1   |   0   |   1   |
  0   |   0   |   1   |
  1   |   1   |   1   |
------------------------

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

 

3. Типы данных DECIMAL или NUMERIC. Пример

Типы данных DECIMAL и NUMERIC определяют цифры с фиксированной точностью и масштабом.

Общая форма объявления этих типов данных следующая:

DECIMAL[(p[,s])]
NUMERIC[(p[,s])]

здесь

  • p – точность (precision). Это максимальное общее количество десятичных разрядов. Значение p может колебаться от 1 до 38. По умолчанию p = 18;
  • s – масштаб. Это максимальное количество десятичных разрядов, размещенных справа от десятичной запятой. Масштаб должен иметь значение от 0 до p, т.е. 0 ≤ s ≤ p. По умолчанию s=0.

Пример.

-- Создать таблицу с типами данных DECIMAL и NUMERIC
CREATE TABLE [Numbers]
(
    Column1 DECIMAL(10,0),
    Column2 DEC(10,2),   -- это синоним к DECIMAL
    Column3 NUMERIC(8,4),
    Column4 DECIMAL,
    Column5 NUMERIC
);

INSERT INTO [Numbers]
VALUES ( 1.23, 1.234, 1234.567, 12.34, 12345 );

SELECT * FROM [Numbers];

Результат

---------------------------------------------------
Column1 | Column2 |   Column3 | Column4 | Column5 |
---------------------------------------------------
   1   |   1.23 | 1234.5670 |   12   | 12345 |
---------------------------------------------------

 

4. Типы данных float или real. Пример

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

float[(n)]
real

Здесь n – количество битов, используемых для отображения мантисс числа в формате float. Это значение отображает точность данных и формат хранения. Значение n может быть от 1 до 53.

В соответствии со значением n устанавливается точность. Все это оотображается в следующей таблице.

Значение n Точность Объем памяти
1..24 7 знаков 4 байта
25..53 15 знаков 8 байт

 

Тип real есть синонимом к типу

float(24)

Пример. В примере создается таблица, содержащая объявления типов float и real

-- Создать таблицу с типами данных FLOAT и REAL
CREATE TABLE [FloatNumbers]
(
    Column1 FLOAT,
    Column2 REAL,     -- это синоним к FLOAT(24)
    Column3 FLOAT(1), -- минимальная точность, 4 байта
    Column4 FLOAT(53), -- максимальная точность, 8 байт
    Column5 FLOAT(10), -- 4 байта
);

INSERT INTO [FloatNumbers]
VALUES (
    1234.56789,
    1234.56789,
    1234.56789,
    12.3456789,
    12.3456789
);

SELECT * FROM [FloatNumbers];

Результат

-----------------------------------------------------------
 Column1   |  Column2 | Column3  |   Column4   | Column5 |
-----------------------------------------------------------
1234.56789 | 1234.568 | 1234.568 | 12.3456789  | 12.34568 |
-----------------------------------------------------------

 

5. Типы данных int, bigint, smallint, tinyint. Пример

Типы данных int, bigint, smallint, tinyint – это целочисленные типы данных. Характеристики типов определяются согласно нижеследующей таблице.

Тип данных Диапазон Представление диапазона Память, байт
bigint -9 223 372 036 854 775 808 . . 9 223 372 036 854 775 807 -263..263-1 8
int -2 147 483 648 . . 2 147 483 647 -231..231-1 4
smallint -32 768 . . 32 767 -215..215-1 2
tinyint 0 . . 255 -20-1..28-1 1

 

Базовым типом сохранения целочисленных значений есть int.

Пример.

-- Создать таблицу с целочисленными типами данных
CREATE TABLE [IntNumbers]
(
    Column1 BIGINT,   -- 8 байт
    Column2 INT,     -- 4 байта
    Column3 SMALLINT, -- 2 байта
    Column4 TINYINT, -- 1 байт
);

INSERT INTO [IntNumbers]
VALUES (
    1234567890,
    1234567,
    12345,
    123
);

SELECT * FROM [IntNumbers];

Результат

----------------------------------------------
   Column1 | Column2 |   Column3 | Column4 |
----------------------------------------------
1234567890 | 1234567 |   12345   |   123   |
----------------------------------------------

 

6. Типы money и smallmoney. Пример

Типы данных money и smallmoney используются для представления денежных (валютных) значений. Эти типы имеют точность до одной десятитысячной денежной единицы.

Тип данных money занимает 8 байт памяти и может снабжать числа из следующего диапазона:

–922,337,203,685,477.5808 .. 922,337,203,685,477.5807

Тип данных smallmoney занимает 4 байта и может снабжать числа из диапазона:

-214 748,3648 ... 214 748,3647

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

Пример.

-- Создать таблицу с денежными типами данных
CREATE TABLE [DemoMoney]
(
    Column1 MONEY,
    Column2 SMALLMONEY,
    Column3 MONEY,
    Column4 SMALLMONEY
);

INSERT INTO [DemoMoney]
VALUES (
    $249500123.99,
    $9.58,
    123456.78,
    0.01
);

SELECT * FROM [DemoMoney];

Результат

------------------------------------------------
   Column1   | Column2 | Column3   | Column4 |
------------------------------------------------
249500123.99 | 9.58    | 123456.78 |   0.01  |
------------------------------------------------

 


Связанные темы