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)

Přesná čísla v SQL (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:

INTEGER data type

Jsou to celá čísla, seznam viz tabulka

Datový typ Obor hodnot Velikost
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
TINYINT 0 do 255 1 Byte

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ý typ Preciznost Velikost je dle preciznosti
NUMERIC 1-38 1-9 = 5 Bytes; 10-19 = 9Bytes; 20-28 = 13 Bytes; 29-38 = 17 Bytes
DECIMAL 1-38 1-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ář.

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ý typ Obor hodnot Velikost
MONEY -922,337,203,685,477.5808 do 922,337,203,685,477.5807 8 Bytes
SMALLMONEY – 214,748.3648 do 214,748.3647 4 Bytes

Přibližná čísla v SQL (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ý typ Obor hodnot Velikost
FLOAT – 1.79E+308 do -2.23E-308, 0 a 2.23E-308 do 1.79E+308 Záleží na “n”
REAL – 3.40E + 38 do -1.18E – 38, 0 a 1.18E – 38 do 3.40E + 38 4 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. 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

Rate this post
Rubrika: SQL návody

O Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako data engineer freelancer. Během cca 10 let jsem zde shromáždil přes 600 IT case studies, průvodců, návodů a tipů určených zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Data Engineeringu, korporátních financí a reportingu. Zaměřuji se především na Microsoft technologie (on-prem i cloud) a různé synergické efekty v rámci jejich produktového portfolia pro dataře a finanční profesionály. Věnuji se také dalším platformám a významným hráčům z oblasti open source technologií. 🔥 Pokud vám tento článek pomohl, ocením referenci na vašem webu nebo zmínku v komunitě. A mám pro vás ještě tip: řešíte-li nějaký zapeklitý Excel problém, přihlašte se do naší Excel Facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse ».

Leave a Reply

Your email address will not be published. Required fields are marked *