Co je datový typ?
Datový typ je definován jako typ dat, který může libovolný sloupec nebo proměnná uložit na MS SQL Server.
Při vytváření libovolné tabulky nebo proměnné kromě určení názvu také nastavíte typ dat, která bude ukládat.
Jak používat datový typ MS SQL
- Musíte předem definovat, jaký typ dat může sloupec nebo proměnná ukládat. Určení datového typu také omezuje uživatele v zadávání jakýchkoli neočekávaných nebo neplatných dat.
- Paměť můžete efektivně využít přidělením příslušného datového typu proměnné nebo sloupci, který přidělí pouze požadované množství systémové paměti pro data příslušného sloupce.
- MS SQL nabízí širokou kategorii datového typu podle potřeb uživatele. Jako datum, binární obrázky atd.
V tomto výukovém programu se naučíte:
- Co je datový typ?
- Jak používat datový typ MS SQL
- Proč používat DataTypes?
- Přesné číselné
- Přibližné číselné
- Datum a čas
- Řetězce znaků
- Řetězce znaků Unicode
- Binární řetězec
- Jiné datové typy
Proč používat DataTypes?
Podívejme se na ukázku jednoduché stránky Registrace webové aplikace. Tři vstupní pole jsou Jméno, Příjmení a Kontaktní číslo.
Zde bychom měli poznamenat, že v reálném čase:
- „Jméno / příjmení“ bude vždy abecední .
- „Kontakt“ bude vždy číselný .
- Z obrázku nahoře stojí za to definovat „Jméno / Příjmení“ jako znak a „ Kontakt“ jako celé číslo .
Je zřejmé, že v jakékoli aplikaci mají všechna pole jeden nebo druhý typ dat. Např. Číselné, abecední, datum a mnoho dalších.
Všimněte si také, že různé datové typy mají různé požadavky na paměť. Proto má větší smysl definovat sloupec nebo proměnnou s datovým typem, který bude obsahovat pro efektivní využití paměti.
Datový typ dostupný v MS SQL
MS SQL server podporuje následující kategorie datového typu:
- Přesné číselné
- Přibližné číselné
- Datum a čas
- Řetězce znaků
- Řetězce znaků Unicode
- Binární řetězce
- Další datové typy
Přesné číselné
Přesná numerická má devět typů sub-datových typů. Přesné číselné datové typy
Datový typ | Popis | Spodní limit | Horní limit | Paměť |
---|---|---|---|---|
bigint | Ukládá celá čísla v uvedeném rozsahu | −2 63 (−9 223 372, 036 854 775 808) | 2 63-1 (−9 223 372, 036 854 775 807) | 8 bytů |
int | Ukládá celá čísla v uvedeném rozsahu | −2 31 (−2 147, 483 648) | 2 31-1 (−2 147, 483 647) | 4 byty |
smallint | Ukládá celá čísla v uvedeném rozsahu | −2 15 (−32 767) | 2 15 (-32 768) | 2 bajty |
maličký | Ukládá celá čísla v uvedeném rozsahu | 0 | 255 | 1 bajt |
bit | Může nabývat hodnot 0, 1 nebo NULL. | 0 | 1 | 1 bajt / 8bitový sloupec |
desetinný | Používá se pro měřítko a čísla s pevnou přesností | -10 38 + 1 | 10 381-1 | 5 až 17 bajtů |
číselný | Používá se pro měřítko a čísla s pevnou přesností | -10 38 + 1 | 10 381-1 | 5 až 17 bajtů |
peníze | Použité peněžní údaje | -922 337, 203, 685 477,5808 | +922 337 203 685 477 5807 | 8 bytů |
malé peníze | Použité peněžní údaje | -214 478,3648 | +214 478 3647 | 4 byty |
Příklady:
Dotaz:
DECLARE @Datatype_Int INT = 2PRINT @Datatype_Int
Výstup: 2
Syntaxe: Desetinná (P, S)
Tady,
- P je přesnost
- S je měřítko
Dotaz:
DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31PRINT @Datatype_Decimal
Výstup: 2.31
Přibližné číselné
Přibližná číselná kategorie zahrnuje plovoucí desetinnou čárku a skutečné hodnoty. Většinou se používají ve vědeckých výpočtech. Přibližný číselný datový typ
Datový typ | Popis | Spodní limit | Horní limit | Paměť | Přesnost |
---|---|---|---|---|---|
float (n) | Používá se pro plovoucí přesné číslo | -1,79 E + 308 | 1,79E + 308 | Závisí na hodnotě n | 7 číslic |
nemovitý | Používá se pro plovoucí přesné číslo | -3,40 E + 38 | 3,40 E + 38 | 4 byty | 15 číslic |
Syntax: FLOAT [(n)]
Zde n je počet bitů, které se používají k uložení mantisy čísla float ve vědecké notaci. Ve výchozím nastavení je hodnota n 53.
Když uživatel definuje datový typ jako float, n by měla být hodnota mezi 1 a 53.
SQL Server považuje n za jednu ze dvou možných hodnot. Pokud 1 <= n <= 24, n je považováno za 24. Pokud 25 <= n <= 53, n je považováno za 53.
Příklad dotazu:
DECLARE @Datatype_Float FLOAT(24) = 22.1234PRINT @Datatype_Float
Výstup: 22.1234
Datum a čas
Ukládá data typu Datum a čas. Datový typ data a času
Datový typ | Popis | Velikost úložiště | Přesnost | Nižší rozsah | Horní rozsah |
---|---|---|---|---|---|
Čas schůzky | Používá se k určení data a času od 1. ledna 1753 do 31. prosince 9999. Má přesnost 3,33 milisekund. | 8 bytů | Zaokrouhleno na přírůstky 0,000, 0,003, 0,007 | 1753-01-01 | 9999-12-31 |
malý čas | Používá se k určení data a času od 1. ledna 0001 do 31. prosince 9999. Má přesnost 100 nanosekund | 4 bajty, opraveno | 1 minuta | 1900-01-01 | 2079-06-06 |
datum | Slouží k uložení pouze data od 1. ledna 0001 do 31. prosince 9999 | 3 bajty, opraveno | 1 den | 0001-01-01 | 9999-12-31 |
čas | Slouží k ukládání pouze časových hodnot s přesností na 100 nanosekund. | 5 bajtů | 100 nanosekund | 00: 00: 00,0000000 | 23: 59: 59,9999999 |
datetimeoffset | Podobně jako datatime, ale má posun časového pásma | 10 bajtů | 100 nanosekund | 0001-01-01 | 9999-12-31 |
datetime2 | Slouží k zadání data a času od 1. ledna 0001 do 31. prosince 9999 | 6 bytů | 100 nanosekund | 0001-01-01 | 9999-12-31 |
Příklad dotazu:
DECLARE @Datatype_Date DATE = '2030-01-01'PRINT @Datatype_Date
Výstup: '2030-01-01'
Řetězce znaků
Tato kategorie souvisí s typem postavy. Umožňuje uživateli definovat datový typ znaku, který může mít pevnou a proměnnou délku. Má čtyři druhy datových typů. Datové typy řetězců znaků
Datový typ | Popis | Spodní limit | Horní limit | Paměť |
---|---|---|---|---|
char | Jedná se o řetězec znaků s pevnou šířkou. Ukládá maximálně 8 000 znaků. | 0 znaků | 8000 znaků | n bajtů |
varchar | Toto je řetězec znaků s proměnnou šířkou | 0 znaků | 8000 znaků | n bajtů + 2 bajty |
varchar (max) | Toto je řetězec znaků s proměnnou šířkou. Ukládá maximálně 1 073 741 824 znaků. | 0 znaků | 2 31 znaků | n bajtů + 2 bajty |
text | Toto je řetězec znaků s proměnnou šířkou. Ukládá maximálně 2 GB textových dat. | 0 znaků | 2 147 483 647 znaků | n bajtů + 4 bajty |
Příklad dotazu:
DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype'PRINT @Datatype_Char
Výstup: Toto je datový typ znaků
Řetězce znaků Unicode
Tato kategorie ukládá celou škálu znaků Unicode, která používá kódování znaků UTF-16. Datové typy znakových řetězců Unicode
Datový typ | Popis | Spodní limit | Horní limit | Paměť |
---|---|---|---|---|
nchar | Jedná se o řetězec Unicode pevné šířky | 0 znaků | 4000 znaků | 2 krát n bajtů |
nvarchar | Jedná se o unicode řetězec proměnné šířky | 0 znaků | 4000 znaků | 2krát n bajtů + 2 bajty |
ntext | Jedná se o unicode řetězec proměnné šířky | 0 znaků | 1073 741 823 znaků | 2násobek délky řetězce |
Příklad dotazu:
DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype'PRINT @Datatype_nChar
Výstup: Toto je datový typ nCharacter
Binární řetězec
Tato kategorie obsahuje binární řetězec pevné a proměnné délky. Binární řetězce datových typů
Datový typ | Popis | Spodní limit | Horní limit | Paměť |
---|---|---|---|---|
binární | Je to binární řetězec s pevnou šířkou. Ukládá maximálně 8 000 bajtů. | 0 bajtů | 8000 bajtů | n bajtů |
varbinary | Toto je binární řetězec proměnné šířky. Ukládá maximálně 8 000 bajtů | 0 bajtů | 8000 bajtů | Skutečná délka zadaných dat + 2 bajty |
obraz | Toto je binární řetězec proměnné šířky. Ukládá maximálně 2 GB. | 0 bajtů | 2 147 483 647 bajtů |
Příklad dotazu:
DECLARE @Datatype_Binary BINARY(2) = 12;PRINT @Datatype_Binary
Výstup: 0x000C
Jiné datové typy
Jedná se o další různé datové typy s níže uvedeným popisem-
Datový typ | Popis |
---|---|
Kurzor | Jeho výstupem je sloupec sp_cursor_list a sp_describe_cursor. Vrátí název proměnné kurzoru. |
Řádková verze | Verze orazítkuje řádky tabulky. |
Hierarchyid | Tento datový typ představuje pozici v hierarchii |
Unikátní identifikátor | Převod z výrazu znaků. |
Sql_variant | Ukládá hodnoty datových typů podporovaných serverem SQL. |
XML | Ukládá data XML do sloupce. |
Typ prostorové geometrie | Představuje data v plochém souřadnicovém systému. |
Typ prostorové geografie | Představuje data v souřadnicovém systému Země. |
stůl | Ukládá sadu výsledků pro pozdější zpracování. |
Zajímavosti!
- Datový typ CHAR je při načítání dat rychlejší než VARCHAR.
Souhrn:
- Každý sloupec v tabulkách se při vytváření tabulky definuje svým datovým typem.
- Existuje šest hlavních kategorií a jedna další různá kategorie. Ostatní různé mají k dispozici devět podkategorií datových typů.