S .l Server datatyper Tutorial

I S .l er kolonnerne i en tabel defineret til at gemme en bestemt slags værdi, såsom tal, datoer eller tekst; disse kaldes datatyper. Med over tredive typer af S .l server datatyper at vælge imellem, datatyper kan virke skræmmende, men i virkeligheden, der er blot et par almindeligt anvendt i databaser.

Når du forstår datatyper generelt, er det ikke et kompliceret emne. Du vil også komme til at forstå, hvorfor der er behov for datatyper og grunden til der så mange sorter.,

i denne artikel vil vi gå over de mest almindelige datatyper og den bedste praksis for deres brug.

alle eksempler på denne lektion er baseret på Microsoft s .l Server Management Studio og Adventure .orks2012 database. Kom i gang med at bruge disse gratis værktøjer med min guide Kom i gang med at bruge s .l Server.

Hvad er S ?l Server datatyper?

før vi kommer ind på de datatyper, der bruges i s .l server, synes jeg, det er vigtigt for alle at forstå, hvad en datatype er, og hvorfor de er nødvendige til brug i computere.

for vores eksempel vil vi tale om en person., Hvis du tænkte på de oplysninger, du kunne bruge til at beskrive en person, du måske tror at indsamle deres navn, fødselsdato, vægt, og antal børn. For hver af disse attributter falder dataene generelt i flere kategorier.

Navne gemmes som tekst, fødselsdatoer som kalenderdatoer og vægt som decimalværdier og et antal børn som heltal. Hver af disse kategorier af værdier er en datatype.

Sådan hjælper S .l-typer

datatyper definerer egenskaberne for de data, der kan gemmes på et sted, såsom en databasekolonne., En datatype definerer det mulige sæt værdier, der accepteres. For eksempel kan en type INT, der står for heltal I S .l server, kun acceptere hele tal, decimalværdier er ikke tilladt.

Her er en liste af nogle mennesker og deres aldre

Alder – Blot Tekst Værdier

du Kan se problemet med disse aldre? De er alle i et inkonsekvent format. Ikke kun er de svære at læse, men det er vanskeligt at sortere og beregne dataene., Ved at bruge S .l Server-datatyper, som håndhæver den forventede type data, der skal gemmes, kan vi opnå et meget bedre resultat. Her er den samme tabel med alder angivet som heltal

Aldre, der svarer til INT datatype

Når alder er defineret som et heltal forventningen er data, der er indtastet som hele tal.

også uden at komme ind på tekniske detaljer kan du se lagring af alderen som et helt tal tager meget mindre plads end alderen i den første tabel., Dette ser måske ikke ud som en enorm overvejelse med små databaser, men når man arbejder med data på smartphones eller “big data” – scenarier, tilføjes disse overvejelser.

Når systemet forstår datatypen, kan det derefter sortere dataene i en rækkefølge, der giver mening samt udføre beregninger.

grunde til at bruge S .l Server datatyper

Her er nogle grunde til, at datatyper er vigtige:

  1. Data gemmes i et konsistent og kendt format.
  2. når du kender datatypen, kan du vide, hvilke beregninger og formuleringer du kan bruge i kolonnen.,
  3. datatyper påvirker opbevaring. Nogle værdier optager mere plads, når de gemmes i en datatype versus en anden. Tag vores alder tabeller ovenfor for eksempel.
  4. datatyper påvirker ydeevnen. Jo mindre tid databasen har til at udlede værdier eller konvertere dem jo bedre. “Er den 32. December 2015 en dato?”

almindeligt anvendte s .l Server datatyper

I S .l definerer du, hvilken type data der skal gemmes i kolonner. Nogle eksempel indeholder tekst eller numeriske data.,

Dette er kolonnens datatype, og en af dens vigtigste egenskaber, da den alene bestemmer, om en værdi er gyldig til opbevaring i en kolonne.

Der er over tredive forskellige datatyper, du kan vælge imellem, når du definerer kolonner, nogle har specifikke anvendelser, såsom lagring af billeder.

i denne artikel vil vi dække de syv datatyper, du oftest støder på i din daglige brug af s .l., Disse er:

  • INT
  • VARCHAR, NVARCHAR
  • DATETIME
  • DECIMAL, FLOAT
  • LIDT

INT – Data Type Integer

heltal data type gemmer hele tal. Eksempler inkluderer -23, 0, 5 og 10045. Hele tal inkluderer ikke decimaler. Da s .l-serveren bruger et antal computerord til at repræsentere et heltal, er der maksimale og minimale værdier, som den kan repræsentere. En INT datatype kan gemme en værdi fra -2,147,483,648 til 2,147,483,647.,

praktiske anvendelser af int-datatypen inkluderer at bruge den til at tælle værdier, gemme en persons alder eller bruge som en ID-nøgle til en tabel.

men INT ville ikke være så godt at holde styr på et terabyte harddisk adresserum, da int-datatypen kun går til 2 milliarder, og vi bliver nødt til at spore ind i billionerne. Til dette kan du bruge BIGINT.

INT-datatypen er brug inden for beregninger., Da DaysToManufacture er defineret som INT kan vi let beregne timer ved at gange med 24:

VÆLG Navn, DaysToManufacture, DaysToManufacture * 24 som HoursToManufactureFROM Produktion.Produkt
/* Answer */SELECT Name, DaysToManufacture, DaysToManufacture * 24 as HoursToManufactureFROM Production.Product

Her kan du se de resultater

Resultaterne af INT beregninger

Der er mange funktioner, du kan bruge med heltal, som vi vil dække, når vi graver i funktioner.,

varchar og NVARCHAR – tekstværdier

brug varchar og NVARCHAR til at gemme tekstværdier med variabel længde. “VARCHAR” står for variabel længde karakter.angiv antallet af tegn, der skal gemmes i en varchar eller NVARCHAR, som kolonnen er defineret. Læg mærke til, hvordan Navnet er defineret til at holde halvtreds tegn:

VARCHAR definition, der er vist i SSMS Object Explorer

Hvad gør VARCHAR populære er, at værdier mindre end halvtreds tegn tage mindre plads. Plads tildeles efter behov., Dette adskiller sig fra CHAR-datatypen, som altid tildeler den angivne længde, uanset længden af de faktiske lagrede data.

varchar datatype kan typisk gemme maksimalt 8.000 tegn. Brug nvarchar datatype til at gemme Unicode-tekst. Da UNICODE-tegn optager to gange pladsen, kan nvarchar-kolonner gemme maksimalt 4.000 tegn.

fordelen NVARCHAR har over VARCHAR er det kan gemme Unicode-tegn. Dette gør det praktisk at gemme udvidede tegnsæt som dem, der bruges til sprog som Kanji.,

databaser designet før s .l 2008 bruger typisk VARCHAR; imidlertid har mere moderne databaser eller dem, der er Globale, en tendens til at bruge NVARCHAR.

DATETIME – dato og klokkeslæt

brug DATATIME-datatypen til at gemme dato og klokkeslæt. Et eksempel på en DATATIME værdi er

1968-10-23 1:45:37.123

Dette er værdien for 23.oktober 1968 kl 1:45. Faktisk er tiden mere præcis end det. Tiden er virkelig 45 minutter, 37.123 sekunder.

i mange tilfælde skal du bare gemme datoen. I disse tilfælde nulstilles tidskomponenten., Således er 5. November 1972

1972-11-05 00:00:00.000

en DATETIME kan gemme datoer fra 1.januar 1753 til 31. December 9999. Dette gør DATETIME godt for optagelse datoer i dagens verden, men ikke så meget i Shakespeareilliam Shakespeares.

som du får mere fortrolig med de forskellige S .l indbyggede funktioner, du vil være i stand til at manipulere data. For at give dig et glimt bruger vi årets funktion til at tælle medarbejdere ansat hvert år. Når der gives en DATETIME værdi, året funktion returnerer året.,

den forespørgsel, vi bruger, er

fordelen er DATETIME-typen sikrer, at værdierne er gyldige datoer. Når dette er sikret, er vi i stand til at bruge en række funktioner til at beregne antallet af dage mellem datoer, måneden for en dato og så videre.

Vi undersøger disse forskellige funktioner i detaljer i en anden blogartikel.

DECIMAL og FLOAT – Decimal Points

brug både DECIMAL og FLOAT datatyper til at arbejde med decimal værdier såsom 10.3.,

Jeg klumpede DECIMAL og flyder ind i den samme kategori, da de begge kan håndtere værdier med decimaler; men de gør det begge forskelligt:

Hvis du har brug for præcise værdier, f.eks. Årsagen er DECIMALDATATYPEN giver dig mulighed for at definere antallet af decimaler, der skal opretholdes.

DECIMAL

DECIMAL datatyper er defineret ved præcision og skala. Præcisionen bestemmer antallet af samlede cifre, der skal gemmes; der henviser til, skala bestemmer antallet af cifre til højre for decimaltegnet.,

en DECIMAL datatype er angivet som DECIMAL (præcision,skala).

en DECIMAL datatype kan ikke være mere end 38 cifre. Præcisionen og skalaen skal overholde følgende forhold

0 <= scale <= precision <= 38 digits

i produktionen.Produkttabel, vægtkolonnens datatype er defineret som DECIMAL (8,2). Det første ciffer er præcisionen, den anden skalaen.

vægt er defineret til at have otte samlede cifre, to af dem til højre for decimaltegnet. Vi vil følgende eksempel forespørgsel til at illustrere, hvordan denne datatype.,

vælg distinkt Vægtfra produktionen.ProductWHERE Vægt MELLEM 29.00 og 189.00 ORDEN EFTER Vægt DESC
/* Answer */SELECT DISTINCT WeightFROM Production.ProductWHERE Weight BETWEEN 29.00 and 189.00ORDER BY Weight DESC

FLOAT

Hvor DECIMAL datatyper er stor for nøjagtige tal, Flydere er rigtig god til lange numeriske værdier. Selvom en DECIMAL værdi kan have 38 cifre i alt, i mange tekniske og videnskabelige anvendelser er dette utilstrækkeligt. FLOAT stiger til toppen inden for videnskabelige applikationer, hvor der opstår ekstreme numeriske værdier!

flåd har en rækkevidde fra – 1.,79E+308 til 1.79 E+308. Det betyder, at den største værdi kan være 179 efterfulgt af 306 nuller (stor faktisk!).

På grund af den måde float data er gemt i computeren (se IEEE 754 floating point specifikation) det lagrede nummer er en meget tæt tilnærmelse. For mange applikationer er dette godt nok.

på grund af den omtrentlige opførsel skal du undgå at bruge <> og = operatører i clausehere-klausulen. Denne erklæring har brændt maj DBAs!

WHERE mass = 2.5

deres forventning stiples, når massen skal svare til 2.,5, men virkelig på computeren gemmes den som 2.49999999999999999; derfor ikke lig med 2.500000000000000!

det er karakteren af flydende punkter og computere. Du og jeg ser 2.49999999999999999 og tænke til praktiske formål er det 2,5, men til computeren, var slukket bare en smule. J

BIT – Boolean eller ja/nej værdier

Der er tidspunkter, hvor du bare skal gemme, om noget “er” eller “ikke er.”For eksempel om en medarbejder er aktiv. Det er i disse tilfælde, at BITDATATYPEN kommer til sin egen. Denne datatype er en af tre stater: 1, 0 eller NULL.,

værdien af 1 betyder sandt og 0 falsk.

i denne forespørgsel viser vi alle lønnede stillingsbetegnelser

Vælg forskellige JobTitleFROM HumanResources.EmployeeWHERE SalariedFlag = 1
SELECT DISTINCT JobTitleFROM HumanResources.EmployeeWHERE SalariedFlag = 1

Vi kunne også have brugt ‘Sande’ i stedet for 1. Her er det samme eksempel ved hjælp af ‘True’

Leave a Comment