SQL Číselné datové typy – Velký přehled

V tomto článku navážu na předchozí příspěvek o Datových typech a proberu zde číselné datové typy a jejich vlastnosti. Díky volbě správného datového typu můžete ušetřit diskové kapacity. Stačí se zamyslet nad oborem hodnot sloupce, který chcete reprezentovat a pak zvolit správný typ.

V SQL Server rozeznáváme 2 kategorie Číslených datových typů z hlediska preciznosti vyjádření čísla.

  1. Přesné číselné datové typy (Exact numerics)
  2. Přibližný číselný datový typ (Approximate numerics)

1 Přesná čísla (Exact Numerics)

Jak název napovídá, jedná se o datový typ, který dokáže reprezentovat číslo zcela precizně = přesně. Tuto kategorii můžeme rozdělit na:

A) INTEGER data type – jsou to celá čísla, seznam viz tabulka

Datový typObor hodnotVelikost
BIGINT-2^63 (-9,223,372,036,854,775,808) do 2^63-1 (9,223,372,036,854,775,807)8 Bytes
INT-2^31 (-2,147,483,648) do 2^31-1 (2,147,483,647)4 Bytes
SMALLINT-2^15 (-32,768) do 2^15-1 (32,767)2 Bytes
TINYINT0 do 2551 Byte

B) NUMERIC data type – Vyznačují se tím, že musí být dopředu a pevně definován počet číslic a preciznost – počet desetinných míst. Např. DECIMAL (10,2) znamená, že číslo je s přesností na 2 desetinná místa a obsahuje 8 číslic před desetinnou čárkou = celkem 10 číslic.

Datový typPreciznostVelikost je dle preciznosti
NUMERIC1-381-9 = 5 Bytes; 10-19 = 9Bytes; 20-28 = 13 Bytes; 29-38 = 17 Bytes
DECIMAL1-381-9 = 5 Bytes; 10-19 = 9Bytes; 20-28 = 13 Bytes; 29-38 = 17 Bytes

Abych se přiznal příliš nevnímám rozdíl mezi těmito datovými typy, pokud by někdo věděl dejte komentář.

C) MONEY data type – jsou určeny k reprezentování peněžních vyjádření nebo například vyjádření měnových kurzu. Hodí se všude tam, kde nám stačí preciznost na 4 desetinná místa

Datový typObor hodnotVelikost
MONEY-922,337,203,685,477.5808 do 922,337,203,685,477.58078 Bytes
SMALLMONEY– 214,748.3648 do 214,748.36474 Bytes

2 Přibližná čísla (Exact Numerics)

Jak jsem již naznačil, tato skupina datových typů nereprezentuje preciznost čísel zcela přesně. Řadíme sem FLOAT(n) a REAL sql data type:

Datový typObor hodnotVelikost
FLOAT– 1.79E+308 do -2.23E-308, 0 a 2.23E-308 do 1.79E+308Záleží na „n“
REAL– 3.40E + 38 do -1.18E – 38, 0 a 1.18E – 38 do 3.40E + 384 Bytes

Příklad nedostatečné preciznosti FLOAT datového typu:

Pokud potřebujeme vyjádřit číslo precizně, měli bychom se přibižným datovým typům (FLOAT, REAL) vyhnout. Než přejdu k popisu jednotlivých číselných typů, ukážu zde screenshot z knihy „Training Kit (Exam 70-461) Querying Microsoft SQL Server 2012“, který mě zaujal (mimochodem knihu doporučuji). Na tomto příkladu je vidět, že použitím Přibližného datového typu je v některých situacích nevhodné, nota bene pokud jde o čárové kódy 🙂

SQL Číselné datové typy

Zdroj: Training Kit (Exam 70-461): Querying Microsoft SQL Server 2012; Autoři: Itzik Ben-Gan, Dejan Sarka, Ron Talmage; ISBN: 978-0-7356-6605-4

Reagovat na příspěvek