SQL Server datové typy s příklady

⚡ Chytré shrnutí

Datové typy SQL Serveru definují typ hodnoty, kterou může sloupec nebo proměnná ukládat, například celé číslo, desetinné číslo, znak, datum nebo binární číslo. Výběr správného typu vynucuje platná data a efektivně využívá paměť.

  • 🔢 Přesné číslo: Funkce bigint, int, smallint, tinyint, bit, decimal, numeric, money a smallmoney ukládají přesná celá čísla a čísla s pevnou desetinnou čárkou.
  • 〰️ Přibližné číslo: Typy float a real ukládají přibližné hodnoty s plovoucí desetinnou čárkou používané ve vědeckých výpočtech.
  • 📅 Datum a čas: datetime, smalldatetime, date, time, datetimeoffset a datetime2 ukládají časové hodnoty.
  • 🔤 Znak a Unicode: Typy char, varchar a text obsahují text; typy nchar, nvarchar a ntext obsahují text v kódování Unicode.
  • ️ Binární a další: binární, varbinary a obrazové úložiště bajtových dat; kurzor, xml a uniqueidentifier pokrývají speciální potřeby.
  • 🧠 Výběr WiseLy: Přiřazení každého sloupce k nejmenšímu vhodnému typu zlepšuje efektivitu úložiště a integritu dat.

SQL Server datové typy s příklady

Co je datový typ?

Datový typ v MS SQL Server je definován jako typ dat, který může ukládat jakýkoli sloupec nebo proměnná. Je to druh dat, která objekt uchovává, například celé číslo, znak nebo řetězec. Při vytváření libovolného tabulka or proměnlivýKromě zadání názvu také nastavíte typ dat, která se budou ukládat.

Jak používat datový typ MS SQL

Typ dat, která může sloupec nebo proměnná ukládat, je nutné definovat předem. Určení datového typu také omezuje uživatele v zadávání neočekávaných nebo neplatných dat.

Paměť můžete efektivně využít přiřazením vhodného datového typu proměnné nebo sloupci, čímž se pro data daného sloupce alokuje pouze požadované množství systémové paměti.

MS SQL nabízí širokou škálu základních datových typů. SQL aby vyhovovaly potřebám uživatelů, jako je datum, binární soubor, obrázky a další.

Proč používat DataTypes?

Vezměme si příklad jednoduché registrační stránky pro webovou aplikaci. Tři vstupní pole jsou Jméno, Příjmení a Kontaktní číslo.

Zde je třeba poznamenat, že v reálných situacích:

  • „Jméno/Příjmení“ bude vždy abecední.
  • „Kontakt“ bude vždy číselný.

Níže uvedený příklad ilustruje tato pole na registračním formuláři.

Příklad registračního formuláře s definicí křestního jména a příjmení jako znaků a kontaktu jako celého čísla

Z výše uvedeného obrázku je jasné, že „Jméno/Příjmení“ bude definováno jako znak a „Kontakt“ jako celé číslo.

Je zřejmé, že v jakékoli aplikaci všechna pole obsahují jeden nebo jiný typ dat, například číselná, abecední, datumová a mnoho dalších.

Také si uvědomte, že různé datové typy mají různé požadavky na paměť. Proto je pro efektivní využití paměti rozumnější definovat sloupec nebo proměnnou s datovým typem, který bude obsahovat.

Datový typ dostupný v MS SQL Server

Zde je seznam datových typů MS SQL Serveru. MS SQL Server podporuje následující kategorie datových typů:

  • Přesné číselné
  • Přibližné číselné
  • Datum a čas
  • Řetězce znaků
  • Znakové řetězce Unicode
  • Binární řetězce
  • Jiné datové typy

Níže uvedený diagram seskupuje datové typy MS SQL Serveru do těchto kategorií.

Diagram skupinyping Datové typy MS SQL Serveru do sedmi kategorií

Přesné číselné datové typy v SQL

Přesné číselné typy mají v SQL Serveru devět podtypů dat. Každý z nich ukládá celá čísla nebo čísla s pevnou desetinnou čárkou v definovaném rozsahu.

Datový typ Description Spodní limit Horní mez Memory
bigint Ukládá celá čísla v daném rozsahu −2^63 (−9,223,372,036,854,775,808 XNUMX) 2^63−1 (32 767) 8 bytů
int Ukládá celá čísla v daném rozsahu −2^31 (−2,147,483,648 XNUMX) 2^31−1 (32 767) 4 bytů
smallint Ukládá celá čísla v daném rozsahu −2^15 (−32,768 XNUMX) 2^15−1 (32 767) 2 bytů
tinyint Ukládá celá čísla v dané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^38−1 5 až 17 bajtů
numeric Používá se pro měřítko a čísla s pevnou přesností −10^38+1 10^38−1 5 až 17 bajtů
peníze Používá se pro měnová data -922,337,203,685,477.5808 +922,337,203,685,477.5807 8 bytů
malé peníze Používá se pro měnová data -214,478.3648 +214,478.3647 4 bytů

Přesné číselné datové typy v SQL Serveru s příklady:

Dotaz:

DECLARE @Datatype_Int INT = 2
PRINT @Datatype_Int

Výstup:

2

Syntaxe:

Decimal (P,S)

Zde P představuje přesnost a S je měřítko.

Dotaz:

DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31
PRINT @Datatype_Decimal

Výstup:

2.31

Přibližné číselné datové typy v SQL

Kategorie přibližných čísel v SQL zahrnuje čísla s plovoucí desetinnou čárkou a reálná čísla. Tyto datové typy se většinou používají ve vědeckých výpočtech.

Datový typ Description Spodní limit Horní mez Memory Přesnost
plovoucí (n) Používá se pro číslo s plovoucí přesností −1.79E+308 1.79E + 308 Závisí na hodnotě n 15 číslice
skutečný Používá se pro číslo s plovoucí přesností −3.40E+38 3.40E + 38 4 bytů 7 číslice

Typ float používá následující syntaxi:

Syntax:  FLOAT [(n)]

Zde je n počet bitů použitých k uložení mantisy čísla s desetinnou čárkou ve vědeckém zápisu. Výchozí hodnota n je 53.

Pokud definujete datový typ, jako je 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 se považuje za 24; pokud 25 <=n <=53, n se považuje za 53.

Příklad dotazu:

DECLARE @Datatype_Float FLOAT(24) = 22.1234
PRINT @Datatype_Float

Výstup:

22.1234

Datové typy data a času v SQL

Tato kategorie ukládá data typu datum a čas.

Datový typ Description Velikost úložiště Přesnost Dolní 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 milisekundy. 8 bytů Zaokrouhleno na přírůstky 000, 003, 007 1753-01-01 9999-12-31
malé datum a čas Používá se k zadání data a času od 1. ledna 1900 do 6. června 2079. Má přesnost 1 minutu. 4 bajty, opraveno 1 minut 1900-01-01 2079-06-06
datum Používá se 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 Používá se pouze pro ukládání časových hodnot s přesností 100 nanosekund. 5 bytů 100 nanosekund 00:00:00.0000000 23:59:59.9999999
datum a čas offset Podobné jako datetime, ale má posun v časovém pásmu 10 bytů 100 nanosekund 0001-01-01 9999-12-31
datum a čas2 Používá se pro 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ů Datové typy v SQL

Tato kategorie se týká typů znaků. Umožňuje definovat znaková data pevné a proměnné délky. Má čtyři druhy datových typů. Níže jsou uvedeny datové typy řetězců znaků s příklady.

Datový typ Description Spodní limit Horní mez Memory
spálit Je to řetězec znaků s pevnou šířkou. Ukládá maximálně 8,000 XNUMX 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 znakový řetězec s proměnnou šířkou. Ukládá maximálně 1,073,741,824 XNUMX XNUMX XNUMX znaků. 0 znaků 2^31 znaků n bajtů + 2 bajty
(souhrnně „Stránka (Stránky)“), a naše postupy pro shromažďování, využívání, uchovávání, ochranu a zpřístupnění takových informací. Tyto zásady platí pro informace, které shromažďujeme na těchto stránkách nebo v e-mailu, textových a jiných elektronických zprávách mezi vámi a těmito stránkami. Rovněž popisují vaše možnosti týkající se využívání vašich osobních údajů, přístupu k nim a jejich opravě. 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 znaku

Znakové řetězce Unicode Datové typy v SQL

Tato kategorie ukládá celou řadu znaků Unicode, které používají kódování znaků UTF-16.

Datový typ Description Spodní limit Horní mez Memory
nchar Je to řetězec Unicode s pevnou šířkou. 0 znaků 4000 znaků 2 krát n bajtů
nvarchar Je to řetězec Unicode s proměnnou šířkou. 0 znaků 4000 znaků 2 krát n bajtů + 2 bajty
ntext Je to řetězec Unicode s proměnnou šířkou. 0 znaků 1,073,741,823 znaků 2násobek délky struny

Příklad dotazu:

DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype'
PRINT @Datatype_nChar

Výstup:

Toto je datový typ nCharacter

Datové typy binárních řetězců v SQL

Tato kategorie obsahuje binární řetězce pevné a proměnné délky.

Datový typ Description Spodní limit Horní mez Memory
dvojitý Jedná se o binární řetězec s pevnou šířkou. Může uchovávat maximálně 8 000 bajtů. 0 bytů 8000 bytů n bajtů
varbinární Toto je binární řetězec s proměnnou šířkou. Může uchovávat maximálně 8 000 bajtů. 0 bytů 8000 bytů Skutečná délka zadávaných dat + 2 bajty
obraz Toto je binární řetězec s proměnnou šířkou. Maximální velikost je 2 GB. 0 bytů 2,147,483,647 bytů -

Příklad dotazu:

DECLARE @Datatype_Binary BINARY(2) = 12;
PRINT @Datatype_Binary

Výstup:

0x000C

Další datové typy v SQL

Toto jsou další datové typy SQL Serveru s jejich popisem níže:

Datový typ Description
Kurzor Jeho výstupem je sloupec sp_cursor_list a sp_describe_cursor. Vrací název proměnné kurzoru.
Verze řádků Označuje řádky tabulky verzí.
Hierarchoid Tento datový typ představuje pozici v hierarchii.
Unikátní identifikátor Ukládá GUID, často převedený ze znakového výrazu.
Sql_variant Ukládá hodnoty datových typů podporovaných SQL Serverem.
XML Ukládá XML data 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 kulaté Země.
tabulka Ukládá sadu výsledků pro pozdější zpracování.

Zajímavosti!

  • Datový typ CHAR je při načítání dat rychlejší než datový typ VARCHAR, protože jeho pevná šířka zabraňuje zkracování délky.ping.

Nejčastější dotazy

VARCHAR ukládá znaky jiné než Unicode s použitím jednoho bajtu pro každý znak, zatímco NVARCHAR ukládá znaky Unicode s použitím dvou bajtů pro každý znak. Volbu NVARCHAR zvolte, pokud sloupec musí obsahovat více jazyků nebo symbolů mimo jednu kódovou stránku; jinak VARCHAR využívá méně úložiště.

Pro přesné hodnoty, například u peněz nebo jednotek, použijte DECIMAL (nebo NUMERIC), protože ukládá pevnou přesnost. Pro přibližné vědecké hodnoty použijte FLOAT, kde jsou přijatelné malé rozdíly v zaokrouhlování a velmi široký rozsah je důležitější než přesnost.

Ano. V SQL Serveru jsou DECIMAL a NUMERIC funkčně identické. Oba přijímají přesnost a měřítko a ukládají přesná čísla s pevnou desetinnou čárkou, takže tato dvě klíčová slova jsou zaměnitelná. Můžete použít libovolný název, který váš tým preferuje pro lepší čitelnost.

CHAR je typ s pevnou délkou, který kratší hodnoty doplňuje mezerami, takže každá hodnota používá deklarovanou šířku. VARCHAR má proměnnou délku a ukládá pouze zadané znaky plus dva bajty. CHAR použijte pro uniformní kódy a VARCHAR pro text s proměnnou délkou.

Ano. ALTER TABLE table_name ALTER COLUMN column_name new_type změní datový typ sloupce. Změna bude úspěšná pouze tehdy, když se existující hodnoty čistě převedou na nový typ; jinak selže, proto nejprve otestujte převody a zálohujte data.

Běžná funkce VARCHAR(n) ukládá až 8 000 znaků. Funkce VARCHAR(max) ukládá až přibližně 2 GB (2^31-1 bajtů) a je určena pro velký text, který přesahuje 8 000 znaků. Používejte funkci VARCHAR(max) pouze tehdy, když hodnoty mohou být skutečně tak velké.

Ano. GitHub Copilot může navrhovat datové typy sloupců a generovat příkazy DECLARE a CREATE TABLE z výzev v přirozeném jazyce. Před použitím návrhů v produkčním prostředí vždy ověřte přesnost, měřítko, délku a požadavky na Unicode ve srovnání s vašimi daty.

Nástroje umělé inteligence a strojového učení kontrolují vzorová data, aby doporučily vhodné typy, přesnost a délky, označily nadměrně velké sloupce, které plýtvají úložným prostorem, a detekovaly neshody během migrací. Urychlují návrh schématu, zatímco vývojář potvrzuje konečné volby.

Shrňte tento příspěvek takto: