SQL Server datatyper Tutorial

i SQL definieras kolumnerna i en tabell för att lagra en viss typ av värde som siffror, datum eller text; dessa kallas datatyper. Med över trettio typer av SQL server datatyper att välja mellan, datatyper kan verka skrämmande, men i verkligheten, det finns bara några vanliga i databaser.

När du förstår datatyper i allmänhet är det inte ett komplicerat ämne. Du kommer också att förstå varför det finns ett behov av datatyper och anledningen till det så många sorter.,

i den här artikeln kommer vi att gå igenom de vanligaste datatyperna och de bästa metoderna för deras användning.

alla exempel för den här lektionen är baserade på Microsoft SQL Server Management Studio och AdventureWorks2012-databasen. Kom igång med dessa gratis verktyg med min guide komma igång med SQL Server.

vad är SQL Server datatyper?

innan vi kommer in i datatyperna som används i SQL server tycker jag att det är viktigt för alla att förstå vad en datatyp är och varför de behövs för användning i datorer.

för vårt exempel talar vi om en person., Om du funderar på den information du kan använda för att beskriva en person som du kanske tror att samla in deras namn, födelsedatum, vikt och antal barn. För var och en av dessa attribut faller uppgifterna i allmänhet i flera kategorier.

namn lagras som text, födelsedatum som kalenderdatum och vikt som decimalvärden och ett antal barn som heltal. Var och en av dessa kategorier av värden är en datatyp.

hur SQL-typer hjälper

datatyper definierar egenskaperna hos de data som kan lagras på en plats, t.ex. en databaskolumn., En datatyp definierar den möjliga uppsättningen värden som accepteras. Till exempel kan en typ av INT som står för heltal i SQL server endast Acceptera heltal, decimalvärden är inte tillåtna.

här är en lista över vissa människor och deras åldrar

ålder – bara textvärden

kan du se problemet med dessa åldrar? De är alla i ett inkonsekvent format. Inte bara är de svåra att läsa, men sortering och beräkning av data är svårt., Genom att använda SQL Server datatyper, som genomdriver den förväntade typen av data som ska lagras, kan vi uppnå ett mycket bättre resultat. Här är samma tabell med de åldrar som visas som heltal

åldrar som överensstämmer med INT datatyp

När ålder definieras som ett heltal anges data som heltal.

utan att komma in i tekniska detaljer kan du också se att lagra åldern som ett heltal tar upp mycket mindre utrymme än åldern i den första tabellen., Detta kanske inte verkar vara ett stort övervägande med små databaser, men när man arbetar med data på smartphones eller ”big data” – scenarier lägger dessa överväganden upp.

När systemet förstår datatypen kan det sedan sortera data i en ordning som är meningsfull samt utföra beräkningar.

skäl att använda SQL Server datatyper

Här är några skäl till varför datatyper är viktiga:

  1. Data lagras i ett konsekvent och känt format.
  2. att veta datatypen låter dig veta vilka beräkningar och formuleringar du kan använda i kolumnen.,
  3. datatyper påverkar lagringen. Vissa värden tar upp mer utrymme när de lagras i en datatyp jämfört med en annan. Ta våra ålderstabeller ovan till exempel.
  4. datatyper påverkar prestanda. Ju mindre tid databasen har att härleda värden eller konvertera dem bättre. ”Är 32 December 2015 ett datum?”

vanliga SQL Server-datatyper

i SQL definierar du vilken typ av data som ska lagras i kolumner. Några exempel innehåller text eller numeriska data.,

detta är kolumnens datatyp, och en av dess viktigaste egenskaper eftersom det ensamt avgör om ett värde är giltigt för lagring i en kolumn.

det finns över trettio olika datatyper du kan välja mellan när du definierar kolumner, vissa har specifika användningsområden, till exempel att lagra bilder.

i den här artikeln kommer vi att täcka de sju datatyper som du oftast stöter på i din dagliga användning av SQL., Dessa är:

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

INT – HELTAL datatyp

heltalsdatatypen lagrar hela tal. Exempel inkluderar -23, 0, 5 och 10045. Heltal inkluderar inte decimaler. Eftersom SQL server använder ett antal datorord för att representera ett heltal finns det maximala och minimala värden som den kan representera. En INT datatype kan lagra ett värde från -2,147,483,648 till 2,147,483,647.,

praktiska användningar av INT-datatypen inkluderar att använda den för att räkna värden, lagra en persons ålder eller använda som ID-nyckel till en tabell.

men INT skulle inte vara så bra att hålla reda på ett terabyte hårddiskadressutrymme, eftersom INT-datatypen bara går till 2 miljarder och vi skulle behöva spåra in i trillionerna. För detta kan du behöva BIGINT.

INT-datatypen används inom beräkningar., Eftersom DaysToManufacture definieras som INT kan vi lätt beräkna timmar genom att multiplicera det med 24: –

VÄLJ Namn, DaysToManufacture, DaysToManufacture * 24 som HoursToManufactureFROM Produktion.Produkt
/* Answer */SELECT Name, DaysToManufacture, DaysToManufacture * 24 as HoursToManufactureFROM Production.Product

Här kan du se resultaten

resultat av INT beräkningar

det finns många operationer och funktioner som du kan använda med heltal som vi täcker när vi gräver i funktioner.,

varchar och Nvarchar – textvärden

använd varchar och NVARCHAR för att lagra textvärden för variabel längd. ”VARCHAR” står för variabel längd karaktär.

Ange antalet tecken att lagra i en VARCHAR eller NVARCHAR som kolumnen definieras. Lägg märke till Hur namn definieras för att hålla femtio tecken:

varchar definition visas i SSMS Object Explorer

det som gör VARCHAR populärt är att värden mindre än femtio tecken tar mindre utrymme. Utrymme tilldelas efter behov., Detta skiljer sig från den CHAR datatyp som alltid allokerar den angivna längden, oavsett längden på de faktiska data som lagras.

varchar-datatypen kan normalt lagra högst 8 000 tecken. Använd nvarchar datatype för att lagra Unicode-text. Eftersom Unicode-tecken upptar dubbelt så mycket utrymme kan nvarchar-kolumner lagra maximalt 4000 tecken.

fördelen NVARCHAR har över VARCHAR är det kan lagra Unicode-tecken. Detta gör det praktiskt att lagra utökade teckenuppsättningar som de som används för språk som Kanji.,

databaser som utformats före SQL 2008 använder vanligtvis VARCHAR; men mer moderna databaser eller de globala naturen tenderar att använda NVARCHAR.

DATETIME – datum och tid

använd datetime-datatypen för att lagra datum och tid. Ett exempel på ett DATATIDSVÄRDE är

1968-10-23 1:45:37.123

detta är värdet för 23 oktober 1968 kl. Tiden är mer exakt än så. Tiden är verkligen 45 minuter, 37.123 sekunder.

i många fall behöver du bara lagra datumet. I dessa fall nollställs tidskomponenten ut., Således är den 5 November 1972

1972-11-05 00:00:00.000

en DATETIME kan lagra datum från 1 januari 1753 till 31 December 9999. Detta gör DATETIME bra för inspelningsdatum i dagens värld, men inte så mycket i William Shakespeares.

eftersom du blir mer bekant med de olika SQL inbyggda funktioner du kommer att kunna manipulera data. För att ge dig en glimt, använder vi årets funktion för att räkna anställda som anställs varje år. När ett DATETIME-värde anges returnerar funktionen YEAR året.,

frågan vi använder är

fördelen är DATETIME-typen som säkerställer att värdena är giltiga datum. När detta är säkert, vi kan använda en massa funktioner för att beräkna antalet dagar mellan datum, månaden för ett datum och så vidare.

Vi kommer att undersöka dessa olika funktioner i detalj i en annan bloggartikel.

DECIMAL – och FLOAT-decimalpunkter

använd både DECIMAL-och FLOATDATATYPER för att arbeta med decimalvärden som 10.3.,

jag klumpade decimaltal och flyter in i samma kategori eftersom de båda kan hantera värden med decimaler; men de båda gör det annorlunda:

om du behöver exakta värden, till exempel när du arbetar med finansiella eller bokföringsdata, använd sedan DECIMAL. Anledningen är DECIMALDATATYPEN låter dig definiera antalet decimaler att behålla.

DECIMAL

DECIMALDATATYPER definieras av precision och skala. Precisionen bestämmer antalet totala siffror att lagra. skalan bestämmer antalet siffror till höger om decimalpunkten.,

en DECIMAL datatyp anges som DECIMAL(precision,skala).

en DECIMAL datatyp kan inte vara mer än 38 siffror. Precisionen och skalan måste följa följande relation

0 <= scale <= precision <= 38 digits

i produktionen.Produkttabell, viktkolumnens datatyp definieras som DECIMAL (8,2). Den första siffran är precisionen, den andra skalan.

vikt definieras för att ha åtta totala siffror, två av dem till höger om decimalen. Vi kommer att följande provfråga för att illustrera hur denna datatyp.,

välj distinkt Viktfrån produktionen.ProductWHERE vikt mellan 29.00 och 189.00 ordning efter vikt DESC
/* Answer */SELECT DISTINCT WeightFROM Production.ProductWHERE Weight BETWEEN 29.00 and 189.00ORDER BY Weight DESC

FLOAT

där decimala datatyper är bra för exakta siffror, FLOATs är riktigt bra för långa numeriska värden. Även om ett decimalvärde kan ha 38 siffror totalt, är det i många tekniska och vetenskapliga tillämpningar otillräckligt. FLOAT stiger till toppen inom vetenskapliga tillämpningar där extrema numeriska värden påträffas!

flöten har ett intervall från – 1.,79E+308 till 1.79 e+308. Det betyder att det största värdet kan vara 179 följt av 306 nollor (stor faktiskt!).

på grund av hur float data lagras i datorn (se IEEE 754 flyttalsspecifikation) är det lagrade numret en extremt nära approximation. För många applikationer är detta tillräckligt bra.

på grund av det ungefärliga beteendet, undvik att använda<> och = operatörer i WHERE-klausulen. Detta uttalande har bränt maj DBAs!

WHERE mass = 2.5

deras förväntan är streckad när massan ska motsvara 2.,5, men egentligen, på datorn, lagras den som 2.4999999999999999999; därför inte lika med 2.500000000000000!

det är naturen hos flytande punkter och datorer. Du och jag ser 2.49999999999999999 och tänker för praktiska ändamål är det 2,5, men till datorn, var bara lite. J

BIT – Boolean eller ja/nej värden

det finns tillfällen när du bara behöver lagra om något ”är” eller ”inte är.”Till exempel om en anställd är aktiv. Det är i dessa fall att BITDATATYPEN kommer till sin egen. Denna datatyp är en av tre stater: 1, 0 eller NULL.,

värdet på 1 betyder sant och 0 falskt.

i den här frågan listar vi alla avlönade positionsjobbtitlar

Välj olika Jobbtitlefrån HumanResources.EmployeeWHERE SalariedFlag = 1
SELECT DISTINCT JobTitleFROM HumanResources.EmployeeWHERE SalariedFlag = 1

Vi kunde också ha använt ”True” istället för 1. Här är samma exempel med ”True”

Leave a Comment