|
![]() | Lexikální elementy | ![]() | Jazyk SQL a jeho implementace | Databázové tabulky | ![]() |
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í:
![]() | Lexikální elementy | ![]() | Jazyk SQL a jeho implementace | Databázové tabulky | ![]() |