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

Poslední aktualizace:

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

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ý 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ář.

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

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

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Category: SQL tutorial Tags:

About Ing. Jan Zedníček - BI Developer, Finance controller

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.