Tipovi podataka SQL Servera s primjerima

⚡ Pametni sažetak

Tipovi podataka SQL Servera definiraju vrstu vrijednosti koju stupac ili varijabla može pohraniti, kao što su cijeli broj, decimalni broj, znak, datum ili binarna vrijednost. Odabirom ispravne vrste osiguravaju se valjani podaci i učinkovito koristi memorija.

  • 🔢 Točan broj: Funkcije bigint, int, smallint, tinyint, bit, decimal, numeric, money i smallmoney pohranjuju precizne cijele brojeve i brojeve s fiksnom točkom.
  • 〰️ Približan broj: Tipovi s pomičnim zarezom (float) i real pohranjuju približne vrijednosti s pomičnim zarezom koje se koriste u znanstvenim izračunima.
  • 📅 Datum i vrijeme: datetime, smalldatetime, date, time, datetimeoffset i datetime2 pohranjuju vremenske vrijednosti.
  • 🔤 Znak i Unicode: char, varchar i text sadrže tekst; nchar, nvarchar i ntext sadrže Unicode tekst.
  • 🖼️ Binarno i ostalo: binarni, varbinary i slikovni bajtni podaci; cursor, xml i uniqueidentifier pokrivaju posebne potrebe.
  • 🧠 Odabir Wisely: usklađivanje svakog stupca s najmanjim prikladnim tipom poboljšava učinkovitost pohrane i integritet podataka.

Tipovi podataka SQL Servera s primjerima

Što je vrsta podataka?

Vrsta podataka u MS SQL poslužitelj definira se kao vrsta podataka koje bilo koji stupac ili varijabla može pohraniti. To je vrsta podataka koje objekt sadrži, kao što su cijeli broj, znak ili niz. Prilikom stvaranja bilo kojeg stol or varijabla, osim što određujete naziv, postavljate i vrstu podataka koje će pohranjivati.

Kako koristiti MS SQL tip podataka

Unaprijed morate definirati vrstu podataka koje stupac ili varijabla može pohraniti. Određivanje vrste podataka također ograničava korisnika od unosa neočekivanih ili nevažećih podataka.

Memoriju možete učinkovito koristiti dodjeljivanjem odgovarajućeg tipa podataka varijabli ili stupcu, što dodjeljuje samo potrebnu količinu sistemske memorije za podatke tog stupca.

MS SQL nudi širok raspon osnovnih tipova podataka u SQL kako bi odgovarale potrebama korisnika, kao što su datum, binarni podaci, slike i drugo.

Zašto koristiti DataTypes?

Razmotrite primjer jednostavne stranice za registraciju za web aplikaciju. Tri polja za unos su Ime, Prezime i Broj telefona.

Ovdje treba napomenuti da u stvarnim scenarijima:

  • „Ime/Prezime“ će uvijek biti abecedno.
  • „Kontakt“ će uvijek biti numerički.

Primjer u nastavku ilustrira ova polja na obrascu za prijavu.

Primjer obrasca za prijavu u kojem se ime i prezime definiraju kao znakovi, a kontakt kao cijeli broj

Iz gornje slike ima smisla definirati "Ime/Prezime" kao znak, a "Kontakt" kao cijeli broj.

Očito je da u bilo kojoj aplikaciji sva polja imaju jednu ili drugu vrstu podataka, na primjer numeričke, abecedne, datumske i mnoge druge.

Također imajte na umu da različite vrste podataka imaju različite memorijske zahtjeve. Stoga je logičnije definirati stupac ili varijablu s tipom podataka koji će sadržavati, radi učinkovite upotrebe memorije.

Tip podataka dostupan u MS SQL Serveru

Ovdje je popis tipova podataka MS SQL Servera. MS SQL Server podržava sljedeće kategorije tipova podataka:

  • Točan broj
  • Približan numerički
  • Datum i vrijeme
  • Nizovi znakova
  • Unicode znakovni nizovi
  • Binarni nizovi
  • Ostali tipovi podataka

Donji dijagram grupira tipove podataka MS SQL Servera u ove kategorije.

Dijagram grupeping tipovi podataka MS SQL Servera u njihovih sedam kategorija

Točni numerički tipovi podataka u SQL-u

Točni brojevi imaju devet podtipova podataka u SQL Serveru. Svaki pohranjuje cijele ili brojeve s fiksnom točkom unutar definiranog raspona.

Tip podataka Description Donja granica Gornja granica memorija
bigint Pohranjuje cijele brojeve u zadanom rasponu −2^63 (−9,223,372,036,854,775,808 XNUMX) 2^63−1 (9,223,372,036,854,775,807) 8 bajtova
int Pohranjuje cijele brojeve u zadanom rasponu −2^31 (−2,147,483,648 XNUMX) 2^31−1 (2,147,483,647) 4 bajtova
smallint Pohranjuje cijele brojeve u zadanom rasponu −2^15 (−32,768 XNUMX) 2^15−1 (32,767) 2 bajtova
tinyint Pohranjuje cijele brojeve u zadanom rasponu 0 255 Bajt 1
bit Može uzeti 0, 1 ili NULL vrijednosti. 0 1 1 bajt / 8-bitni stupac
decimal Koristi se za mjerenje i brojeve fiksne preciznosti −10^38+1 10^38−1 5 do 17 bajtova
numerički Koristi se za mjerenje i brojeve fiksne preciznosti −10^38+1 10^38−1 5 do 17 bajtova
novac Koristi se za monetarne podatke -922,337,203,685,477.5808 + 922,337,203,685,477.5807 8 bajtova
mali novac Koristi se za monetarne podatke -214,478.3648 + 214,478.3647 4 bajtova

Točni numerički tipovi podataka u SQL Serveru s primjerima:

upita:

DECLARE @Datatype_Int INT = 2
PRINT @Datatype_Int

Izlaz:

2

Sintaksa:

Decimal (P,S)

Ovdje je P preciznost, a S skala.

upita:

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

Izlaz:

2.31

Približni numerički tipovi podataka u SQL-u

SQL-ova približna numerička kategorija uključuje vrijednosti s pomičnim zarezom i realne vrijednosti. Ovi tipovi podataka uglavnom se koriste u znanstvenim izračunima.

Tip podataka Description Donja granica Gornja granica memorija Preciznost
float(n) Koristi se za broj s pokretnom preciznošću −1.79E+308 1.79 + 308 Ovisi o vrijednosti n 15 znamenke
stvarne Koristi se za broj s pokretnom preciznošću −3.40E+38 3.40 + 38 4 bajtova 7 znamenke

Tip float koristi sljedeću sintaksu:

Syntax:  FLOAT [(n)]

Ovdje je n broj bitova koji se koriste za pohranu mantise broja s pomičnim zarezom u znanstvenom zapisu. Prema zadanim postavkama, vrijednost n je 53.

Kada definirate tip podataka poput float, n treba biti vrijednost između 1 i 53. SQL Server tretira n kao jednu od dvije moguće vrijednosti: ako je 1 <=n <=24, n se tretira kao 24; ako je 25 <=n <=53, n se tretira kao 53.

Primjer upita:

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

Izlaz:

22.1234

Vrste podataka datuma i vremena u SQL-u

Ova kategorija pohranjuje podatke tipa datum i vrijeme.

Tip podataka Description Veličina spremišta Točnost Donji raspon Gornji raspon
Datum vrijeme Koristi se za određivanje datuma i vremena od 1. siječnja 1753. do 31. prosinca 9999. Ima točnost od 3.33 milisekunde. 8 bajtova Zaokruženo na povećanje od .000, .003, .007 1753-01-01 9999-12-31
mali datumvrijeme Koristi se za određivanje datuma i vremena od 1. siječnja 1900. do 6. lipnja 2079. Točnost je 1 minute. 4 bajta, fiksno 1 minuta 1900-01-01 2079-06-06
podaci Koristi se za pohranjivanje samo datuma od 1. siječnja 0001. do 31. prosinca 9999. 3 bajta, fiksno 1 dan 0001-01-01 9999-12-31
vrijeme Koristi se za pohranjivanje samo vremenskih vrijednosti s točnošću od 100 nanosekundi. 5 bajtova 100 nanosekundi 00:00:00.0000000 23:59:59.9999999
datetimeoffset Slično kao datetime, ali ima pomak vremenske zone 10 bajtova 100 nanosekundi 0001-01-01 9999-12-31
datum i vrijeme2 Koristi se za određivanje datuma i vremena od 1. siječnja 0001. do 31. prosinca 9999. 6 bajtova 100 nanosekundi 0001-01-01 9999-12-31

Primjer upita:

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

Izlaz:

'2030-01-01'

Tipovi podataka nizova znakova u SQL-u

Ova kategorija se odnosi na tipove znakova. Omogućuje vam definiranje podataka o znakovima fiksne i promjenjive duljine. Ima četiri vrste tipova podataka. U nastavku su navedeni tipovi podataka niza znakova s ​​primjerima.

Tip podataka Description Donja granica Gornja granica memorija
čađ To je niz znakova s ​​fiksnom širinom. Pohranjuje najviše 8,000 znakova. 0 znaka 8000 znaka n bajtova
varchar Ovo je niz znakova s ​​promjenjivom širinom. 0 znaka 8000 znaka n bajtova + 2 bajta
varchar (maks.) Ovo je niz znakova s ​​promjenjivom širinom. Pohranjuje najviše 1,073,741,824 znakova. 0 znaka 2^31 znakova n bajtova + 2 bajta
tekst Ovo je niz znakova promjenjive širine. Pohranjuje maksimalno 2 GB tekstualnih podataka. 0 znaka 2,147,483,647 znaka n bajtova + 4 bajta

Primjer upita:

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

Izlaz:

Ovo je Character Datatype

Tipovi podataka Unicode nizova znakova u SQL-u

Ova kategorija pohranjuje cijeli raspon Unicode znakova, koji koriste kodiranje znakova UTF-16.

Tip podataka Description Donja granica Gornja granica memorija
nchar To je Unicode niz fiksne širine. 0 znaka 4000 znaka 2 puta n bajtova
nvarchar To je Unicode niz promjenjive širine. 0 znaka 4000 znaka 2 puta n bajtova + 2 bajta
ntext To je Unicode niz promjenjive širine. 0 znaka 1,073,741,823 znaka 2 puta duljina žice

Primjer upita:

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

Izlaz:

Ovo je tip podataka nCharacter

Tipovi podataka binarnog niza u SQL-u

Ova kategorija sadrži binarne nizove fiksne i promjenjive duljine.

Tip podataka Description Donja granica Gornja granica memorija
binarni To je binarni niz fiksne širine. Pohranjuje maksimalno 8,000 bajtova. 0 bajtova 8000 bajtova n bajtova
varbinarni Ovo je binarni niz promjenjive širine. Pohranjuje maksimalno 8,000 bajtova. 0 bajtova 8000 bajtova Stvarna duljina unesenih podataka + 2 bajta
slika Ovo je binarni niz promjenjive širine. Pohranjuje maksimalno 2 GB. 0 bajtova 2,147,483,647 bajtova -

Primjer upita:

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

Izlaz:

0x000C

Ostali tipovi podataka u SQL-u

Ovo su ostale vrste podataka SQL Servera, s njihovim opisima u nastavku:

Tip podataka Description
Pokazivač Njegov izlaz je stupac sp_cursor_list i sp_describe_cursor. Vraća naziv varijable kursora.
Verzija retka Označava verzije u retke tablice.
Hijerarhija Ovaj tip podataka predstavlja poziciju u hijerarhiji.
Jedinstveni identifikator Pohranjuje GUID, često pretvoren iz znakovnog izraza.
Sql_varijanta Pohranjuje vrijednosti tipova podataka koje podržava SQL Server.
XML Pohranjuje XML podatke u stupac.
Vrsta prostorne geometrije Predstavlja podatke u ravnom koordinatnom sustavu.
Vrsta prostorne geografije Predstavlja podatke u koordinatnom sustavu okrugla Zemlja.
stol Pohranjuje skup rezultata za kasniju obradu.

Zanimljivosti!

  • Tip podataka CHAR je brži od tipa podataka VARCHAR prilikom dohvaćanja podataka, jer njegova fiksna širina izbjegava gubljenje duljine.ping.

Pitanja i odgovori

VARCHAR pohranjuje znakove koji nisu Unicode koristeći po jedan bajt, dok NVARCHAR pohranjuje Unicode znakove koristeći po dva bajta. Odaberite NVARCHAR kada stupac mora sadržavati više jezika ili simbola izvan jedne kodne stranice; inače VARCHAR koristi manje prostora za pohranu.

Koristite DECIMAL (ili NUMERIC) kada vrijednosti moraju biti točne, poput novca ili mjera, jer pohranjuje fiksnu preciznost. Koristite FLOAT za približne znanstvene vrijednosti gdje su prihvatljive male razlike u zaokruživanju i vrlo širok raspon je važniji od točnosti.

Da. U SQL Serveru, DECIMAL i NUMERIC su funkcionalno identični. Oba prihvaćaju preciznost i skalu te pohranjuju točne brojeve s fiksnom točkom, tako da su te dvije ključne riječi zamjenjive. Možete koristiti bilo koje ime koje vaš tim preferira radi čitljivosti.

CHAR je tip fiksne duljine koji kraće vrijednosti dopunjuje razmacima, tako da svaka vrijednost koristi deklariranu širinu. VARCHAR je tip promjenjive duljine i pohranjuje samo unesene znakove plus dva bajta. Koristite CHAR za uniformne kodove, a VARCHAR za tekst različite duljine.

Da. ALTER TABLE table_name ALTER COLUMN column_name new_type mijenja tip podataka stupca. Promjena uspijeva samo kada se postojeće vrijednosti čisto pretvore u novi tip; inače ne uspijeva, stoga prvo testirajte pretvorbe i napravite sigurnosnu kopiju podataka.

Regularni VARCHAR(n) pohranjuje do 8,000 znakova. VARCHAR(max) pohranjuje do otprilike 2 GB (2^31-1 bajtova) i namijenjen je za veliki tekst koji prelazi 8,000 znakova. Koristite VARCHAR(max) samo kada vrijednosti zaista mogu biti toliko velike.

Da. GitHub kopilot može predlagati tipove podataka stupaca i generirati naredbe DECLARE i CREATE TABLE iz upita na prirodnom jeziku. Uvijek provjerite potrebe za preciznošću, skaliranjem, duljinom i Unicodeom u odnosu na svoje podatke prije primjene prijedloga u produkciji.

Alati umjetne inteligencije i strojnog učenja pregledavaju uzorke podataka kako bi preporučili prikladne tipove, preciznost i duljine, označili prevelike stupce koji rasipaju prostor za pohranu i otkrili neusklađenosti tijekom migracija. Ubrzavaju dizajn sheme dok programer potvrđuje konačne izbore.

Sažmite ovu objavu uz: