SQL Server-datatyper med exempel

⚡ Smart sammanfattning

SQL Server-datatyper definierar vilken typ av värde en kolumn eller variabel kan lagra, till exempel heltal, decimaltal, tecken, datum eller binärt värde. Att välja rätt typ framtvingar giltiga data och använder minnet effektivt.

  • 🔢 Exakta numeriska värden: bigint, int, smallint, tinyint, bit, decimal, numeric, money och smallmoney lagrar exakta heltal och fastkommatal.
  • 〰️ Ungefärlig numerisk: flyttal och reell lagrar ungefärliga flyttalvärden som används i vetenskapliga beräkningar.
  • 📅 Datum och tid: datetime, smalldatetime, date, time, datetimeoffset och datetime2 lagrar temporala värden.
  • 🔤 Tecken och Unicode: char, varchar och text innehåller text; nchar, nvarchar och ntext innehåller Unicode-text.
  • 🖼️ Binär och annan: binär, varbinär och bild lagrar bytedata; markör, xml och unik identifierare täcker särskilda behov.
  • 🧠 Välja Wisely: Att matcha varje kolumn till den minsta lämpliga typen förbättrar lagringseffektiviteten och dataintegriteten.

SQL Server-datatyper med exempel

Vad är datatyp?

En datatyp i MS SQL Server definieras som den typ av data som en kolumn eller variabel kan lagra. Det är den typ av data som ett objekt innehåller, såsom heltal, tecken eller sträng. När du skapar något bord or variabel, förutom att ange namnet, anger du även vilken typ av data som ska lagras.

Hur man använder MS SQL-datatypen

Du måste i förväg definiera vilken typ av data en kolumn eller variabel kan lagra. Att bestämma datatypen begränsar också användaren från att mata in oväntade eller ogiltiga data.

Du kan utnyttja minnet effektivt genom att tilldela en lämplig datatyp till en variabel eller kolumn, vilket endast allokerar den mängd systemminne som krävs för den kolumnens data.

MS SQL erbjuder ett brett utbud av grundläggande datatyper i SQL för att passa användarnas behov, såsom datum, binärfiler, bilder med mera.

Varför använda DataTypes?

Ta exemplet med en enkel registreringssida för en webbplatsapplikation. De tre inmatningsfälten är Förnamn, Efternamn och Kontaktnummer.

Här bör vi notera att, i verkliga scenarier:

  • ”Förnamn/Efternamn” kommer alltid att vara alfabetiskt.
  • ”Kontakt” kommer alltid att vara numeriskt.

Exemplet nedan illustrerar dessa fält på ett registreringsformulär.

Exempel på registreringsformulär som definierar för- och efternamn som tecken och kontakt som heltal

Utifrån bilden ovan är det rimligt att definiera ”Förnamn/Efternamn” som ett tecken och ”Kontakt” som ett heltal.

Det är uppenbart att i alla applikationer har alla fält en eller annan typ av data, till exempel numerisk, alfabetisk, datum och många fler.

Observera också att olika datatyper har olika minneskrav. Därför är det mer meningsfullt att definiera kolumnen eller variabeln med den datatyp den kommer att innehålla, för effektiv minnesanvändning.

Datatyp tillgänglig i MS SQL Server

Här är en lista över datatyper för MS SQL Server. MS SQL Server stöder följande kategorier av datatyper:

  • Exakt numeriskt
  • Ungefärlig numerisk
  • Datum och tid
  • Karaktärssträngar
  • Unicode teckensträngar
  • Binära strängar
  • Andra datatyper

Diagrammet nedan grupperar MS SQL Server-datatyperna i dessa kategorier.

Diagramgruppping MS SQL Server-datatyper i sina sju kategorier

Exakta numeriska datatyper i SQL

Exakt numerisk har nio underdatatyper i SQL Server. Varje typ lagrar heltal eller fasta tal inom ett definierat intervall.

Data typ BESKRIVNING Lägre gräns Övre gräns Minne
bigint Den lagrar heltal i det angivna intervallet −2^63 (−9,223,372,036,854,775,808 XNUMX) 2^63−1 (32 767) 8 bitgrupper
int Den lagrar heltal i det angivna intervallet −2^31 (−2,147,483,648 XNUMX) 2^31−1 (32 767) 4 bitgrupper
smallint Den lagrar heltal i det angivna intervallet −2^15 (−32,768 XNUMX) 2^15−1 (32 767) 2 bitgrupper
pytteliten Den lagrar heltal i det angivna intervallet 0 255 1 byte
bitars Det kan ta värden 0, 1 eller NULL. 0 1 1 byte / 8-bitars kolumn
decimal- Används för skala och fasta precisionsnummer −10^38+1 10^38−1 5 till 17 byte
numerisk Används för skala och fasta precisionsnummer −10^38+1 10^38−1 5 till 17 byte
pengar Används för monetära data -922,337,203,685,477.5808 +922,337,203,685,477.5807 8 bitgrupper
småpengar Används för monetära data -214,478.3648 +214,478.3647 4 bitgrupper

Exakta numeriska datatyper i SQL Server med exempel:

Fråga:

DECLARE @Datatype_Int INT = 2
PRINT @Datatype_Int

Produktion:

2

Syntax:

Decimal (P,S)

Här är P precisionen och S är skalan.

Fråga:

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

Produktion:

2.31

Ungefärliga numeriska datatyper i SQL

Den approximativa numeriska kategorin SQL inkluderar flyttal och reella värden. Dessa datatyper används mestadels i vetenskapliga beräkningar.

Data typ BESKRIVNING Lägre gräns Övre gräns Minne Precision
flyta(n) Används för ett flytande precisionsnummer −1.79E+308 1.79E + 308 Beror på värdet på n 15 siffra
verklig Används för ett flytande precisionsnummer −3.40E+38 3.40E + 38 4 bitgrupper 7 siffra

Flyttalstypen använder följande syntax:

Syntax:  FLOAT [(n)]

Här är n antalet bitar som används för att lagra mantissan för flyttalet i vetenskaplig notation. Som standard är värdet för n 53.

När du definierar en datatyp som flyttal, bör n vara ett värde mellan 1 och 53. SQL Server behandlar n som ett av två möjliga värden: om 1<=n<=24, behandlas n som 24; om 25<=n<=53, behandlas n som 53.

Exempelfråga:

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

Produktion:

22.1234

Datum och tid Datatyper i SQL

Den här kategorin lagrar data av typen datum och tid.

Data typ BESKRIVNING Lagringsstorlek Noggrannhet Lägre intervall Övre Range
Datum Tid Används för att ange ett datum och en tid från 1 januari 1753 till 31 december 9999. Den har en noggrannhet på 3.33 millisekunder. 8 bitgrupper Avrundat till steg om .000, .003, .007 1753-01-01 9999-12-31
smalldatetime Används för att ange datum och tid från 1 januari 1900 till 6 juni 2079. Den har en noggrannhet på 1 minut. 4 byte, fast 1 minuter 1900-01-01 2079-06-06
datum Används för att endast lagra ett datum från 1 januari 0001 till 31 december 9999 3 byte, fast 1 dag 0001-01-01 9999-12-31
tid Används endast för att lagra tidsvärden med en noggrannhet på 100 nanosekunder. 5 bitgrupper 100 nanosekunder 00:00:00.0000000 23:59:59.9999999
datumtidsförskjutning Liknar datetime men har en tidszonsförskjutning 10 bitgrupper 100 nanosekunder 0001-01-01 9999-12-31
datetime2 Används för att ange ett datum och en tid från 1 januari 0001 till 31 december 9999 6 bitgrupper 100 nanosekunder 0001-01-01 9999-12-31

Exempelfråga:

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

Produktion:

'2030-01-01'

Teckensträngsdatatyper i SQL

Denna kategori avser teckentyper. Den låter dig definiera teckendata med fast och variabel längd. Den har fyra typer av datatyper. Nedan följer teckensträngsdatatyperna med exempel.

Data typ BESKRIVNING Lägre gräns Övre gräns Minne
röding Det är en teckensträng med en fast bredd. Den lagrar maximalt 8,000 XNUMX tecken. 0 tecken 8000 tecken n byte
varchar Detta är en teckensträng med variabel bredd. 0 tecken 8000 tecken n byte + 2 byte
varchar (max) Detta är en teckensträng med variabel bredd. Den lagrar högst 1,073,741,824 XNUMX XNUMX XNUMX tecken. 0 tecken 2^31 tecken n byte + 2 byte
text Detta är en teckensträng med variabel bredd. Den lagrar maximalt 2 GB textdata. 0 tecken 2,147,483,647 tecken n byte + 4 byte

Exempelfråga:

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

Produktion:

Detta är Character Datatype

Unicode-teckensträngar Datatyper i SQL

Den här kategorin lagrar hela utbudet av Unicode-tecken, som använder teckenkodningen UTF-16.

Data typ BESKRIVNING Lägre gräns Övre gräns Minne
nchar Det är en Unicode-sträng med fast bredd. 0 tecken 4000 tecken 2 gånger n byte
nvarchar Det är en Unicode-sträng med variabel bredd. 0 tecken 4000 tecken 2 gånger n byte + 2 byte
ntext Det är en Unicode-sträng med variabel bredd. 0 tecken 1,073,741,823 tecken 2 gånger strängens längd

Exempelfråga:

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

Produktion:

Detta är nCharacter Datatype

Binära strängdatatyper i SQL

Denna kategori innehåller binära strängar med fast och variabel längd.

Data typ BESKRIVNING Lägre gräns Övre gräns Minne
binär Det är en binär sträng med fast bredd. Den lagrar maximalt 8 000 byte. 0 bitgrupper 8000 bitgrupper n byte
varbinär Detta är en binär sträng med variabel bredd. Den lagrar maximalt 8 000 byte. 0 bitgrupper 8000 bitgrupper Den faktiska längden på inmatad data + 2 byte
bild Detta är en binär sträng med variabel bredd. Den lagrar maximalt 2 GB. 0 bitgrupper 2,147,483,647 bitgrupper -

Exempelfråga:

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

Produktion:

0x000C

Andra datatyper i SQL

Dessa är de andra SQL Server-datatyperna, med deras beskrivningar nedan:

Data typ BESKRIVNING
Markör Dess utdata är en kolumn med sp_cursor_list och sp_describe_cursor. Den returnerar namnet på markörvariabeln.
Rowversion Den versionsstämplar tabellrader.
Hierarkiid Denna datatyp representerar en position i en hierarki.
Unikidentifierare Lagrar ett GUID, ofta konverterat från ett teckenuttryck.
SQL_variant Den lagrar värden för SQL Server-stödda datatyper.
XML Den lagrar XML-data i en kolumn.
Typ av rumslig geometri Det representerar data i ett platt koordinatsystem.
Typ av rumsgeografi Det representerar data i det runda jordens koordinatsystem.
bord Den lagrar en resultatuppsättning för senare bearbetning.

Intressanta fakta!

  • Datatypen CHAR är snabbare än datatypen VARCHAR vid hämtning av data, eftersom dess fasta bredd undviker längdbokföring.ping.

Vanliga frågor

VARCHAR lagrar icke-Unicode-tecken med en byte vardera, medan NVARCHAR lagrar Unicode-tecken med två byte vardera. Välj NVARCHAR när en kolumn måste innehålla flera språk eller symboler utanför en enda teckentabell; annars använder VARCHAR mindre lagringsutrymme.

Använd DECIMAL (eller NUMERISK) när värden måste vara exakta, till exempel pengar eller mått, eftersom det lagrar en fast precision. Använd FLOAT för ungefärliga vetenskapliga värden där små avrundningsskillnader är acceptabla och ett mycket brett intervall är viktigare än noggrannhet.

Ja. I SQL Server är DECIMAL och NUMERIC funktionellt identiska. Båda accepterar precision och skala och lagrar exakta fastpunktstal, så de två nyckelorden är utbytbara. Du kan använda vilket namn ditt team föredrar för läsbarhetens skull.

CHAR är en typ med fast längd som fyller ut kortare värden med mellanslag, så varje värde använder den deklarerade bredden. VARCHAR har variabel längd och lagrar endast de angivna tecknen plus två byte. Använd CHAR för enhetliga koder och VARCHAR för text med varierande längd.

Ja. ALTER TABLE tabellnamn ALTER COLUMN kolumnnamn ny_typ ändrar en kolumndatatyp. Ändringen lyckas bara när befintliga värden konverteras korrekt till den nya typen; annars misslyckas den, så testa konverteringarna och säkerhetskopiera data först.

Vanlig VARCHAR(n) lagrar upp till 8 000 tecken. VARCHAR(max) lagrar upp till cirka 2 GB (2^31-1 byte) och är avsedd för stor text som överstiger 8 000 tecken. Använd VARCHAR(max) endast när värden verkligen kan vara så stora.

Ja. GitHub Copilot kan föreslå kolumndatatyper och generera DECLARE- och CREATE TABLE-satser från naturligt språk. Bekräfta alltid precision, skala, längd och Unicode-behov mot dina data innan du tillämpar dess förslag i produktion.

AI- och maskininlärningsverktyg granskar exempeldata för att rekommendera lämpliga typer, precision och längder, flagga överdimensionerade kolumner som slösar lagring och upptäcka avvikelser under migreringar. De snabbar upp schemadesignen medan utvecklaren bekräftar de slutliga valen.

Sammanfatta detta inlägg med: