602SQL-Úplná dokumentace Index  

Datové typy (SQL)

Datový typ určuje množinu možných hodnot pro sloupec tabulky, proměnnou, parametr rutiny nebo hodnotu funkce. 602SQL disponuje těmito typy:

typ ::= řetězec_znaků [jazyk_a_kódování] | binární_objekt | řetězec_bitů | přesný_číselný_typ 
    | přibližný_číselný_typ | BOOLEAN | DATE | TIME [WITH TIME ZONE] | TIMESTAMP [WITH TIME ZONE] 
    | identifikátor_domény
řetězec_znaků ::= CHAR [( délka )] | CHAR VARYING ( délka ) | VARCHAR ( délka ) | NCHAR [( délka )] 
    | NCHAR VARYING ( délka ) | CLOB [( délka )] | NCLOB [( délka )]
binární_objekt ::= BLOB [( délka )]
řetězec_bitů ::= BINARY ( délka ) | VARBINARY ( délka ) | BIT [( délka )] | BIT VARYING ( délka )
přesný_číselný_typ ::= INTEGER | SMALLINT | TINYINT | BIGINT | DECIMAL [( přesnost [, decim ] )] 
    | NUMERIC [( přesnost [, decim ] )]
přibližný_číselný_typ ::= REAL | DOUBLE PRECISION | FLOAT [( přesnost )]

Ve výše uvedených pravidlech lze beze změny významu místo INTEGER psát INT, místo DECIMAL psát DEC, místo CHAR psát CHARACTER, místo NCHAR psát NATIONAL CHAR nebo NATIONAL CHARACTER, místo CLOB psát CHAR LARGE OBJECT nebo CHARACTER LARGE OBJECT a místo BLOB psát BINARY LARGE OBJECT.

Kvůli kompatibilitě s ODBC lze místo CLOB psát také LONG VARCHAR a místo BLOB psát LONG VARBINARY, místo BIT VARYING psát VARBINARY.

Typům jazyka SQL odpovídají "fyzické" datové typy, které používá klientský program, pokud ze serveru čte data nebo předává svá data na server. Níže uvedená tabulka definuje vzájemnou souvislost obou množin typů. Ve třetím sloupci jsou uvedeny konstanty používané pro označení fyzických typů.

Popis typu v SQL fyzická reprezentace označení číslo
CHAR jeden znak ATT_CHAR 2
CHAR(n), CHAR VARYING(n), VARCHAR(n), pro n<=4090 řetězec znaků délky nejvýše n ATT_STRING 7
NCHAR(n), NCHAR VARYING(n), pro n<=4090 řetězec znaků v Unicode délky nejvýše n ATT_STRING 7
CLOB, CLOB(n) řetězec znaků proměnné neomezené délky ATT_TEXT 20
NCLOB, NCLOB(n) řetězec znaků v Unicode proměnné neomezené délky ATT_TEXT 20
BLOB, BLOB(n) posloupnost bajtů proměnné neomezené délky ATT_NOSPEC 21
BINARY(n) pro n<=4090 posloupnost n bajtů ATT_BINARY 10
BIT, BIT(1), BOOLEAN booleovské hodnoty TRUE, FALSE nebo UNKNOWN ATT_BOOLEAN 1
BIT(n), BIT VARYING(n) pro 1<n<=8*4090 posloupnost (n-1) / 8 + 1 bajtů ATT_BINARY 10
INTEGER 4-bajtové celé číslo ATT_INT32 4
SMALLINT 2-bajtové celé číslo ATT_INT16 3
TINYINT 1-bajtové celé číslo ATT_INT8 45
BIGINT 8-bajtové celé číslo ATT_INT64 46
DECIMAL(n, d), NUMERIC(n, d) pro n <= 2 1-bajtové číslo se scale d ATT_INT8 45
DECIMAL(n, d), NUMERIC(n, d) pro 2 < n <= 4 2-bajtové číslo se scale d ATT_INT16 3
DECIMAL(n, d), NUMERIC(n, d) pro 4 < n <= 9 4-bajtové číslo se scale d ATT_INT32 4
DECIMAL(n, d), NUMERIC(n, d) pro n > 9 8-bajtové číslo se scale d ATT_INT64 46
REAL, DOUBLE PRECISION, FLOAT, FLOAT(n) 8-bajtové reálné číslo ATT_FLOAT 6
DATE datum zakódované v 4-bajtovém čísle ATT_DATE 11
TIME, TIME WITH TIME ZONE čas zakódovaný v 4-bajtovém čísle ATT_TIME 12
TIMESTAMP, TIMESTAMP WITH TIME ZONE datum a čas zakódované v 4-bajtovém čísle ATT_TIMESTAMP 13

Do všech typů patří zvláštní hodnota NULL. Pro typu BOOLEAN je tato hodnota totožná s hodnotou UNKNOWN. Pro řetězce znaků a typ BLOB je totožná s řetězcem nulové délky. Pro binární řetězce pevné délky je totožná s řetězcem obsahujícím pouze nuly. Pro ostatní typy je tato hodnota různá od všech hodnot specifikovaných pro tento typ v tabulce.

Odchylky od Intermediate level směrem k Entry level

Odchylky od Intermediate level směrem k Full level nebo k SQL 3

Implementací definované vlastnosti SQL ve 602SQL

Požadavky na operační systém

Na Windows existuje plná podpora pro řetězce v Unicode a 8bitové řetězce v jiném než Windows kódování pouze pro verze 2000, XP a novější. Na Linuxu závisí podpora znakových sad na konfiguraci operačního systému - znakové sady ISO zpravidla jsou podporovány, kódové stránky z Windows obvykle nejsou.

Seznam subsekcí: