SQL Server-datatyper med eksempler
⚡ Smart opsummering
SQL Server-datatyper definerer den type værdi, en kolonne eller variabel kan gemme, f.eks. heltal, decimaltal, tegn, dato eller binært tal. Valg af den korrekte type håndhæver gyldige data og bruger hukommelsen effektivt.
Hvad er datatype?
En datatype i MS SQL Server defineres som den type data, som enhver kolonne eller variabel kan gemme. Det er den type data, som et objekt indeholder, såsom heltal, tegn eller streng. Når man opretter et hvilket som helst bord or variabelUdover at angive navnet, angiver du også den type data, den skal gemme.
Sådan bruges MS SQL datatype
Du skal på forhånd definere, hvilken type data en kolonne eller variabel kan gemme. Bestemmelse af datatypen forhindrer også brugeren i at indtaste uventede eller ugyldige data.
Du kan udnytte hukommelsen effektivt ved at tildele en passende datatype til en variabel eller kolonne, som kun allokerer den nødvendige mængde systemhukommelse til den pågældende kolonnes data.
MS SQL tilbyder en bred vifte af grundlæggende datatyper i SQL for at imødekomme brugernes behov, såsom dato, binær, billeder og mere.
Hvorfor bruge DataTypes?
Overvej eksemplet med en simpel tilmeldingsside til en hjemmesideapplikation. De tre inputfelter er Fornavn, Efternavn og Kontaktnummer.
Her skal vi bemærke, at i virkelige scenarier:
- "Fornavn/Efternavn" vil altid være alfabetisk.
- "Kontakt" vil altid være numerisk.
Eksemplet nedenfor illustrerer disse felter på en tilmeldingsformular.
Ud fra billedet ovenfor giver det mening at definere "Fornavn/Efternavn" som et tegn og "Kontakt" som et heltal.
Det er tydeligt, at i enhver applikation har alle felter en eller anden type data, for eksempel numeriske, alfabetiske, dato og mange flere.
Bemærk også, at forskellige datatyper har forskellige hukommelseskrav. Derfor giver det mere mening at definere kolonnen eller variablen med den datatype, den skal indeholde, for effektiv udnyttelse af hukommelsen.
Datatype tilgængelig i MS SQL Server
Her er en liste over datatyper for MS SQL Server. MS SQL Server understøtter følgende kategorier af datatyper:
- Præcis numerisk
- Cirka numerisk
- Dato og tid
- Karakterstrenge
- Unicode-tegnstrenge
- Binære strenge
- Andre datatyper
Diagrammet nedenfor grupperer MS SQL Server-datatyperne i disse kategorier.
Nøjagtige numeriske datatyper i SQL
Exact numeric har ni underdatatyper i SQL Server. Hver type gemmer hele tal eller tal med faste kommaer inden for et defineret område.
| Datatype | Beskrivelse | Nedre grænse | Øverste grænse | Hukommelse |
|---|---|---|---|---|
| bigint | Den gemmer hele tal i det angivne interval | -2^63 (-9,223,372,036,854,775,808) | 2^63−1 (9,223,372,036,854,775,807) | 8 bytes |
| int | Den gemmer hele tal i det angivne interval | -2^31 (-2,147,483,648) | 2^31−1 (2,147,483,647) | 4 bytes |
| smallint | Den gemmer hele tal i det angivne interval | -2^15 (-32,768) | 2^15−1 (32,767) | 2 bytes |
| lillebitte | Den gemmer hele tal i det angivne interval | 0 | 255 | 1 byte |
| bit | Det kan tage 0, 1 eller NULL værdier. | 0 | 1 | 1 byte / 8-bit kolonne |
| decimal | Anvendes til skala og faste præcisionstal | −10^38+1 | 10^38−1 | 5 til 17 bytes |
| numerisk | Anvendes til skala og faste præcisionstal | −10^38+1 | 10^38−1 | 5 til 17 bytes |
| penge | Bruges til monetære data | -922,337,203,685,477.5808 | + 922,337,203,685,477.5807 | 8 bytes |
| småpenge | Bruges til monetære data | -214,478.3648 | + 214,478.3647 | 4 bytes |
Præcise numeriske datatyper i SQL Server med eksempler:
Forespørgsel:
DECLARE @Datatype_Int INT = 2 PRINT @Datatype_Int
Output:
2
Syntaks:
Decimal (P,S)
Her er P præcisionen og S er skalaen.
Forespørgsel:
DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31 PRINT @Datatype_Decimal
Output:
2.31
Tilnærmede numeriske datatyper i SQL
Den omtrentlige numeriske kategori for SQL omfatter flydende komma- og reelle værdier. Disse datatyper bruges mest i videnskabelige beregninger.
| Datatype | Beskrivelse | Nedre grænse | Øverste grænse | Hukommelse | Precision |
|---|---|---|---|---|---|
| flyde(n) | Bruges til et flydende præcisionstal | −1.79E+308 | 1.79 308 + | Afhænger af værdien af n | 15-cifret |
| ægte | Bruges til et flydende præcisionstal | −3.40E+38 | 3.40 38 + | 4 bytes | 7-cifret |
Float-typen bruger følgende syntaks:
Syntax: FLOAT [(n)]
Her er n antallet af bits, der bruges til at gemme mantissen af det flydende tal i videnskabelig notation. Som standard er værdien af n 53.
Når du definerer en datatype som float, skal n være en værdi mellem 1 og 53. SQL Server behandler n som en af to mulige værdier: hvis 1<=n<=24, behandles n som 24; hvis 25<=n<=53, behandles n som 53.
Eksempel forespørgsel:
DECLARE @Datatype_Float FLOAT(24) = 22.1234 PRINT @Datatype_Float
Output:
22.1234
Dato og klokkeslæt Datatyper i SQL
Denne kategori gemmer data af typen dato og klokkeslæt.
| Datatype | Beskrivelse | Opbevaringsstørrelse | Nøjagtighed | Nedre rækkevidde | Øvre rækkevidde |
|---|---|---|---|---|---|
| DateTime | Bruges til at angive en dato og tid fra 1. januar 1753 til 31. december 9999. Den har en nøjagtighed på 3.33 millisekunder. | 8 bytes | Afrundet til trin på .000, .003, .007 | 1753-01-01 | 9999-12-31 |
| smalldatetime | Bruges til at angive en dato og et klokkeslæt fra 1. januar 1900 til 6. juni 2079. Den har en nøjagtighed på 1 minut. | 4 bytes, fast | 1 minutter | 1900-01-01 | 2079-06-06 |
| dato | Bruges til kun at gemme en dato fra 1. januar 0001 til 31. december 9999 | 3 bytes, fast | 1 dag | 0001-01-01 | 9999-12-31 |
| tid | Bruges kun til lagring af tidsværdier med en nøjagtighed på 100 nanosekunder. | 5 bytes | 100 nanosekunder | 00:00:00.0000000 | 23:59:59.9999999 |
| datotidsforskydning | Ligner datetime, men har en tidszoneforskydning | 10 bytes | 100 nanosekunder | 0001-01-01 | 9999-12-31 |
| dato klokkeslæt 2 | Bruges til at angive en dato og tid fra 1. januar 0001 til 31. december 9999 | 6 bytes | 100 nanosekunder | 0001-01-01 | 9999-12-31 |
Eksempel forespørgsel:
DECLARE @Datatype_Date DATE = '2030-01-01' PRINT @Datatype_Date
Output:
'2030-01-01'
Tegnstrenge Datatyper i SQL
Denne kategori omhandler tegntyper. Den giver dig mulighed for at definere tegndata med fast og variabel længde. Den har fire slags datatyper. Nedenfor er tegnstrengsdatatyperne med eksempler.
| Datatype | Beskrivelse | Nedre grænse | Øverste grænse | Hukommelse |
|---|---|---|---|---|
| char | Det er en tegnstreng med en fast bredde. Den gemmer maksimalt 8,000 tegn. | 0 tegn | 8000 tegn | n bytes |
| VARCHAR | Dette er en tegnstreng med variabel bredde. | 0 tegn | 8000 tegn | n bytes + 2 bytes |
| varchar (maks.) | Dette er en tegnstreng med en variabel bredde. Den gemmer maksimalt 1,073,741,824 tegn. | 0 tegn | 2^31 tegn | n bytes + 2 bytes |
| tekst | Dette er en tegnstreng med variabel bredde. Den gemmer maksimalt 2 GB tekstdata. | 0 tegn | 2,147,483,647 tegn | n bytes + 4 bytes |
Eksempel forespørgsel:
DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype' PRINT @Datatype_Char
Output:
Dette er Character Datatype
Unicode-tegnstrenge datatyper i SQL
Denne kategori indeholder hele spektret af Unicode-tegn, der bruger UTF-16-tegnkodningen.
| Datatype | Beskrivelse | Nedre grænse | Øverste grænse | Hukommelse |
|---|---|---|---|---|
| nchar | Det er en Unicode-streng med fast bredde. | 0 tegn | 4000 tegn | 2 gange n bytes |
| nvarchar | Det er en Unicode-streng med variabel bredde. | 0 tegn | 4000 tegn | 2 gange n bytes + 2 bytes |
| ntekst | Det er en Unicode-streng med variabel bredde. | 0 tegn | 1,073,741,823 tegn | 2 gange snorlængden |
Eksempel forespørgsel:
DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype' PRINT @Datatype_nChar
Output:
Dette er nCharacter Datatype
Binære strengdatatyper i SQL
Denne kategori indeholder binære strenge med fast og variabel længde.
| Datatype | Beskrivelse | Nedre grænse | Øverste grænse | Hukommelse |
|---|---|---|---|---|
| binær | Det er en binær streng med fast bredde. Den gemmer maksimalt 8,000 bytes. | 0 bytes | 8000 bytes | n bytes |
| varbinær | Dette er en binær streng med variabel bredde. Den gemmer maksimalt 8,000 bytes. | 0 bytes | 8000 bytes | Den faktiske længde af de indtastede data + 2 bytes |
| billede | Dette er en binær streng med variabel bredde. Den gemmer maksimalt 2 GB. | 0 bytes | 2,147,483,647 bytes | — |
Eksempel forespørgsel:
DECLARE @Datatype_Binary BINARY(2) = 12; PRINT @Datatype_Binary
Output:
0x000C
Andre datatyper i SQL
Dette er de andre SQL Server-datatyper, med deres beskrivelser nedenfor:
| Datatype | Beskrivelse |
|---|---|
| Cursor | Dens output er en kolonne med sp_cursor_list og sp_describe_cursor. Den returnerer navnet på cursorvariablen. |
| Rækkeversion | Den versionsstempler tabelrækker. |
| Hierarkiid | Denne datatype repræsenterer en position i et hierarki. |
| Unikidentifikator | Gemmer et GUID, ofte konverteret fra et tegnudtryk. |
| SQL_variant | Den gemmer værdier af SQL Server-understøttede datatyper. |
| XML | Det gemmer XML-data i en kolonne. |
| Rumlig geometri type | Det repræsenterer data i et fladt koordinatsystem. |
| Rumlig geografi type | Det repræsenterer data i det runde jord-koordinatsystem. |
| bord | Den gemmer et resultatsæt til senere behandling. |
Interessante fakta!
- CHAR-datatypen er hurtigere end VARCHAR-datatypen, når den henter data, fordi dens faste bredde undgår længdebogholderi.ping.



