SQL Server adattípusok példákkal

⚡ Okos összefoglaló

Az SQL Server adattípusai határozzák meg, hogy egy oszlop vagy változó milyen típusú értéket tárolhat, például egész számot, decimális számot, karaktert, dátumot vagy bináris számot. A megfelelő típus kiválasztása érvényes adatokat biztosít, és hatékonyan használja a memóriát.

  • 🔢 Pontos szám: A bigint, int, smallint, tinyint, bit, decimal, numeric, money és smallmoney értékek precíz egész és fixpontos számokat tárolnak.
  • 〰️ Hozzávetőleges numerikus érték: A float és a real a tudományos számításokban használt hozzávetőleges lebegőpontos értékeket tárolja.
  • 📅 Dátum és idő: A datetime, smalldatetime, date, time, datetimeoffset és datetime2 függvények időbeli értékeket tárolnak.
  • 🔤 Karakter és Unicode: A char, varchar és text karakterek szöveget tárolnak; az nchar, nvarchar és ntext karakterek Unicode szöveget tárolnak.
  • 🖼️ Bináris és egyéb: A bináris, varbináris és képfájlok bájtadatokat tárolnak; a kurzor, az XML és az egyedi azonosító pedig speciális igényeket elégít ki.
  • 🧠 Kiválasztása Wisely: Az egyes oszlopok legkisebb megfelelő típushoz való illesztése javítja a tárolási hatékonyságot és az adatok integritását.

SQL Server adattípusok példákkal

Mi az adattípus?

Egy adattípus MS SQL Server az az adattípus, amelyet bármely oszlop vagy változó tárolni tud. Ez az az adattípus, amelyet egy objektum tárol, például egész szám, karakter vagy karakterlánc. Bármelyik létrehozásakor táblázat or változóA név megadása mellett a tárolt adatok típusát is beállíthatod.

Az MS SQL adattípus használata

Előre meg kell határozni, hogy milyen típusú adatokat tárolhat egy oszlop vagy változó. Az adattípus meghatározása azt is megakadályozza, hogy a felhasználó váratlan vagy érvénytelen adatokat adjon meg.

A memória hatékony felhasználásához rendeljen hozzá megfelelő adattípust egy változóhoz vagy oszlophoz, amely csak a szükséges mennyiségű rendszermemóriát foglalja le az adott oszlop adatai számára.

Az MS SQL az alapvető adattípusok széles skáláját kínálja SQL a felhasználói igények kielégítésére, például dátum, bináris fájlok, képek és egyebek.

Miért használjunk adattípusokat?

Vegyünk egy egyszerű weboldal-alkalmazás regisztrációs oldalának példáját. A három beviteli mező a keresztnév, a vezetéknév és az telefonszám.

Itt meg kell jegyeznünk, hogy valós helyzetekben:

  • A „Vezetéknév/Keresztnév” mindig betűrendben lesz megadva.
  • A „Kapcsolat” mező mindig számokból áll.

Az alábbi példa egy regisztrációs űrlapon szemlélteti ezeket a mezőket.

Regisztrációs űrlap példa, amelyen a kereszt- és vezetéknév karakterként, a kapcsolattartó pedig egész számként van megadva.

A fenti kép alapján logikus, hogy a „Keresztnév/Vezetéknév” karakterként, a „Kapcsolat” pedig egész számként definiálható.

Nyilvánvaló, hogy bármely alkalmazásban minden mező valamilyen típusú adatot tartalmaz, például numerikus, betűtípusú, dátum és még sok más.

Azt is vedd figyelembe, hogy a különböző adattípusok eltérő memóriaigényűek. Ezért a memória hatékony felhasználása érdekében érdemesebb az oszlopot vagy változót a benne tárolandó adattípussal definiálni.

Az MS SQL Serverben elérhető adattípus

Itt található az MS SQL Server adattípusainak listája. Az MS SQL Server a következő adattípus-kategóriákat támogatja:

  • Pontos numerikus
  • Hozzávetőleges numerikus
  • Dátum és idő
  • Karakterláncok
  • Unicode karakterláncok
  • Bináris karakterláncok
  • Egyéb adattípusok

Az alábbi ábra az MS SQL Server adattípusait ezekbe a kategóriákba csoportosítja.

Diagram csoportping MS SQL Server adattípusok hét kategóriába sorolva

Pontos numerikus adattípusok az SQL-ben

Az SQL Serverben a pontos numerikus típus kilenc altípussal rendelkezik. Mindegyik típus egész vagy fixpontos számokat tárol egy meghatározott tartományon belül.

Adattípus Leírás Alsó határ Felső határ Memory design
bigint Egész számokat tárol a megadott tartományban −2^63 (−9,223,372,036,854,775,808 XNUMX) 2^63−1 (32 767) 8 bytes
int Egész számokat tárol a megadott tartományban −2^31 (−2,147,483,648 XNUMX) 2^31−1 (32 767) 4 bytes
smallint Egész számokat tárol a megadott tartományban −2^15 (−32,768 XNUMX) 2^15−1 (32 767) 2 bytes
aprócska Egész számokat tárol a megadott tartományban 0 255 1 bájt
bit 0, 1 vagy NULL értéket vehet fel. 0 1 1 bájt / 8 bites oszlop
decimális Skála és fix pontosságú számokhoz használatos −10^38+1 10^38−1 5-17 bájt
numerikus Skála és fix pontosságú számokhoz használatos −10^38+1 10^38−1 5-17 bájt
pénz Monetáris adatokhoz használják -922,337,203,685,477.5808 +922,337,203,685,477.5807 8 bytes
kis pénz Monetáris adatokhoz használják -214,478.3648 +214,478.3647 4 bytes

Pontos numerikus adattípusok az SQL Serverben példákkal:

Keresés:

DECLARE @Datatype_Int INT = 2
PRINT @Datatype_Int

output:

2

Syntax:

Decimal (P,S)

Itt P a pontosságot, S pedig a skálaértéket jelöli.

Keresés:

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

output:

2.31

Hozzávetőleges numerikus adattípusok az SQL-ben

Az SQL közelítő numerikus kategóriája magában foglalja a lebegőpontos és a valós értékeket. Ezeket az adattípusokat többnyire tudományos számításokban használják.

Adattípus Leírás Alsó határ Felső határ Memory design Pontosság
úszó(n) Lebegő precíziós számokhoz használják −1.79E+308 1.79E + 308 n értékétől függ 15 számjegy
igazi Lebegő precíziós számokhoz használják −3.40E+38 3.40E + 38 4 bytes 7 számjegy

A float típus a következő szintaxist használja:

Syntax:  FLOAT [(n)]

Itt n a lebegőpontos szám mantisszájának tudományos jelöléssel történő tárolására használt bitek száma. Alapértelmezés szerint n értéke 53.

Amikor egy float típusú adattípust definiálunk, az n értékének 1 és 53 között kell lennie. Az SQL Server két lehetséges érték egyikeként kezeli az n értéket: ha 1<=n<=24, akkor az n 24-ként kezelendő; ha 25<=n<=53, akkor az n 53-ként kezelendő.

Példa lekérdezés:

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

output:

22.1234

Dátum és idő adattípusok SQL-ben

Ez a kategória dátum és idő típusú adatokat tárol.

Adattípus Leírás Tárolási méret Pontosság Alsó tartomány Felső tartomány
Dátum idő 1. január 1753. és 31. december 9999. közötti dátum és idő megadására szolgál. Pontossága 3.33 ezredmásodperc. 8 bytes 000, 003, 007 lépésekre kerekítve 1753-01-01 9999-12-31
kis randevú 1900. január 1. és 2079. június 6. közötti dátum és idő megadására szolgál. 1 perces pontossággal adja meg. 4 bájt, fix 1 perc 1900-01-01 2079-06-06
adat Csak 0001. január 1. és 9999. december 31. közötti dátum tárolására szolgál. 3 bájt, fix 1 nap 0001-01-01 9999-12-31
idő Kizárólag időértékek tárolására szolgál, 100 nanoszekundum pontossággal. 5 bytes 100 XNUMX XNUMX nanoszekundum 00:00:00.0000000 23:59:59.9999999
datetime offset Hasonló a datetime-hez, de van egy időzóna-eltolása 10 bytes 100 XNUMX XNUMX nanoszekundum 0001-01-01 9999-12-31
dátumidő2 1. január 0001. és 31. december 9999. közötti dátum és idő megadására szolgál 6 bytes 100 XNUMX XNUMX nanoszekundum 0001-01-01 9999-12-31

Példa lekérdezés:

DECLARE @Datatype_Date DATE = '2030-01-01'
PRINT @Datatype_Date

output:

'2030-01-01'

Karakterláncok adattípusai az SQL-ben

Ez a kategória karaktertípusokkal kapcsolatos. Lehetővé teszi fix és változó hosszúságú karakteradatok definiálását. Négyféle adattípus létezik. Az alábbiakban a karakterlánc adattípusok láthatók példákkal.

Adattípus Leírás Alsó határ Felső határ Memory design
faszén Ez egy fix szélességű karakterlánc. Maximum 8,000 karaktert tárol. 0 karakter 8000 karakter n bájt
varchar Ez egy változó szélességű karakterlánc. 0 karakter 8000 karakter n bájt + 2 bájt
varchar (max.) Ez egy változó szélességű karakterlánc. Maximum 1,073,741,824 XNUMX XNUMX XNUMX karaktert tárol. 0 karakter 2^31 karakter n bájt + 2 bájt
szöveg Ez egy változó szélességű karakterlánc. Legfeljebb 2 GB szöveges adatot tárolhat. 0 karakter 2,147,483,647 karakter n bájt + 4 bájt

Példa lekérdezés:

DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype'
PRINT @Datatype_Char

output:

Ez a karakter adattípus

Unicode karakterláncok adattípusai az SQL-ben

Ez a kategória az Unicode karakterek teljes skáláját tárolja, amelyek az UTF-16 karakterkódolást használják.

Adattípus Leírás Alsó határ Felső határ Memory design
nchar Ez egy fix szélességű Unicode karakterlánc. 0 karakter 4000 karakter 2-szer n bájt
nvarchar Ez egy változó szélességű Unicode karakterlánc. 0 karakter 4000 karakter 2-szer n bájt + 2 bájt
ntext Ez egy változó szélességű Unicode karakterlánc. 0 karakter 1,073,741,823 karakter 2-szer a húrhossz

Példa lekérdezés:

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

output:

Ez az nCharacter adattípus

Bináris karakterlánc adattípusok SQL-ben

Ez a kategória fix és változó hosszúságú bináris karakterláncokat tartalmaz.

Adattípus Leírás Alsó határ Felső határ Memory design
kétkomponensű Ez egy fix szélességű bináris karakterlánc. Legfeljebb 8,000 bájtot tárolhat. 0 bytes 8000 bytes n bájt
varbináris Ez egy változó szélességű bináris karakterlánc. Legfeljebb 8,000 bájtot tárolhat. 0 bytes 8000 bytes A bevitt adatok tényleges hossza + 2 bájt
kép Ez egy változó szélességű bináris karakterlánc. Maximum 2 GB-ot tárolhat. 0 bytes 2,147,483,647 bytes -

Példa lekérdezés:

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

output:

0x000C

Egyéb adattípusok az SQL-ben

Ezek a további SQL Server adattípusok, leírásukkal alább:

Adattípus Leírás
Kurzor A kimenete egy sp_cursor_list és sp_describe_cursor oszlop. Visszaadja a kurzorváltozó nevét.
Sorverzió Verzióbélyegzővel látja el a táblázat sorait.
Hierarchid Ez az adattípus egy pozíciót jelöl egy hierarchiában.
Egyedi azonosító Egy GUID-ot tárol, amelyet gyakran karakterkifejezésből alakítanak át.
Sql_variant Az SQL Server által támogatott adattípusok értékeit tárolja.
XML Az XML adatokat egy oszlopban tárolja.
Térgeometria típusa Az adatokat lapos koordináta-rendszerben ábrázolja.
Térföldrajz típus A Föld körüli koordinátarendszerben ábrázolja az adatokat.
táblázat Eredménykészletet tárol későbbi feldolgozás céljából.

Érdekes tények!

  • A CHAR adattípus gyorsabb az adatok lekérésekor, mint a VARCHAR adattípus, mivel fix szélessége elkerüli a hosszfüggvények használatát.ping.

GYIK

A VARCHAR egy bájtnyi nem Unicode karaktereket tárol, míg az NVARCHAR két bájtnyi Unicode karaktereket. Válassza az NVARCHAR-t, ha egy oszlopnak több nyelvet vagy szimbólumot kell tartalmaznia egyetlen kódlapon kívül; ellenkező esetben a VARCHAR kevesebb tárhelyet használ.

Használjon DECIMÁLIS (vagy NUMERIKUS) formátumot, ha az értékeknek pontosnak kell lenniük, például pénznemben vagy mértékegységekben, mivel ez fix pontosságot tárol. Használjon FLOAT formátumot közelítő tudományos értékekhez, ahol az apró kerekítési eltérések elfogadhatók, és a nagyon széles tartomány fontosabb, mint a pontosság.

Igen. Az SQL Serverben a DECIMAL és a NUMERIC funkcionálisan azonos. Mindkettő elfogadja a pontosságot és a skálát, és pontos fixpontos számokat tárol, így a két kulcsszó felcserélhető. Használhatja a csapata által preferált nevet az olvashatóság érdekében.

A CHAR egy fix hosszúságú típus, amely a rövidebb értékeket szóközökkel tölti ki, így minden érték a deklarált szélességet használja. A VARCHAR változó hosszúságú, és csak a beírt karaktereket plusz két bájtot tárolja. Az egységes kódokhoz CHAR, a változó hosszúságú szövegekhez pedig VARCHAR használható.

Igen. ALTER TABLE A table_name ALTER COLUMN oszlop_name új_típus parancs módosítja az oszlop adattípusát. A módosítás csak akkor sikeres, ha a meglévő értékek tisztán konvertálódnak az új típusra; ellenkező esetben sikertelen lesz, ezért először tesztelje az átalakításokat, és készítsen biztonsági másolatot az adatokról.

A hagyományos VARCHAR(n) legfeljebb 8,000 karaktert tárol. A VARCHAR(max) körülbelül 2 GB-ot (2^31-1 bájt) tárol, és 8,000 karakternél hosszabb szövegekhez készült. A VARCHAR(max) függvényt csak akkor használd, ha az értékek valóban ekkorák lehetnek.

Igen. GitHub másodpilóta Oszlop adattípusokat javasolhat, és DECLARE és CREATE TABLE utasításokat generálhat természetes nyelvi promptokból. Mindig ellenőrizze a pontosságot, a skálát, a hosszt és az Unicode igényeket az adataival szemben, mielőtt éles környezetben alkalmazná a javaslatokat.

A mesterséges intelligencia és a gépi tanulási eszközök áttekintik a mintaadatokat, hogy megfelelő típusokat, pontosságot és hosszúságokat javasoljanak, megjelöljék a tárhelyet pazarló túlméretezett oszlopokat, és észleljék az eltéréseket a migrációk során. Felgyorsítják a sématervezést, miközben a fejlesztő megerősíti a végső döntéseket.

Foglald össze ezt a bejegyzést a következőképpen: