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   |
------------------------------------------------

 


Споріднені теми