Firebird 7.díl, Datové typy

Napsal O webu (») 25. 11. 2007 v kategorii Databáze, přečteno: 3568×

Číselné datové typy

Tento článek je psán za podpory webhostingu banan.cz, který Firebird plně podporuje.

Číselné datové typy

Firebird podporuje tři typy číselných datových typů a to: celočíselné datové typy, čísla s pevnou desetinou čárkou a čísla s pohyblivou desetinou čárkou.

Celočíselné datové typy

Všechny celočíselné datové typy jsou se znaménkem, Firebird nepodporuje celočíselné typy bez znaménka. S celými čísly lze provádět následující operace:


1. Porovnávání: podle relačních operátorů (=,!=,<,>,>=,<=).


2. Aritmetické operace: sčítání, odčítání, násobení a dělení.


3. Konverze: při realizaci aritmetických operací nad různými datovými typy provádí Firebird konverzi mezi datovými typy INTEGER, FLOAT a CHAR. Při operacích, které porovnávají jiné, než číselné datové typy, provádí Firebird vždy nejprve konverzi těchto typů na číselný typ.


4. Třídění: Pomocí parametru ORDER BY příkazu SELECT lze čísla seřadit vzestupně nebo sestupně.


Následující tabulka uvádí celočíselné datové typy spolu jejich numerickými limity.


NázevVelikostRozsah
SMALLINT16b–32,768 až 32,767
INTEGER32b–2,147,483,648 až 2,147,483,647
BIGINT64b–2^63 až 2^63–1


Příklad definice domény a tabulky:


CREATE DOMAIN dom1 AS INTEGER // definice domény
CREATE TABLE tab1 (sloup1 SMALLINT) //definice sloupce tabulky

Čísla s pevnou desetinou čárkou

Firebird podporuje dva číselné typy jazyka SQL pro práci s čísly s pevnou desetinou čárkou: DECIMAL a NUMERIC. Pro oba typy lze volitelně specifikovat rozsah a přesnost. Tyto datové typy bývají také označovány jako přesná čísla a jsou vhodná například pro práci s peněžními částkami.


Rozsah (precision) – představuje celkový nebo maximální počet platných číslic, významných i desetinných, který sloupec tohoto typu může pojmout. Rozsah je specifikován v rozmezí číslic 1 až 18.


Přesnost (scale) – představuje počet desetinných míst. Přesnost je v rozsahu 0 až po definovaný rozsah (přesnost musí být menší nebo rovna rozsahu).


Syntaxe definice datových typů NUMERIC a DECIMAL


Prom1 NUMERIC (rozsah,přesnost);
Prom2 DECIMAL (rozsah,přesnost);



Oba typy lze definovat bez přesnosti a rozsahu, pouze s rozsahem, nebo s rozsahem i přesností. Pokud není přesnost a rozsah definovány, je položka definována s rozsahem 9 a přesností 0. Rozdíl mezi oběma typy je v chápání definovaného rozsahu. U typu DECIMAL představuje rozsah minimální počet platných číslic, které musí datová položka pojmou. U typu NUMERIC představuje rozsah přesný počet platných číslic, jež datová položka pojme.
Firebird implementuje typy DECIMAL a NUMERIC jako tzv. škálovaná celá čísla. To znamená, že jsou tato čísla uložena jako celá čísla typu SMALLINT,INTEGER nebo BIGINT podle zvoleného rozsahu, viz. následující tabulka.


RozsahUložení jako
DECIMAL rozsah 1-9INTEGER (32b)
DECIMAL rozsah 10-18BIGINT (64b)
NUMERIC rozsah 1-4SMALLINT (16b)
NUMERIC rozsah 5-9INTEGER (32b)
NUMERIC rozsah 10-18BIGINT (64b)


Příklad definice domény a sloupce tabulky:


CREATE DOMAIN dom1 AS DECIMAL(15,2)
CREATE TABLE tab1 (COL1 NUMERIC(5));

Čísla s pohyblivou desetinnou čárkou

Firebird poskytuje dva číselné typy pro práci s pohyblivou desetinnou čárkou, které se liší pouze velikostí. Čísla s pohyblivou desetinnou čárkou použijte jen tehdy, bude-li se měnit počet desetinných míst, nebo pro vědecké účely. Tento typ čísel není vhodný pro přesné výpočty nebo pro uložení peněžních částek. Následující tabulka uvádí zmiňované datové typy spolu jejich numerickými limity.


NázevVelikostRozsah
FLOAT32b1.175 * 10^-38 až 3.402 * 10^38
DOUBLE PRECISION64b2.225 * 10^-308 až 1.797 * 10^308


Rozsah čísel typu FLOAT a DOUBLE PRECISION je neměnný, přesnost pevná není a nelze ji kontrolovat. Pokud číslo daný rozsah překročí, je uloženo pouze přibližně a nejméně významné číslice jsou považovány za nulové. Datový typ FLOAT má rozsah 7 číslic, DOUBLE PRECISION má 15 platných čísel.


Příklad definice domény a sloupce tabulky:


CREATE DOMAIN dom1 AS DOUBLE PRECISION
CREATE TABLE tab1 (COL1 FLOAT);



Autor: Robert Habrman
Štítky: Firebird
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel sedm a nula