Tipuri de date SQL Server cu exemple

โšก Rezumat inteligent

Tipurile de date SQL Server definesc tipul de valoare pe care o coloanฤƒ sau o variabilฤƒ o poate stoca, cum ar fi un numฤƒr รฎntreg, zecimal, un caracter, o datฤƒ sau un numฤƒr binar. Alegerea tipului corect impune validitatea datelor ศ™i utilizeazฤƒ memoria eficient.

  • ๐Ÿ”ข Numeric exact: bigint, int, smallint, tinyint, bit, decimal, numeric, money ศ™i smallmoney stocheazฤƒ numere รฎntregi ศ™i cu virgulฤƒ fixฤƒ โ€‹โ€‹precise.
  • ใ€ฐ๏ธ Numeric aproximativ: float ศ™i real stocheazฤƒ valori aproximative รฎn virgulฤƒ mobilฤƒ utilizate รฎn calculele ศ™tiinศ›ifice.
  • ๐Ÿ“… Data si ora: datetime, smalldatetime, date, time, datetimeoffset ศ™i datetime2 stocheazฤƒ valori temporale.
  • ๐Ÿ”ค Caractere ศ™i Unicode: char, varchar ศ™i text reศ›in text; nchar, nvarchar ศ™i ntext reศ›in text Unicode.
  • ๐Ÿ–ผ๏ธ Binar ศ™i altele: binary, varbinary ศ™i image stocheazฤƒ date de tip byte; cursor, xml ศ™i uniqueidentifier acoperฤƒ nevoi speciale.
  • ๐Ÿง  Alegere Wisete iubesc: Potrivirea fiecฤƒrei coloane cu cel mai mic tip potrivit รฎmbunฤƒtฤƒศ›eศ™te eficienศ›a stocฤƒrii ศ™i integritatea datelor.

Tipuri de date SQL Server cu exemple

Ce este tipul de date?

Un tip de date รฎn MS SQL Server este definit ca tipul de date pe care orice coloanฤƒ sau variabilฤƒ le poate stoca. Este tipul de date pe care un obiect le deศ›ine, cum ar fi un numฤƒr รฎntreg, un caracter sau un ศ™ir de caractere. La crearea oricฤƒrui tabel or variabil, pe lรขngฤƒ specificarea numelui, setaศ›i ศ™i tipul de date pe care le va stoca.

Cum se utilizeazฤƒ tipul de date MS SQL

Trebuie sฤƒ definiศ›i รฎn prealabil tipul de date pe care o coloanฤƒ sau o variabilฤƒ le poate stoca. Determinarea tipului de date restricศ›ioneazฤƒ, de asemenea, utilizatorul de la introducerea oricฤƒror date neaศ™teptate sau nevalide.

Puteศ›i utiliza eficient memoria prin atribuirea unui tip de date adecvat unei variabile sau coloane, ceea ce alocฤƒ doar cantitatea necesarฤƒ de memorie de sistem pentru datele coloanei respective.

MS SQL oferฤƒ o gamฤƒ largฤƒ de tipuri de date de bazฤƒ รฎn SQL pentru a se potrivi nevoilor utilizatorilor, cum ar fi date, date binare, imagini ศ™i multe altele.

De ce sฤƒ folosiศ›i DataTypes?

Luaศ›i รฎn considerare exemplul unei pagini simple de รฎnscriere pentru o aplicaศ›ie web. Cele trei cรขmpuri de introducere sunt Prenume, Nume ศ™i Numฤƒr de contact.

Aici trebuie sฤƒ remarcฤƒm cฤƒ, รฎn scenarii reale:

  • โ€žPrenume/Numeโ€ va fi รฎntotdeauna รฎn ordine alfabeticฤƒ.
  • โ€žNumฤƒrul de contactโ€ va fi รฎntotdeauna numeric.

Exemplul de mai jos ilustreazฤƒ aceste cรขmpuri รฎntr-un formular de รฎnscriere.

Exemplu de formular de รฎnscriere care defineศ™te Prenumele ศ™i Numele de familie ca caractere ศ™i Contactul ca numฤƒr รฎntreg

Din imaginea de mai sus, este logic sฤƒ definim โ€žPrenume/Numeโ€ ca un caracter ศ™i โ€žContactโ€ ca un numฤƒr รฎntreg.

Este evident cฤƒ รฎn orice aplicaศ›ie, toate cรขmpurile au unul sau altul tip de date, de exemplu numerice, alfabetice, de datฤƒ ศ™i multe altele.

De asemenea, reศ›ineศ›i cฤƒ diferite tipuri de date au cerinศ›e de memorie diferite. Prin urmare, este mai logic sฤƒ definiศ›i coloana sau variabila cu tipul de date pe care รฎl va conศ›ine, pentru o utilizare eficientฤƒ a memoriei.

Tip de date disponibil รฎn MS SQL Server

Iatฤƒ lista tipurilor de date MS SQL Server. MS SQL Server acceptฤƒ urmฤƒtoarele categorii de tipuri de date:

  • Numeric exact
  • Numericฤƒ aproximativฤƒ
  • Data si ora
  • ศ˜iruri de caractere
  • ศ˜iruri de caractere Unicode
  • ศ˜iruri binare
  • Alte tipuri de date

Diagrama de mai jos grupeazฤƒ tipurile de date MS SQL Server รฎn aceste categorii.

Grup de diagrameping Tipurile de date MS SQL Server รฎn cele ศ™apte categorii ale lor

Tipuri exacte de date numerice รฎn SQL

Tipurile de date numerice exacte sunt nouฤƒ subtipuri รฎn SQL Server. Fiecare tip stocheazฤƒ numere รฎntregi sau cu virgulฤƒ fixฤƒ โ€‹โ€‹รฎntr-un interval definit.

Tipul de date Descriere Limita inferioara Limita superioarฤƒ Memorie
bigint Stocheazฤƒ numere รฎntregi รฎn intervalul dat โˆ’2^63 (โˆ’9,223,372,036,854,775,808) 2^63โˆ’1 (9,223,372,036,854,775,807) Bytes 8
int Stocheazฤƒ numere รฎntregi รฎn intervalul dat โˆ’2^31 (โˆ’2,147,483,648) 2^31โˆ’1 (2,147,483,647) Bytes 4
smallint Stocheazฤƒ numere รฎntregi รฎn intervalul dat โˆ’2^15 (โˆ’32,768) 2^15โˆ’1 (32,767) Bytes 2
tinyint Stocheazฤƒ numere รฎntregi รฎn intervalul dat 0 255 1 octet
pic Poate lua valori 0, 1 sau NULL. 0 1 Coloanฤƒ de 1 octet / 8 biศ›i
zecimal Folosit pentru scarฤƒ ศ™i numere fixe de precizie โˆ’10^38+1 10^38โˆ’1 5 pรขnฤƒ la 17 octeศ›i
numeric Folosit pentru scarฤƒ ศ™i numere fixe de precizie โˆ’10^38+1 10^38โˆ’1 5 pรขnฤƒ la 17 octeศ›i
bani Folosit pentru date monetare -922,337,203,685,477.5808 +922,337,203,685,477.5807 Bytes 8
bani mici Folosit pentru date monetare -214,478.3648 +214,478.3647 Bytes 4

Tipuri de date numerice exacte รฎn SQL Server cu exemple:

Solicitare:

DECLARE @Datatype_Int INT = 2
PRINT @Datatype_Int

ieศ™ire:

2

Sintaxฤƒ:

Decimal (P,S)

Aici, P este precizia, iar S este scala.

Solicitare:

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

ieศ™ire:

2.31

Tipuri de date numerice aproximative รฎn SQL

Categoria numericฤƒ aproximativฤƒ SQL include valori รฎn virgulฤƒ mobilฤƒ ศ™i valori reale. Aceste tipuri de date sunt utilizate รฎn principal รฎn calculele ศ™tiinศ›ifice.

Tipul de date Descriere Limita inferioara Limita superioarฤƒ Memorie Precizie
plutitor(n) Folosit pentru un numฤƒr de precizie flotant โˆ’1.79E+308 1.79E + 308 Depinde de valoarea lui n 15 cifre
real Folosit pentru un numฤƒr de precizie flotant โˆ’3.40E+38 3.40E + 38 Bytes 4 7 cifre

Tipul float foloseศ™te urmฤƒtoarea sintaxฤƒ:

Syntax:  FLOAT [(n)]

Aici, n este numฤƒrul de biศ›i utilizaศ›i pentru a stoca mantisa numฤƒrului cu float รฎn notaศ›ie ศ™tiinศ›ificฤƒ. รŽn mod implicit, valoarea lui n este 53.

Cรขnd definiศ›i un tip de date precum float, n trebuie sฤƒ fie o valoare รฎntre 1 ศ™i 53. SQL Server trateazฤƒ n ca una dintre cele douฤƒ valori posibile: dacฤƒ 1<=n<=24, n este tratat ca 24; dacฤƒ 25<=n<=53, n este tratat ca 53.

Exemplu de interogare:

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

ieศ™ire:

22.1234

Data ศ™i ora Tipuri de date รฎn SQL

Aceastฤƒ categorie stocheazฤƒ date de tip datฤƒ ศ™i orฤƒ.

Tipul de date Descriere Dimensiunea stocฤƒrii Acurateศ›e Gama Inferioarฤƒ Gama superioarฤƒ
DateTime Folosit pentru a specifica o datฤƒ ศ™i o orฤƒ de la 1 ianuarie 1753 pรขnฤƒ la 31 decembrie 9999. Are o precizie de 3.33 milisecunde. Bytes 8 Rotunjit la incremente de .000, .003, .007 1753-01-01 9999-12-31
smalldatetime Folosit pentru specificarea datei ศ™i orei de la 1 ianuarie 1900 pรขnฤƒ la 6 iunie 2079. Are o precizie de 1 minut. 4 octeศ›i, fix 1 minute 1900-01-01 2079-06-06
data Folosit pentru a stoca doar o datฤƒ de la 1 ianuarie 0001 pรขnฤƒ la 31 decembrie 9999 3 octeศ›i, fix 1 zi 0001-01-01 9999-12-31
timp Folosit doar pentru stocarea valorilor de timp cu o precizie de 100 de nanosecunde. Bytes 5 100 nanosecunde 00:00:00.0000000 23:59:59.9999999
datetimeoffset Similar cu datetime, dar are un decalaj de fus orar Bytes 10 100 nanosecunde 0001-01-01 9999-12-31
datatime2 Folosit pentru a specifica o datฤƒ ศ™i o orฤƒ de la 1 ianuarie 0001 pรขnฤƒ la 31 decembrie 9999 Bytes 6 100 nanosecunde 0001-01-01 9999-12-31

Exemplu de interogare:

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

ieศ™ire:

โ€ž2030-01-01โ€

Tipuri de date ศ™iruri de caractere รฎn SQL

Aceastฤƒ categorie se referฤƒ la tipurile de caractere. Vฤƒ permite sฤƒ definiศ›i date de tip caracter cu lungime fixฤƒ โ€‹โ€‹ศ™i variabilฤƒ. Are patru tipuri de date. Mai jos sunt tipurile de date de tip ศ™ir de caractere cu exemple.

Tipul de date Descriere Limita inferioara Limita superioarฤƒ Memorie
car de rฤƒzboi Este un ศ™ir de caractere cu o lฤƒศ›ime fixฤƒ. Stocheazฤƒ maximum 8,000 de caractere. 0 tancuri 8000 tancuri n octeศ›i
varchar Acesta este un ศ™ir de caractere cu lฤƒศ›ime variabilฤƒ. 0 tancuri 8000 tancuri n octeศ›i + 2 octeศ›i
varchar (max) Acesta este un ศ™ir de caractere cu o lฤƒศ›ime variabilฤƒ. Stocheazฤƒ maximum 1,073,741,824 de caractere. 0 tancuri 2^31 caractere n octeศ›i + 2 octeศ›i
a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the communityโ€™s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana ศšapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match. Acesta este un ศ™ir de caractere cu lฤƒศ›ime variabilฤƒ. Stocheazฤƒ maximum 2 GB de date text. 0 tancuri 2,147,483,647 tancuri n octeศ›i + 4 octeศ›i

Exemplu de interogare:

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

ieศ™ire:

Acesta este tipul de date caracter

Tipuri de date Unicode ศ™iruri de caractere รฎn SQL

Aceastฤƒ categorie stocheazฤƒ รฎntreaga gamฤƒ de caractere Unicode, care utilizeazฤƒ codificarea caracterelor UTF-16.

Tipul de date Descriere Limita inferioara Limita superioarฤƒ Memorie
nchar Este un ศ™ir Unicode cu lฤƒศ›ime fixฤƒ. 0 tancuri 4000 tancuri de 2 ori n octeศ›i
nvarchar Este un ศ™ir Unicode cu lฤƒศ›ime variabilฤƒ. 0 tancuri 4000 tancuri De 2 ori n octeศ›i + 2 octeศ›i
ntext Este un ศ™ir Unicode cu lฤƒศ›ime variabilฤƒ. 0 tancuri 1,073,741,823 tancuri de 2 ori lungimea ศ™irului

Exemplu de interogare:

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

ieศ™ire:

Acesta este tipul de date nCharacter

Tipuri de date ศ™iruri binare รฎn SQL

Aceastฤƒ categorie conศ›ine ศ™iruri binare de lungime fixฤƒ โ€‹โ€‹ศ™i variabilฤƒ.

Tipul de date Descriere Limita inferioara Limita superioarฤƒ Memorie
binar Este un ศ™ir binar cu lฤƒศ›ime fixฤƒ. Stocheazฤƒ maximum 8,000 de octeศ›i. Bytes 0 Bytes 8000 n octeศ›i
varbinar Acesta este un ศ™ir binar cu lฤƒศ›ime variabilฤƒ. Stocheazฤƒ maximum 8,000 de octeศ›i. Bytes 0 Bytes 8000 Lungimea realฤƒ a datelor introduse + 2 octeศ›i
imagine Acesta este un ศ™ir binar cu lฤƒศ›ime variabilฤƒ. Stocheazฤƒ maximum 2 GB. Bytes 0 Bytes 2,147,483,647 -

Exemplu de interogare:

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

ieศ™ire:

0x000C

Alte tipuri de date รฎn SQL

Acestea sunt celelalte tipuri de date SQL Server, cu descrierile lor mai jos:

Tipul de date Descriere
cursor Rezultatul sฤƒu este o coloanฤƒ formatฤƒ din sp_cursor_list ศ™i sp_describe_cursor. Funcศ›ia returneazฤƒ numele variabilei cursor.
Versiune de rรขnd Apliceazฤƒ ศ™tampilฤƒ de versiune rรขndurilor din tabel.
Ierarhiid Acest tip de date reprezintฤƒ o poziศ›ie รฎntr-o ierarhie.
Identificator unic Stocheazฤƒ un GUID, adesea convertit dintr-o expresie de caracter.
Varianta_SQL Stocheazฤƒ valorile tipurilor de date acceptate de SQL Server.
XML Stocheazฤƒ date XML รฎntr-o coloanฤƒ.
Tipul geometriei spaศ›iale Reprezintฤƒ datele รฎntr-un sistem de coordonate plat.
Tipul Geografiei Spaศ›iale Reprezintฤƒ date รฎn sistemul de coordonate rotund-pฤƒmรขnt.
tabel Stocheazฤƒ un set de rezultate pentru procesare ulterioarฤƒ.

Fapte interesante!

  • Tipul de date CHAR este mai rapid decรขt tipul de date VARCHAR รฎn timpul regฤƒsirii datelor, deoarece lฤƒศ›imea sa fixฤƒ โ€‹โ€‹evitฤƒ blocarea lungimii.ping.

รŽntrebฤƒri frecvente

VARCHAR stocheazฤƒ caractere non-Unicode folosind cรขte un octet fiecare, รฎn timp ce NVARCHAR stocheazฤƒ caractere Unicode folosind cรขte doi octeศ›i fiecare. Alegeศ›i NVARCHAR atunci cรขnd o coloanฤƒ trebuie sฤƒ conศ›inฤƒ mai multe limbi sau simboluri รฎn afara unei singure pagini de cod; altfel, VARCHAR utilizeazฤƒ mai puศ›in spaศ›iu de stocare.

Folosiศ›i DECIMAL (sau NUMERIC) atunci cรขnd valorile trebuie sฤƒ fie exacte, cum ar fi banii sau unitฤƒศ›ile de mฤƒsurฤƒ, deoarece stocheazฤƒ o precizie fixฤƒ. Folosiศ›i FLOAT pentru valori ศ™tiinศ›ifice aproximative unde sunt acceptabile diferenศ›e mici de rotunjire ศ™i un interval foarte larg conteazฤƒ mai mult decรขt exactitatea.

Da. รŽn SQL Server, DECIMAL ศ™i NUMERIC sunt identice din punct de vedere funcศ›ional. Ambele acceptฤƒ o precizie ศ™i o scalฤƒ ศ™i stocheazฤƒ numere exacte cu virgulฤƒ fixฤƒ, astfel รฎncรขt cele douฤƒ cuvinte cheie sunt interschimbabile. Puteศ›i utiliza orice nume preferฤƒ echipa dvs. pentru lizibilitate.

CHAR este un tip de lungime fixฤƒ โ€‹โ€‹care completeazฤƒ valorile mai scurte cu spaศ›ii, astfel รฎncรขt fiecare valoare utilizeazฤƒ lฤƒศ›imea declaratฤƒ. VARCHAR are lungime variabilฤƒ ศ™i stocheazฤƒ doar caracterele introduse plus doi octeศ›i. Folosiศ›i CHAR pentru coduri uniforme ศ™i VARCHAR pentru text de lungime variabilฤƒ.

Da. ALTER TABLE nume_tabel ALTER COLUMN nume_coloanฤƒ tip_nou modificฤƒ tipul de date al unei coloane. Modificarea are succes numai atunci cรขnd valorile existente sunt convertite corect รฎn noul tip; รฎn caz contrar, eศ™ueazฤƒ, aศ™adar testaศ›i mai รฎntรขi conversiile ศ™i faceศ›i o copie de rezervฤƒ a datelor.

VARCHAR(n) obiศ™nuit stocheazฤƒ pรขnฤƒ la 8,000 de caractere. VARCHAR(max) stocheazฤƒ pรขnฤƒ la aproximativ 2 GB (2^31-1 octeศ›i) ศ™i este destinat textului mare care depฤƒศ™eศ™te 8,000 de caractere. Folosiศ›i VARCHAR(max) numai atunci cรขnd valorile pot fi รฎntr-adevฤƒr atรขt de mari.

Da. Copilotul GitHub poate sugera tipuri de date pentru coloane ศ™i poate genera instrucศ›iuni DECLARE ศ™i CREATE TABLE din solicitฤƒri รฎn limbaj natural. Confirmaศ›i รฎntotdeauna precizia, scala, lungimea ศ™i cerinศ›ele Unicode pentru datele dvs. รฎnainte de a aplica sugestiile sale รฎn producศ›ie.

Instrumentele de inteligenศ›ฤƒ artificialฤƒ ศ™i รฎnvฤƒศ›are automatฤƒ analizeazฤƒ datele eศ™antion pentru a recomanda tipuri, precizie ศ™i lungimi adecvate, semnaleazฤƒ coloanele supradimensionate care ocupฤƒ spaศ›iu de stocare ศ™i detecteazฤƒ neconcordanศ›ele รฎn timpul migrฤƒrilor. Acestea accelereazฤƒ proiectarea schemelor รฎn timp ce dezvoltatorul confirmฤƒ alegerile finale.

Rezumaศ›i aceastฤƒ postare cu: