Microsoft SQL -datatyper. Standard SQL -datatyper


SQL -datatyperär indelade i tre grupper:
sträng;
flytpunkt (bråktal);
heltal, datumet och tid.

  1. SQL -datatyper sträng
    SQL -datatyper Beskrivning
    CHAR (storlek) Strängar med fast längd (kan innehålla bokstäver, siffror och specialtecken). Den fasta storleken visas inom parentes. Upp till 255 tecken kan spelas in
    VARCHAR (storlek)
    TINYTEXT Kan inte lagra mer än 255 tecken.
    TEXT
    KLICK Den kan inte lagra mer än 65 535 tecken.
    MEDIUMTEXT
    MEDIUMBLOB Kan inte lagra mer än 16 777 215 tecken.
    LÅNGTEXT
    LONGBLOB Kan inte lagra mer än 4 294 967 295 tecken.
    ENUM (x, y, z, etc.) Låter dig ange en lista med giltiga värden. Du kan ange upp till 65535 värden i Datatyp SQL ENUM lista. Om värdet inte kommer att finnas i listan när du sätter in det ENUM då får vi ett tomt värde.
    Möjliga värden kan anges i detta format: ENUM ("X", "Y", "Z")
    UPPSÄTTNING SQL SET datatyp påminner ENUM Förutom att UPPSÄTTNING kan innehålla upp till 64 värden.
  2. SQL -datatyper flytpunkt (bråktal) och heltal
    SQL -datatyper Beskrivning
    TINYINT (storlek) Kan lagra nummer från -128 till 127
    SMALLINT (storlek) Område -32 768 till 32 767
    MEDIUMINT (storlek) Område -8 388 608 till 8 388 607
    INT (storlek) Område -2 147 483 648 till 2 147 483 647
    BIGINT (storlek) Område -9 223 372036854775808 till 9223372036854775807
    FLOAT (storlek, d) Litet precisionsflytpunktnummer.
    DUBBEL (storlek, d) Dubbel precision flytande nummer.
    DECIMAL (storlek, d) Ett bråknummer lagrat som en sträng.
  3. SQL -datatyper- Datum och tid

MySQL -datatyper

MySQL -datatyperär indelade i följande typer:

  • Numerisk datatyper
    Datatyper Byte Från Innan
    TINYINT 1 -128 127
    SMALLINT 2 -32768 32767
    MEDIUMINT 3 -8388608 8388607
    INT 4 -2147483648 2147483647
    BIGINT 8 -9223372036854775808 9223372036854775807
  • Datatyper datum och tid
  • Karaktär Datatyper

Oracle datatyper

Oracle datatyper

  • RÖDING- fasta textsträngar upp till 2000 byte. Typvärde RÖDING vadderad till angiven längd med mellanslag.
  • VARCHAR 2- textsträngar med variabel längd upp till 4000 byte.
  • SIFFRA- numerisk data.
  • DECIMAL- numerisk data
  • DATUM- används för att lagra datum.
  • - används för att lagra binär data upp till 2000 byte.
  • LÅNG- används för att lagra textdata upp till 2 GB i längd
  • LÅNG RÅ- används för att lagra binär data upp till 2 GB
  • ROWID- används för att lagra identifierare ROWID Databas Orakel i ett speciellt format (adresser för tabellrader).
  • KLICK- upp till 4 GB binär data lagras. Data av denna typ lagras utanför bordet och i tabellen Orakel det finns bara tips på objekt
  • CLOB, NCLOB- upp till 4 GB textdata sparas. NCLOBÄr datatypen NLS stor fast längd ( NLS betyder Nationellt språkuppsättning- en uppsättning för nationella språk- och används för att arbeta i Orakel på andra språk än engelska. På engelska behövs 1 byte för att lagra ett tecken, och på vissa språk i världen med stora teckenuppsättningar (japanska, kinesiska, koreanska), språk där text läses från höger till vänster (arabiska, hebreiska), flera byte krävs för att lagra ett tecken). Data av denna typ lagras utanför tabellen, och tabellen innehåller endast pekare till objekt.
  • BIL- upp till 4 GB ostrukturerad data sparas och i filerna i operativsystemet (externa filer).

ANSI SQL standarden känner bara igen text och siffror, medan de flesta kommersiella program använder andra specialtyper som t.ex. DATUM och TIDär faktiskt nästan standardtyper. Vissa paket stöder också typer som t.ex. PENGAR och BINÄR. Datatyper som identifieras av ANSI består av teckensträngar och olika typer av nummer, som kan klassificeras som exakt siffror och ungefärliga siffror.

KARAKTER (längd) definierar en specifikation av teckensträngar, var längd anger längden på strängar av den givna typen. Värden av denna typ måste ingå i enstaka citat. De flesta implementationer stöder strängar med variabel längd för datatyper VARCHAR och LÅNG VARCHAR(eller bara LÅNG).

Medan ett fält som RÖDING kan alltid tilldela minne för det maximala antalet tecken som kan lagras i ett fält, fält VARCHAR för valfritt antal tecken kan bara tilldela en viss mängd minne för att lagra det faktiska innehållet i fältet, även om SQL kan ställa in lite extra minnesutrymme för att hålla reda på den aktuella fältlängden. Fält VARCHAR kan vara av vilken längd som helst, inklusive implementeringsdefinierat maximum. Detta maximum kan variera från 254 till 2048 tecken för VARCHAR och upp till 16000 tecken för LÅNG. LÅNG Används vanligtvis för förklarande text eller för data som inte lätt kan komprimeras till enkla fältvärden; VARCHAR kan användas för alla textsträngar vars längd kan variera.

Extrahera och ändra fält VARCHAR- mer komplex och därför långsammare process än att extrahera och ändra fält RÖDING. Lite minne också VARCHAR, förblir alltid oanvänd för att säkerställa att hela strängens längd passar. Vid användning av sådana typer bör fält kunna kombineras med andra fält.

Exakta numeriska typerär tal, med eller utan decimalpunkt, som kan representeras som [+ | -]<целое без знака>[.<целое без знака>] och anges som:

DECIMAL (precision [, skala])- storleksargumentet har två delar: precision och skala. Skalan kan inte överstiga precisionen. Precisionen anger hur många signifikanta siffror ett tal har. Skalan anger det maximala antalet siffror till höger om decimalpunkten. Skala = noll gör fältet ekvivalent med ett heltal.

NUMERISK (precision [, skala])- samma som DECIMAL förutom att den maximala decimalen inte kan överstiga precisionsargumentet

HELTAL- ett tal utan decimal. Ekvivalent med DECIMAL men inga siffror till höger om decimalpunkten, d.v.s. med en skala på 0. Storleksargumentet används inte (det sätts automatiskt till ett implementeringsberoende värde).

SMALLINT- samma som HELTAL, förutom att beroende på implementering kan standardstorleken (eller inte) vara mindre än HELTAL.

Ungefärliga numeriska typerär siffror i exponentiell (bas 10) notation, representerade som <литеральное значение точного числа>E<целое со знаком> och specificeras enligt följande:

FLOAT [(precision)]- flyttal nummer. Storleksargumentet består av ett enda tal som anger minsta precision.

VERKLIG- samma som FLYTA, förutom att inget storleksargument används. Precision är som standard inställd på implementeringsberoende.

DUBBEL PRECISION- samma som VERKLIG, förutom att den realiserbara precisionen för DUBBEL PRECISION måste överstiga implementeringsdefinierad noggrannhet VERKLIG.

Få tillgång till datatyper

Få tillgång till datatyperär indelade i följande grupper:

  • Text- högst 255 byte.
  • Memo - upp till 64000 byte.
  • Numerisk- 1,2,4 eller 8 byte. För en numerisk typ kan fältets storlek hittas. som följer:
    • byte- heltal från -0 till 255, tar 1 byte under lagring
    • hela- heltal från -32768 till 32767, tar 2 byte
    • lång helhet- heltal från -2147483648 till 2147483647, tar 4 byte
    • flytpunkt- siffror med en noggrannhet på 6 siffror från –3,4 * 1038 till 3,4 * 1038, tar 4 byte
    • flytpunkt- siffror med en noggrannhet från -1 797 * 10308 till 1797 * 10308, tar 8 byte
  • Datum Tid- 8 byte
  • Monetär- 8 byte, data om monetära belopp, lagrade med 4 decimaler.
  • Disken- det unika långa heltalet som genereras av Access för varje ny post är 4 byte.
  • Logisk- logiska data 1 bit.
  • OLE -objektfält- upp till 1 gigabyte, bilder, diagram och andra objekt OLE från applikationer Windows... Föremål OLE kan länkas eller bäddas in.
  • Hyperlänkar- fältet där hyperlänkarna lagras. En hyperlänk kan vara antingen av typen UNC(ett standardformat för att ange en sökväg inklusive en nätverksfilserver) eller URL (adressen till ett objekt, dokument, sida eller annan typ av objekt på Internet eller intranät. URL: en anger protokollet för åtkomst och måladress ).
  • Ersättningsguiden- ett fält som låter dig välja ett värde från en annan tabell Åtkomst eller från en lista med värden med en kombinationsruta. Används oftast för nyckelfält. Har samma storlek som primärnyckeln, som också är ett sökfält, vanligtvis 4 byte. ( Primärnyckel- ett eller flera fält, vars kombination av värden unikt identifierar varje post i tabellen Åtkomst... Tillåter inte odefinierad. Null. värden måste alltid ha ett unikt index. Används för att länka ett bord med sekundära nycklar till andra tabeller).

Datatyper för SQL Server

Microsoft SQL Server SQL 2003. Även SQL Server stöder ytterligare datatyper, används för att identifiera rader med data på ett unikt sätt i en tabell och på många servrar, till exempel UNIQUEIDENTIFIER, vilket är i linje med Microsofts "växa i bredd" hårdvarufilosofi (dvs distribuera en bas på flera servrar på Intel -plattformar) istället för att "växa i höjd ”(dvs. implementering på en enorm kraftfull UNIX -server eller Windows Data Center Server).

Datatyper används i SQL Server:

  • BIGINT ( data typ SQL2003: B1GINT)
    Butiker signerade och osignerade heltal i intervallet -9 223 372 036 854 775 808 till 9 223 372 036 854 775 807. Upptar 8 byte. Se typ INT för IDENTITY -fastighetsregler som också gäller för typ BIGINT.
  • BINÄR [[n]] ( data typ SQL2003: BLOB)
    Lagrar ett binärt värde med fast längd från 1 till 8000 byte. Ett BINÄRT värde är n + 4 byte långt.
  • BIT ( data typ SQL2003: BOOLEAN)
    Lagrar värdena 1, 0 eller NULL, som står för "okänt". En byte kan lagra upp till åtta värden från BIT -kolumnerna i tabellen. Ytterligare en byte rymmer ytterligare 8 BIT -värden. BIT -kolumner kan inte indexeras.
  • CHAR [[n]], TECKEN [(n)] ( data typ SQL2003: KARAKTER [(n)])
    Lagrar teckendata med en fast längd från 1 till 8000 tecken. Allt oanvänt utrymme är som standard fyllt med ämnen. (Du kan stänga av automatisk tömning.) Typen är n byte lång.
  • CURSOR ( data typ SQL2003: saknas)
    En speciell datatyp som används för att beskriva en markör i form av en variabel eller parameter till en OUTPUT lagrad procedur. Typen kan inte användas i en CREATE TABLE -sats. CURSOR -typen kan vara NULL.
  • DATETIME (SQL2003 datatyp: TIMESTAMP)
    Lagrar ett datum- och tidsvärde i intervallet 01-01-1753 00:00:00 till 31-12-9999 23:59:59. Lagringen kräver 8 byte.
  • DECIMAL (s. S), DEC (s. S), NUMERISK (s, s) ( data typ SQL2003: DECIMAL (p, s), NUMERIC (s. S))
    Lagrar decimalfraktioner upp till 38 siffror långa. P- och s -värdena bestämmer precisionen respektive skalan. Standardskalan är 0. Utrymmet som upptar värdet bestäms av den precision som används.
    För 1-9 precision används 5 byte.
    För 10-19 precision används 9 byte.
    Med en noggrannhet på 20-28 används 13 byte.
    Noggrannhet 29-39 använder 17 byte.
    Se INT -typen för IDENTITY -fastighetsregler som också gäller för DECIMAL -typen.
  • DUBBEL PRECISION ( data typ SQL2003: saknas)
    Synonym FLOAT (53).
  • FLOAT [(n)] ( data typ SQL2003: FLOAT, FLOAT (n))
    Lagrar flytpunktsvärden i intervallet från -1,79E + 308 till 1,79E + 308. Precisionen som anges av parametern och kan variera från 1 till 53. För att lagra 7 siffror (n - från 1 till 24), 4 byte krävs. Värden som är större än 7 siffror är 8 byte.
  • BILD ( data typ SQL2003: BLOB)
    Lagrar ett binärt värde med variabel längd upp till 2 147 483 647 byte. Denna datatyp används ofta för att lagra grafik, ljud och filer som MS Word -dokument och MS Excel -kalkylblad. IMAGE -värden kan inte manipuleras fritt. Kolumner av typen IMAGE och TEXT har många begränsningar för hur de kan användas. Se TEXT -typbeskrivningen för en lista över kommandon och funktioner som gäller för IMAGE -typen.
  • INT (data typ SQL2003: INTEGER)
    Lagrar signerade eller osignerade heltal i intervallet -2 147 483 648 till 2 147 483 647. Tar 4 byte. Alla heltalsdatatyper, liksom typer som lagrar decimalbråk, stöder egenskapen IDENTITY, identitet är en automatiskt ökad radidentifierare. Se avsnittet "SKAPA / ÄNDRA TABELL" i kapitel 3.
  • PENGAR (data typ SQL2003: saknas)
    Lagrar monetära värden i intervallet -922337203685477.5808 till 922337203685477.5807. Värdet är 8 byte.
  • NCHAR (n), NATIONAL CHAR (n), NATIONAL CHARACTER (n) ( data typ SQL2003: NATIONELLT KARAKTER (n))
    Lagrar UNICODE -data med en fast längd på upp till 4000 tecken. Lagring kräver n * 2 byte.
  • NTEXT, NATIONELL TEXT ( data typ SQL2003: NCLOB)
    Lagrar textfragment i UNICODE -format upp till 1 073 741 823 tecken. Se beskrivningen av TEXT -typen för en lista över kommandon och funktioner som gäller för NTEXT -typen.
  • NUMERISK (p, s) ( data typ SQL2003: DECIMAL (p, s))
    En synonym för DECIMAL -typen. Se beskrivningen för INT -typen för regler relaterade till egenskapen IDENTITY.
  • NVARCHAR (n), NATIONELL CHAR VARIERING (n), NATIONAL CHARACTER WARING (n) ( data typ SQL2003: NATIONELL KARAKTER VARIERING (n))
    Lagrar UNICODE -data med variabel längd upp till 4000 tecken.
    Det upptagna utrymmet beräknas som dubbelt så långt som alla tecken som sätts in i fältet (antal tecken * 2).
    I SQL Server är SET ANSI_PADDINGX systemparameter för NCHAR- och NVARCHAR -fältet alltid PÅ.
  • REAL, FLOAT (24) ( data typ SQL2003: REAL)
    Lagrar flytpunktsvärden i intervallet -3.40E + 38 till 3.40E + 38. Upptar 4 byte. REAL -typen motsvarar funktionellt FLOAT (24) -typen.
  • ROWVERSION ( data typ SQL2003: saknas)
    Ett unikt nummer som lagras i databasen som uppdateras när en rad uppdateras, kallad TIMESTAMP i tidigare versioner.
  • SMALLDATETIME ( data typ SQL2003: saknas)
    Lagrar datum och tid i intervallet från '01 -01-1900 00:00 'till '06 -06-2079 23:59' med minutens noggrannhet. (Minuter avrundas om sekunderna är 29.998 eller mindre, annars rundas de upp.) Värdet är 4 byte.
  • SMALLINT ( data typ SQL2003: SMALLINT)
    Lagrar signerade eller osignerade heltal i intervallet -32 768 till 32 767. Upptar 2 byte. Se beskrivningen av INT -typen för regler relaterade till egenskapen IDENTITY som också gäller för denna typ.
  • SMÅPENGAR ( data typ SQL2003: saknas)
    Lagrar monetära värden i intervallet 214748.3648 till -214748.3647. Värdena tar 4 byte.
  • SQLVARIANT ( data typ SQL2003: saknas)
    Lagrar värden som har andra datatyper som stöds av SQL Server, exklusive TEXT, NTEXT, ROWVERSION och andra SQL VARIANT -värden. Kan lagra upp till 8016 byte med data, NULL- och DEFAULT -värden stöds. SQL VARIANT -typen används i kolumner, parametrar, variabler och returvärden från funktioner och lagrade procedurer.
  • TABELL ( data typ SQL2003: saknas)
    En speciell typ som lagrar datauppsättningen som följer av arbetet med den senaste processen. Används enbart för processbehandling och kan inte användas i SKAPA TABELL -uttalanden. Denna datatyp minskar behovet av att skapa tillfälliga tabeller i många applikationer. Kan minska behovet av omkompilering av förfaranden, vilket påskyndar utförandet av lagrade procedurer och UDF: er.
  • TEXT ( data typ SQL2003: CLOB)
    Lagrar mycket stora textfragment på upp till 2 147 483 647 tecken. TEXTn IMAGE -värden är ofta mycket svårare att manipulera än, säg, VARCHAR -värden. Du kan till exempel inte skapa ett index i en TEXT- eller IMAGE -kolumn. TEXT -värden kan manipuleras med funktionerna DATALENGTH, PATINDEX, SUBSTRING, TEXTPTR och TECHTVALID samt READTEXT, SET TEXTSIZE, UPDATETEXT och WRITETEXT -kommandona.
  • TIDSSTÄMPEL ( data typ SQL2003: TIMESTAMP)
    Lagrar ett automatiskt genererat binärt tal som är unikt i den aktuella databasen och därför skiljer sig från datatypen ANSI TIMESTAMP. TIMESTAMP är 8 byte stor. ROWVERSION -värden är nu bättre lämpade för att identifiera rader unikt istället för TIMESTAMP.
  • TINYINT
    Lagrar osignerade heltal i intervallet 0 till 255 och upptar 1 byte. Se beskrivningen av INT -typen för regler relaterade till egenskapen IDENTITY som också gäller för denna typ.
  • UNIQUEIDENTIFIER ( data typ SQL2003: saknas)
    Det är ett värde som är unikt för alla databaser och alla servrar. Representeras som xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx, där varje x är ett hexadecimalt tal i intervallet 0-9 eller a-f. De enda operationer som kan utföras på värden av denna typ är jämförelse och NULL -test. Begränsningar och egenskaper kan användas på kolumner av denna typ, med undantag för egenskapen IDENTITY.
  • VARBINÄR [(n)] ( data typ SQL2003: BLOB)
    Representerar ett binärt värde med variabel längd, upp till 8000 byte. Utrymmet är storleken på den infogade datan plus 4 byte.
  • VARCHARf (n)], CHAR VARIERING [(n)], TEKNIKVARIERING [(n)] ( data typ SQL2003: KARAKTERVARIERING (n))
    Lagrar teckendata med en fast längd från 1 till 8000 tecken. Utrymmet är lika med den verkliga storleken på det inmatade värdet i byte, inte värdet n.

PostgreSQL -datatyper

Databas PostgreSQL stöder de flesta datatyper SQL2003 plus en enorm uppsättning typer för lagring av rumsliga och geometriska data. PostgreSQL har en rik uppsättning operatörer och funktioner speciellt utformade för geometriska datatyper. Detta inkluderar verktyg som rotera, skärningspunkt och zoom. I PostgreSQL det finns också stöd för ytterligare versioner av befintliga datatyper, som kännetecknas av att de tar mindre diskutrymme än motsvarande originalversioner. Till exempel i PostgreSQL flera varianter av INTEGER -typen erbjuds för lagring av stora respektive små nummer, vilket tar mer eller mindre plats.

  • BJGSERJAL
  • BIT ( data typ SQL2003: BIT)
    Fixerad längd bitsträng.
  • BITVARIERING (n) varbit (n) ( data typ SQL2003: BIT VARIERING)
    Anger en bitsträng med variabel längd i n bitar.
  • BOOL, BOOLEAN ( data typ SQL2003: BOOLEAN)
    Lagrar ett booleskt värde (true / false / unknown). De rekommenderade värdena är dock nyckelorden SANT och FALSK PostgreSQL tillåter flera bokstavliga värden för true: TRUE, t, true, y, yes och 1. Giltiga värden för false är FALSE, f, false, n, no och 0.
  • BOX ((xl, y I), (x2, y2)) ( data typ SQL2003: saknas)
    Lagrar värden som definierar ett rektangulärt område på ett plan. Värdena upptar 32 byte och presenteras i formen ((xl, yl), (x2, y2)), som motsvarar rektangelns motsatta hörn (övre högra respektive nedre vänstra). Ytterfästen är valfria.
  • BYTEA ( data typ SQL2003: BINÄR STORT OBJEKT)
    Rå, binär data används till exempel för att lagra grafik, ljud och dokument. Denna typ kräver 4 byte för att lagra, plus bitsträngens faktiska storlek.
  • CHAR (n), CHARA CTER (n) ( data typ SQL2003: KARAKTER (n))
    Innehåller en teckensträng med fast längd, vadderad med mellanslag till längd n. Ett försök att infoga ett värde som är längre än n resulterar i ett fel (om inte de extra tecknen är mellanslag, som sedan avkortas så att längden är n tecken).
  • CIDR (x.x.x.xZy) ( data typ SQL2003: saknas)
    Beskriver adressen till ett nätverk eller en värd i formatet IP version 4. Adressen är 12 byte stor. Giltiga värden är alla IPv4 -nätverksadresser. I CIDR -typen representeras data i formen x.x.x.x / y, där x.x.x.x är IP -adressen och y är antalet nätmaskbitar. CIDR tillåter inte användning av bitar som inte är noll till höger om nätmaskens nollbit.
  • CIRKEL x, y, r (SQL2003 datatyp: ingen)
    Beskriver en cirkel på ett plan. Värdena tar! ’24 byte och presenteras i formen x, y, r. Värdena* och y är koordinaterna för cirkelns mitt och r är längden på dess radie. Värdena x, y och r kan om så önskas avgränsas med parenteser eller hängslen.
  • DATE (SQL2003 datatyp: DATE)
    Lagrar ett kalenderdatum (år, dag och månad) utan tid på dagen. Det tar 4 byte. Datum måste ligga i intervallet 4713 till bp. upp till 32767 och. NS. Upplösningsgränsen för DATE -typen är naturligtvis en dag.
  • DATETIME (SQL2003 datatyp: T1MESTAMP)
    Lagrar ett kalenderdatum med tiden på dagen.
  • DECIMAL [(p, s)], NUMERIC [(s. S)] (SQL2003 datatyp: DECIMAL (PRECISION SCALE), NUMERIC (x, p))
    Lagrar exakta numeriska värden med precision (p) lika med 9 och skala (er) lika med noll, utan övre gräns.
  • FLOAT4, REAL (SQL2003 datatyp: FLOAT (p))
    Lagrar flytpunktsvärden med en precision på 8 eller mindre och 6 siffror efter den upptagna.
  • FLOAT8, DUBBEL PRECISION (SQL2003 datatyp: FLOAT (p), 7
  • INET (х.х.х.х / у)
    Sparar adressen till ett nätverk eller en värd i IP -version 4 -format. Adressen är 12 byte. Giltiga värden är alla nätverksadresser som tillåts av IPv4 -protokollet, x.x.x.x är IP -adressen, y är antalet nätverksmasksbitar. Standardnätmask är 32. Till skillnad från CIDR accepterar INET bitar utan noll till höger om nätmask.
  • SMALLINT (SQL2003 datatyp: SMALLINT)
    Lagrar tvåbytes signerade och osignerade heltal i intervallet -32 768 till 32 767. Synonym är INT72.
  • INTEGER (SQL2003 datatyp: INTEGER)
    Butiker signerade eller osignerade 4 -bytes heltal i intervallet -2 147 483 648 till 2 147 483 647. Synonym är 1NT4.
  • INT8 (SQL2003 datatyp: finns inte)
    Butiker signerade eller osignerade 8 -byte heltal i intervallet -9 223 372 036 854 775 808 till 9 223 372 036 854 775 807.
  • INTERVAL (p) (SQL2003 datatyp: ingen)
    Lagrar vanliga värden för tidsintervaller i intervallet -178 000 000 till 178 000 000 år. Det tar 12 byte. Den lägsta upplösningen av INTERVAL -typen är mikrosekund. Denna typ av datumlagring skiljer sig från ANSI -standarden, som kräver en intervallspecifikator, till exempel INTERVALÅR TILL MÅNAD.
  • LINE ((xl, y I), (x2, y2)) (SQL2003 datatyp: ingen)
    Lagrar information om en rak linje på ett plan, utan slutpunkter. Värdena är 32 byte och representeras som ((xl, yl), (x2, y2)), vilket anger radens start- och slutpunkt. Parenteserna i LINE -syntaxen är valfria.
  • LSEG ((xl, yl), (x2, y2)) (SQL2003 datatyp: ingen)
    Lagrar ett linjesegment (LSEG) på ett plan, med slutpunkter. Värdena är 32 byte och representeras som ((xl, yl), (x2, y2)). Paranteserna i syntaxen för LSEG -typen är valfria. För dem som är intresserade är ett "segment" det som de flesta brukar kalla en rad. Till exempel är linjerna på tavlan faktiskt linjesegment.
  • MACADDR (SQL2003 datatyp: ingen)
    Det kan lagra värdet på MAC -adressen för datorns nätverkskort. Det tar 6 byte.
    MACADDR -typen tillåter flera adressformer som motsvarar branschen
    standarder, till exempel:
    08002B: 010203
    08002V-010203
    0800.2В01.0203
    08-00-2В-01-02-03
    08.00: 2B: 01: 02: 03
  • PENGAR, DECIMAL (9,2) (SQL2003 datatyp: ingen)
    Lagrar amerikanska valutavärden i intervallet -21474836,48 till 21474836,47.
  • NUMERISK [(sid, s)], DECIMAL [(s, s)] (SQL2003 datatyp: ingen)
    Lagrar exakta numeriska data med precision (p) och skala (er).
  • OID (SQL2003 datatyp: ingen)
    Lagrar unika identifierare av objekt.
  • PATH ((xl, yl), ... n), Path ((xl, yl), ... n) (SQL2003 datatyp: none)
    Beskriver en öppen eller stängd geometrisk väg på ett plan. Värdena presenteras i formen ((xl, yl), ... n) och upptar 4 + 32 byte. Varje par av värden (x, y) motsvarar en punkt på konturen. Konturerna är antingen öppna när den första och sista poängen inte matchar, eller stängda när den första och sista poängen sammanfaller. För att beteckna stängda konturer är uttrycket inneslutet inom parentes och för att markera öppna - inom hakparenteser.
  • PUNKT (x, y) (SQL2003 datatyp: ingen)
    Lagrar ett värde som beskriver en geometrisk punkt på ett plan. Den upptar 16 byte. Värdena presenteras som (x, y). Point är grunden för andra tvådimensionella rumsliga datatyper som stöds av PostgreSQL. Paranteserna i denna typ av syntax är valfria.
  • POLYGONE ((x1, y1), ... n) (SQL2003 datatyp: ingen)
    Lagrar ett värde som beskriver en stängd geometrisk väg på ett plan. Den upptar 4 + 32n byte. Värdena presenteras som ((xl, yl), ... n). I huvudsak motsvarar POLYGONE -typen den typ som används för att lagra en sluten slinga.
  • SERIAL, SER1AL4 (SQL2003 datatyp: ingen)
    Lagrar ett automatiskt ökat, unikt heltal-ID-värde som används för indexering och korsreferens. Denna typ lagrar upp till 4 byte med data (nummerintervallet är från 1 till 2147483647). Tabeller definierade med denna datatyp kan inte släppas direkt. Först måste du utfärda DROP SEQUENCE -kommandot och först sedan utfärda DROP TABLE -kommandot.
  • SER1AL8, BIGSERIAL (SQL2003 datatyp: ingen)
    Lagrar ett automatiskt ökat, unikt heltal-ID-värde som används för indexering och korsreferens. Denna typ lagrar upp till 8 byte med data (nummerintervallet är från 1 till 9 223 372 036 854 775 807). Tabeller definierade med denna datatyp kan inte släppas direkt. Först måste du utfärda DROP SEQUENCE -kommandot och först sedan utfärda DROP TABLE -kommandot.
  • TEXT (SQL2003 datatyp: CLOB)
    Lagrar ett stort antal teckensträngar med variabel längd upp till 1 gigabyte. PostgreSQL komprimerar automatiskt TEXT -strängar, så diskutrymme kan vara mindre än strängarnas storlek.
  • TIME [(p)] (SQL2003 datatyp: TIME) Lagrar tiden på dygnet antingen utan tidszon (8 byte används) eller med den tidszon där databaseservern finns (12 byte används). Det giltiga intervallet är 00: 00: 00.00 - 23: 59: 59.99. Det minsta värdet är 1 mikrosekund. Observera att i de flesta UNIX -system är tidszoninformation endast tillgänglig för datum från 1902 till 2038.
  • TIMESPAN (SQL2003 datatyp: ingen)
    Lagrar ett värde som representerar en viss tid. Den mest liknande typen av TIMESPAN i ANSI är INTERVAL.
  • TIMESTAMP [(p)] ( data typ SQL2003: TIMESTAMP)
    Lagrade datum och tid med och utan databaseserverns tidszon. Giltigt värdeintervall är 4713 f.Kr. NS. upp till 1 465 001 n. NS. En TIMESTAMP är 8 byte lång. Det minsta värdet är 1 mikrosekund. Observera att i de flesta UNIX -system är tidszoninformation endast tillgänglig för datum från 1902 till 2038.
  • TIMETZ ( data typ SQL2003: TID MED TIDSZONE)
    Lagrar klockans värde baserat på tidszonen.
  • VARCHAR (n), CHARACTER VARYLNG (n) ( data typ SQL2003: KARAKTERVARIERING (n))
    Lagrar teckensträngar med variabel längd upp till n. Bakre mellanslag bevaras inte.

Låt oss först ta en titt på vad "datatyper" är.
Datatyper avgör vilka värden som kan lagras i en kolumn och hur mycket utrymme de kommer att ta upp i minnet. När du skapar en tabell måste du ange en specifik datatyp för alla dess kolumner.
Huvudtyperna som används i SQL kan grovt delas in i flera kategorier:

  • Heltalstyper;
  • Fraktionella typer;
  • Karaktärstyper;
  • Monetära typer;
  • Tillfälliga typer (datum / tid);

Heltal datatyper

Fraktionella datatyper

Teckendatatyp

Data typBeskrivning
CHAR (storlek)Används för att lagra strängar. Parametern inom parentes låter dig fixa längden på den lagrade strängen. Den maximala storleken i byte som kan ställas in för en sträng är 255.
VARCHAR (storlek)På samma sätt som den föregående typen kan den lagra strängar upp till 255 tecken långa. Skillnaden från CHAR är dock att den erforderliga mängden minne allokeras för att lagra ett värde av denna typ. Det vill säga för en sträng bestående av 5 tecken krävs 6 byte minne. I det första fallet tilldelas minnet för värdet enligt den angivna parametern.
NCHAR (storlek)Konstantlängd Unicode-strängdata. n är strängens längd och måste vara mellan 1 och 4000. Lagringsstorleken är dubbelt så stor som byte. Det rekommenderas att använda nchar om storleken på dataobjekten i kolumnerna förväntas vara liknande.
NVARCHAR
(storlek | max)
Variabel längd Unicode-strängdata. Storlek bestämmer strängens längd och kan sträcka sig från 1 till 4000. Maxvärdet indikerar att den maximala lagringsstorleken är 2 ^ 31-1 tecken (2 GB). Det rekommenderas att använda nvarchar när olika storlekar av dataobjekt i kolumner förväntas.
TEXTVariabel längd icke-Unicode-data på serverkodssidan och med en maximal stränglängd på 2 ^ 31-1 (2 147 483 647).
NTEXTData med variabel längd kodade i Unicode med en maximal stränglängd på 2 ^ 30 - 1 (1 073 741 823) byte.

Valuta datatyp

Tillfälliga typer (datum / tid)

Data typBeskrivning
DATUMHuvudsyftet är att lagra datumet i formatet YEAR-MONTH-DAY ("ÅÅÅÅ-MM-DD" eller "uuuu-mm-dd").
TIDLåter dig ange tillfälliga värden i en tabellcell. Alla värden anges i formatet "hh: mm: ss".
DATUM TIDKombinerar funktionerna för de två föregående typerna. Lagringsformatet representeras enligt följande: "åååå-mm-dd hh: mm: ss".
TIDSSTÄMPELLagrar datum och tid som antalet sekunder som gått från midnatt den 01/01/1970 till det angivna värdet.

Exempel på användning av datatyper

Låt oss titta på ett exempel på hur du använder datatyper i SQL.

Ett exempel på att använda datatyper

MySQL

SKAPA TABELL Kontroller (id INT NOT NULL, Name VARCHAR (50) NOT NULL, DataToDay DATE NOT NULL, Cost FLOAT NOT NULL);

idär en räknare (den lagrar ett individuellt kontrollnummer), därför tillhör den en heltal datatyp, så vi gör det INT eller HELTAL. INTE NULL säger att variabeln inte kan vara tom.
I namn vi kommer att lagra produktens namn. Eftersom kolumnen kommer att lagra tecken, använd VARCHAR. Efter att ha specificerat typen tilldelar vi minne under namnet (i våra fall är detta (50) ).
Följande kolumner i tabellen skapas analogt.

1.1. Karaktärstyper

1) Strängar med konstant längd
CHAR ()- en textsträng i ett utvecklardefinierat format. Ett naturligt tal anger strängar.
I praktiken varierar det maximala antalet tecken från 256 i MS SQL Server till 32767 i InterBase.
CHAR tolkas som CHAR (1)

2) Strängar med variabel längd
VARCHAR | CHAR VARIERING [()]- en sträng med variabel längdstext i ett utvecklardefinierat format. Ett naturligt tal anger maximal radlängd, men tabellen tilldelar bara utrymme för den faktiska linjelängden.

3) Egenskaper hos teckentyper för ett antal DBMS
I ett antal DBMS, till exempel MS SQL Server, om CHAR är NULL, tolkas det som VARCHAR.
I Oracle, för VARCHAR2 -fält, kan du reservera utrymme i varje block för framtida fältuppdateringar genom att ange alternativet PCTFREE.

1.2. Numeriska typer

1) Integer datatyper
INT- ett tal utan decimal. Storleken beror på den specifika implementeringen. Detta är ofta 4 byte.
SMALLINT- Samma som INT, men oftast mindre. Ofta 2 byte.
BIGINT- samma som INT, men vanligtvis större. Detta är 4 eller fler byte.

2) Realtal med fast punkt
DEC |)]Är ett decimaltal med en fast punkt.
Numret har:
- det totala antalet betydande decimaler,
- det maximala antalet siffror till höger om decimalpunkten.

3) Verkliga flytande siffror
Flyta- flyttal, representerat i bas 10, exponentiell form Maximal precision anges.
VERKLIG- Samma som FLOAT, men noggrannheten beror på implementeringen.
DOUBE- är detsamma som REAL, men noggrannheten kan vara större vid en specifik implementering.

1.3. Datum och tidstyper

DATUM-datum i formatet åååå-mm-dd (ISO), mm / dd / åååå (ANSI).
TID- tid i hh.mm.ss (ISO), hh: mm am / pm (ANSI) -format.
INTERVALL-datum och tid i formatet åååå-mm-dd-hh.mm.ss.nnnnn (ISO). (ofta TIMESTAMP).

Notera:
Datum- och tidstyper kan anges som stränglitteraler.
Datum: 'åååå-mm-dd', tid: 'hh.mm.ss',
Intervall: 'åååå-mm-dd-hh.mm.ss.n ... n'.

1.4. Boolsk typ

BOOLEAN- booleskt värde (TRUE, FALSE, Okänt).
För en korrekt förståelse av sanningstabellen i trevärdig logik (3VL) kan man konventionellt anta att FALSKT är 0, SANT -1 och KÄND är 0,5.
Sedan:
- OCH -operatören returnerar den minsta.
- OR -operatören är den största av de ursprungliga värdena.
- INTE UNKNOWN = UNKNOWN.

2. Samlingar

Samlingar bryter faktiskt mot First Normal Form (1NF).

2.1. Array

[()] ARRAY- en uppsättning värden av samma typ.

Notera:
Matriser introducerades i SQL: 99.
Exempel:
Till exempel låter definitionen av WeekDays Varchar (10) ARRAY dig att lagra namnet på alla sju dagar i veckan i ett fält.
Ett antal DBMS tillåter till och med flerdimensionella matriser. Så i InterBase är upp till 16 ändringar möjliga, Clarion - 4.

2.2. Multiset

[()] MULTISET- en obegränsad uppsättning värden av samma typ, vilket möjliggör dubbletter.
Värdena skapas av konstruktören - specialfunktioner.

Notera:
Multisets introducerades i SQL: 2003.

2.3. Anonym strängtyp

RAD ([()], ...)- en uppsättning olika typer av värden, inklusive kapslade.
Alternativ kan ställa in sorteringsordning för strängtypsfält och ett antal andra inställningar.

Exempel:
Så, genom att definiera Address ROW (State Char (6), City Varchar (30), Street Varchar (50)) kan du lagra en detaljerad adress i ett fält.

3. LOB -typer

CLOB (tecken stort objekt)- bete sig ungefär som karaktärssträngar, men de får inte användas:
- I begränsningar Primär nyckel, Unik, Utländsk nyckel.
- I andra jämförelser än rena jämlikheter eller ojämlikheter i avsnittet Order By och Group By.
BLOB (binärt stort objekt)- en byteström i ett format där användaren kan skriva dem till databankolumnen.

3.1. LOB -användningsfrågor

1) Lagringsproblem
Att lagra LOB: er direkt i tabeller, tillsammans med andra data, stör optimisatorns användning av datasidor som är storleken på disksidor.
Därför lagras LOB i separata områden (segment) av hårddisklagring.

2) Uppdateringsproblem
Eftersom storleken på LOB -objekt kan nå tiotals och hundratals megabyte kan de inte lagras i buffertar som helhet. Därför behandlas LOB -data i bitar, till exempel efter sidgrupper. INSERT och UPDATE -satser för bitbearbetning använder specialteknologi som gör att du flera gånger kan ringa samma API -funktion för samma fält. På samma sätt när du läser data med SELECT- och FETCH -satser.

3) Problem med att utföra transaktioner
För att stödja transaktioner har de flesta DBMS en transaktionslogg som registrerar kopior av data före och efter ändringar.
På grund av den stora storleken loggas dock inte LOB: er.

4) Problem med vidarebefordran av nätverk
Klienten och servern körs ofta på olika datorer och att skicka en LOB över nätverket kan avbryta alla som för närvarande använder nätverket.

4. Olika typer

4.1. Sökare

Ett unikt binärt (fyrbitars) värde (i OOP - en deskriptor) lagrat i databasen.
Beskrivs i huvudprogrammet och är giltigt till slutet av transaktionen.
Designad för att manipulera LOB -värden (eller matriser) på klientsidan. Istället för en LOB skickas en länk till den till klienten.
Du kan deklarera: LOC: Integer AS LOCATOR.

4.2. XML

Värden är i huvudsak XML -dokument.
För denna typ definieras ett antal operationer som ger åtkomst till elementen i XML -typens värde, transformationer av liknande data osv.

4.3. Data länk

Datalänkar är en del av SQL / MED 9075-9: 2003.
Datalink är en speciell typ av SQL som är utformad för att lagra webbadresser i en databas, liksom ett antal funktioner som kan användas i SQL -frågor.
Funktionerna och de funktioner som stöds finns på webbplatsen:
Wiki.postgresql.org/wiki/DATALINK

Används av DB2, Oracle - för att lagra data i en extern BFile.

Listan nedan visar att Microsoft SQL Server stöder de flesta datatyperna SQL 2003. Dessutom stöder SQL Server ytterligare datatyper som används för att identifiera datarader i en tabell och på många servrar, till exempel UNIQUEIDENTIFIER, vilket är i linje med " växa i bredd "hårdvarufilosofi. bekräftas av Microsoft (det vill säga implementering av basen på många servrar på Intel -plattformar), istället för" tillväxt i höjd "(det vill säga implementering på en enorm kraftfull UNIX -server eller Windows Data Center Server) .

En intressant sidnotering angående datum på SQL Server: SQL Server stöder datum som börjar 1753. Du kan inte lagra tidigare datum i någon datatyp av SQL Server -databas. Varför? Orsaken är att den engelsktalande världen började använda den gregorianska kalendern 1753 (den julianska kalendern användes fram till september 1753), och det kunde vara ganska svårt att konvertera julianska till gregorianska datum.

BIGINT (datatyp SQL 2003: BIGINT)

Butiker signerade och osignerade heltal i intervallet -9 223 372 036 854 775 808 till 9 223 372 036 854 775 807. Upptar 8 byte. Se INT -typen för EGENSKapsreglerna som också gäller för BIGINT -typen.

BINÄR [[n]] (SQL 2003 datatyp: BLOB)

Lagrar ett binärt värde med fast längd från 1 till 8000 byte. Ett BINÄRT värde är n + 4 byte långt.

BIT (datatyp SQL 2003: BOOLEAN)

Lagrar värdena 1, 0 eller NULL, som står för "okänt". En byte kan lagra upp till åtta värden från BIT -kolumnerna i tabellen. I ytterligare en byte kan du placera ytterligare 8 värden av BIT -typen. BIT -kolumner kan inte indexeras.

CHAR [(n)], CHARACTER [(n)] (SQL 2003 datatyp: CHARACTER (n))

Lagrar teckendata med en fast längd från 1 till 8000 tecken. Allt oanvänt utrymme är som standard fyllt med ämnen. (Du kan stänga av automatisk tömning.) Typen är n byte.

CURSOR (SQL 2003 datatyp: none)

En speciell datatyp som används för att beskriva en markör i form av en variabel eller parameter till en OUTPUT lagrad procedur. Typen kan inte användas i en CREATE TABLE -sats. CURSOR -typen kan vara NULL.

DATETIME (datatyp SQL 2003: TIMESTAMP)

Lagrar ett datum- och tidsvärde i intervallet 01-01-1753 00:00:00 till 31-12-9999 23:59:59. Lagringen kräver 8 byte.

DECIMAL (s. S). DEC (p, s), NUMERIC (p, s) (SQL 2003 datatyp: DECIMAL (p, s). NUMERIC (s. S))

Lagrar decimalfraktioner upp till 38 siffror långa. P- och s -värdena bestämmer precisionen respektive skalan. Standardskalan är 0. Utrymmet som upptar värdet bestäms av den precision som används. För 1-9 precision används 5 byte. För 10-19 precision används 9 byte. Med en noggrannhet på 20-28 används 13 byte. Noggrannhet 29-39 använder 17 byte.

Se INT -typen för IDENTITY -fastighetsreglerna som också gäller för DECIMAL -typen.

DUBBEL PRECISION (datatyp SQL 2003: ingen) Synonym för FLOAT (53).

FLOAT [(n)] (SQL 2003 -datatyp: FLOAT, FLOAT (n))

Lagrar flytpunktsvärden i intervallet från -1.79E + 308 till 1.79E + 308. Precisionen som anges av parameter n kan variera från 1 till 53. För att lagra 7 siffror (och - från 1 till 24) är 4 byte nödvändig. Värden som är större än 7 siffror är 8 byte.

IMAGE (SQL 2003 -datatyp: BLOB)

Lagrar ett binärt värde med variabel längd upp till 2 147 483 647 byte. Denna datatyp används ofta för att lagra grafik, ljud och filer som Microsoft Word -dokument och Microsoft Excel -kalkylblad. IMAGE -värden kan inte manipuleras fritt. Kolumner av typen IMAGE och TO har många begränsningar för hur de kan användas. Se beskrivningen av TEXT -typen för en lista över kommandon och funktioner som gäller för IMAGE -typen.

INT (datatyp SQL 2003: INTEGER)

Lagrar signerade eller osignerade heltal i intervallet -2 147 483 648 till 2 147 483 647. Tar 4 byte. Alla heltalsdatatyper, liksom typer som lagrar decimalbråk, stöder egenskapen IDENTITY, identitet är en automatiskt ökad radidentifierare. Se avsnittet "SKAPA / ALTERTABEL -uttalandet".

PENGAR (datatyp SQL 2003: ingen)

Lagrar monetära värden i intervallet -922337203685477.5808 till 922337203685477.5807. Värdet är 8 byte.

NCHAR (n), NATIONAL CHAR (n), NATIONAL CHARACTER) (SQL 2003 datatyp: NATIONAL CIARACTER (n))

Lagrar UNICODE -data med en fast längd på upp till 4000 tecken. Lagring kräver n * 2 byte.

NTEXT, NATIONAL TEXT (SQL 2003 datatyp: NCLOB)

Lagrar textfragment i UNICODE -format upp till 1 073 741 823 tecken. Se beskrivningen av TEXT -typen för en lista över kommandon och funktioner som gäller för NTEXT -typen.

En synonym för DECIMAL -typen. Se beskrivningen av INT -typen för regler relaterade till egenskapen IDENTITY.

NVARCHAR n

Lagrar UNICODE -data med variabel längd upp till 4000 tecken. Det upptagna utrymmet beräknas som dubbelt så långt som alla tecken som sätts in i fältet (antal tecken * 2). I SQL Server är systemparametern SET ANSI_PADDING] för fälten NCHAR och NVARCHAR alltid PÅ.

REAL, FLOAT (24) (SQL 2003 data mun: REAL)

Lagrar flytpunktsvärden i intervallet -3.40E + 38 till 3.40E + 38. Det tar 4 byte. REAL -typen motsvarar funktionellt FLOAT (24) -typen.

ROWVERSION (SQL 2003 -datatyp: ingen)

Ett unikt nummer som lagras i databasen som uppdateras när en rad uppdateras, kallad TIMESTAMP i tidigare versioner.

SMALLDATETIME (SQL 2003 -datatyp: ingen)

Lagrar datum och tid i intervallet "01-01-1900 00:00" till "06-06-2079 23:59" med minutens noggrannhet. (Minuter avrundas om sekunder är 29.998 eller mindre, annars avrundas de.) Värdet är 4 byte.

SMALLINT (SQL 2003 -datatyp: SMALLINT)

Lagrar signerade eller osignerade heltal i intervallet -32 768 till 32 767. Upptar 2 byte. Se beskrivningen av INT -typen för regler relaterade till egenskapen IDENTITY som också gäller för denna typ.

SMALLMONEY (datatyp SQL 2003: ingen)

Lagrar monetära värden i intervallet 214748.3648 till -214748.3647. Värdena är 4 byte långa.

SQL VARIANT (datatyp SQL 2003: ingen)

Lagrar värden som är andra datatyper som stöds av SQL Server, exklusive TEXT, NTEXT, ROWVERSION och andra SQL_VARIANT -värden. Kan lagra upp till 8016 byte med data, NULL- och DEFAULT -värden stöds. Typen SQL_VARIANT används i kolumner, parametrar, variabler och värden som returneras av funktioner och lagrade procedurer.

TABELL (SQL 2003 -datatyp: ingen)

En speciell typ som lagrar datauppsättningen som följer av arbetet med den senaste processen. Används enbart för processbehandling och kan inte användas i SKAPA TABELL -uttalanden. Denna datatyp minskar behovet av att skapa tillfälliga tabeller i många applikationer. Kan minska behovet av omkompilering av förfaranden, vilket påskyndar utförandet av lagrade procedurer och UDF: er.

TEXT (SQL 2003 datatyp: CLOB)

Lagrar mycket stora textfragment på upp till 2 147 483 647 tecken. TEXTn IMAGE -värden är ofta mycket svårare att manipulera än, säg, VARCHAR -värden. Du kan till exempel inte skapa ett index i en TEXT- eller IMAGE -kolumn. TEXT -värden kan manipuleras med funktionerna DATALENGTH, PATINDEX, SUBSTRING. TEXTPTR och TEX-TVALID, samt kommandona READTEXT, SET TEXTSIZE, UPDATETEXT och WR1TETEXT.

TIMESTAMP (SQL 2003 -datatyp: TIMESTAMP)

Lagrar ett automatiskt genererat binärt tal som är unikt i den aktuella databasen och därför skiljer sig från datatypen ANSI TIMESTAMP. TIMESTAMP är 8 byte stor. ROWVERSION -värden är nu bättre lämpade för att identifiera rader unikt istället för TIMESTAMP.

Lagrar osignerade heltal i intervallet 0 till 255 och upptar 1 byte. Se beskrivningen av typ / L / G för regler relaterade till egenskapen IDENTITY som också gäller för denna typ.

UNIQUEIDENTIFIER (SQL 2003 datatyp: ingen)

Det är ett värde som är unikt för alla databaser och alla servrar. Det representeras som xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx, där varje x är ett hexadecimalt tal i intervallet 0-9 eller a-f. De enda operationer som kan utföras på värden av denna typ är jämförelse och NULL -test. Begränsningar och egenskaper kan användas på kolumner av denna typ, med undantag för egenskapen IDENTITY.

VARBINÄR [(n)] (SQL 2003 datatyp: BLOB)

Representerar ett binärt värde med variabel längd, upp till 8000 byte. Utrymmet är storleken på den infogade datan plus 4 byte.

VARCHARf [(n)], CHAR VARIERING [(n)], CHARACTER VARIERING f (n) J (SQL 2003 datatyp: CHARACTER VARYING [(n)]

Lagrar teckendata med en fast längd från 1 till 8000 tecken. Det upptagna utrymmet är lika med den verkliga storleken på det inmatade värdet i byte, och inte värdet på p.

Alla värden i en kolumn måste vara av samma datatyp. (De enda undantagen från denna regel är värden för datatypen SQL_VARIANT.) Datatyperna som används i Transact-SQL kan kategoriseras enligt följande:

    numeriska typer;

    karaktärstyper;

    tillfälliga typer (datum och / eller tider);

    andra datatyper.

Numeriska datatyper

Som du kan förvänta dig av deras namn används numeriska datatyper för att representera tal. Dessa typer och deras korta beskrivning visas i tabellen nedan:

T-SQL numeriska datatyper
Data typ Beskrivning
HELTAL

Representerar 4 -byte heltal i intervallet -2 32 till 2 32 -1. INT är stenografin för INTEGER.

SMALLINT

Representerar 2 -byte heltal i intervallet -32 768 till 32 767

TINYINT

Representerar 1-byte heltal i intervallet 0 till 255

BIGINT

Representerar 8 -byte heltal i intervallet -2 63 till 2 63 -1

DECIMAL (p, [s])

Representerar fasta punktvärden. Argumentet p (precision) anger det totala antalet siffror och argumentet s (skala) anger antalet siffror till höger om den förväntade decimalpunkten. Beroende på värdet på p -argumentet lagras decimalvärdena i 5 till 17 byte. DEC är en förkortad form för DECIMAL.

NUMERISK (p, [s])

Synonym för DECIMAL.

VERKLIG

Används för att representera flytande punktvärden. Utbudet av positiva värden är cirka 2,23E -308 till -1,18E -38. Ett nollvärde kan också tillhandahållas.

FLOAT [(p)]

Precis som REAL representerar den flytande punktvärden [(p)]. Argumentet p anger precisionen. För s< 25 представляемые значения имеют одинарную точность (требуют 4 байта для хранения), а при значении p >= 25 - dubbel precision (kräver 8 byte för lagring).

PENGAR

Används för att representera monetära värden. PENGE-värden motsvarar 8-byte DECIMAL-värden avrundade till fyra decimaler

SMÅPENGAR

Representerar samma värden som PENGAR, men 4 byte långa

Teckendatatyper

Det finns två allmänna typer av teckendatatyper. Strängar kan representeras av enbyte-tecken eller Unicode-tecken. (Unicode använder flera byte för att representera ett enda tecken.) Dessutom kan strängar ha olika längd. Tabellen nedan listar kategorierna av teckendatatyper med en kort beskrivning.

Datatyper för T-SQL-tecken
Data typ Beskrivning
CHAR [[n]]

Används för att representera strängar med fast längd på n enkelbyte-tecken. Det maximala värdet för n är 8000. KARAKTER (n) är en alternativ ekvivalent form av CHAR (n). Om n inte uttryckligen anges, antas dess värde vara 1.

VARCHAR [(n)]

Används för att representera en sträng med variabel längd enkelbyte tecken (0< n < 8 000). В отличие от типа данных CHAR, количество байтов для хранения значений типа данных VARCHAR равно их действительной длине. Этот тип данных имеет два синонима: CHAR VARYING и CHARACTER VARYING.

NCHAR [(n)]

Används för att lagra strängar med Unicode-tecken med fast längd. Huvudskillnaden mellan datatyperna CHAR och NCHAR är att varje tecken i en NCHAR -sträng tar 2 byte och en CHAR -sträng tar 1 byte. Därför kan en sträng av datatypen NCHAR innehålla högst 4000 tecken. Typen NCHAR kan användas för att lagra tecken i det ryska alfabetet sedan enkelbyte-kodningar tillåter inte detta.

NVARCHAR [(n)]

Används för att lagra strängar med variabel längd av Unicode -tecken. En NVARCHAR -sträng kräver 2 byte för att lagra varje tecken, så en NVARCHAR -sträng kan innehålla högst 4000 tecken.

VARCHAR -datatypen är identisk med CHAR -datatypen, med en skillnad: om innehållet i CHAR (n) -strängen är kortare än n tecken fylls resten av strängen med mellanslag. Och antalet byte som upptar en VARCHAR -sträng är alltid lika med antalet tecken i den.

Tidsdatatyper

Följande tillfälliga datatyper stöds i Transact-SQL:

Datatyper DATUM TID och SMALLDATETIME används för att lagra datum och tid som heltal på 4 respektive 2 byte. Värden av typen DATETIME och SMALLDATETIME lagras internt som två separata numeriska värden. Datumdelen av DATETIME -värden lagras i intervallet 01/01/1753 till 31/12/9999, och motsvarande del av SMALLDATETIME -värdena ligger i intervallet 01/01/1900 till 06/06/2079. Tidskomponenten lagras i ett andra 4-byte (2-byte för SMALLDATETIME-värden) som tre hundradelar av en sekund (för DATETIME) eller minuter (för SMALLDATETIME) sedan midnatt.

Om du bara vill lagra datum- eller tidsdelen är det något obekvämt att använda ett DATETIME- eller SMALLDATETIME -värde. Av denna anledning introducerades datatyperna i SQL Server DATUM och TID som bara lagrar datum- och tidskomponenterna i DATETIME -värden. DATE -värdena är 3 byte långa, vilket representerar datumintervallet från 01/01/0001 till 31/12/9999. TIME-värden är 3-5 byte och representerar tid med en noggrannhet på 100 ns.

Data typ DATETIME2 används för att representera datum- och tidsvärden med hög precision. Beroende på krav kan värden av denna typ definieras i olika längder, och de upptar från 6 till 8 byte. Tidskomponenten representerar tid med en noggrannhet på 100 ns. Denna datatyp stöder inte sommartid.

Alla tillfälliga datatyper som diskuterats hittills stöder inte tidszoner. Data typ DATETIMEOFFSET har en komponent för att lagra tidszonförskjutningen. Av denna anledning är värden av denna typ 6 till 8 byte långa. Alla andra egenskaper för denna datatyp är desamma som motsvarande egenskaper för datatypen DATETIME2.

Som standard definieras Transact-SQL-datumvärden som en "mmm dd åååå" formatsträng (till exempel "10 januari 1993"), omslutna i enkla eller dubbla citattecken. (Men den relativa ordningen för månad, dag och år kan beståndsdelar ändras med hjälp av instruktionen SET DATEFORMAT... Dessutom stöder systemet numeriska värden för månadskomponenten och / och - separatorer.) På samma sätt indikeras tidsvärdet i ett 24 -timmarsformat som "hh: mm" (till exempel "22:24") .

Transact-SQL stöder olika inmatningsformat för DATETIME-värden. Som nämnts definieras varje beståndsdel separat, så datum- och tidsvärden kan specificeras i valfri ordning eller separat. Om en av komponenterna inte specificeras använder systemet standardvärdet för den. (Standardtiden är 12:00 (före middagstid).)

Datatyper för binär och bit

Det finns två typer av binära datatyper: BINÄR och VARBINÄR. Dessa datatyper beskriver dataobjekt i systemets interna format och används för att lagra bitsträngar. Av denna anledning anges värden för dessa typer med hjälp av hexadecimala tal.

Värden av bittypen innehåller bara en bit, så att upp till åtta värden av denna typ kan lagras i en byte. En kort beskrivning av egenskaperna för binära och bitdatatyper ges i tabellen nedan:

Datatyp för stora objekt

LOB (Large OBject) datatyp används för att lagra dataobjekt upp till 2 GB i storlek. Sådana objekt används vanligtvis för att lagra stora mängder textdata och för att ladda insticksprogram och ljud- och videofiler. Följande LOB-datatyper stöds i Transact-SQL:

Från och med SQL Server 2005 gäller samma programmeringsmodell för både standarddatatypsvärden och LOB -datatypsvärden. Med andra ord kan praktiska systemfunktioner och strängoperatörer användas för att arbeta med LOB -objekt.

I databasmotorn parameter MAX används med datatyperna VARCHAR, NVARCHAR och VARBINARY för att definiera värden för kolumner med variabel längd. När du använder standard MAX -längden istället för att uttryckligen ange längden på ett värde, analyserar systemet längden på en specifik sträng och avgör om den strängen ska lagras som ett vanligt värde eller som ett LOB -värde. MAX -parametern anger att kolumnvärdena kan vara lika stora som den maximala LOB -storleken för detta system.

Även om systemet avgör hur LOB: erna lagras kan standardinställningarna åsidosättas med hjälp av systemproceduren sp_tableoption med argumentet LARGE_VALUE_TYPES_OUT_OF_ROW. Om värdet på detta argument är 1, kommer data i kolumnerna som deklareras med hjälp av MAX -parametern att lagras separat från resten av data. Om argumentvärdet är 0, lagrar databasmotorn alla värden upp till 8 060 byte i tabellraden som normala data, och större värden lagras utanför rad i LOB-lagringsområdet.

Från och med SQL Server 2008 kan VARBINÄR (MAX) kolumner använda FILESTREAM -attribut för att spara data BLOB (Binary Large OBject) direkt på filsystemet NTFS. Den största fördelen med detta attribut är att storleken på motsvarande LOB endast begränsas av filsystemets volym.

UNIQUEIDENTIFIER datatyp

Som namnet antyder är datatypen UNIQUEIDENTIFIER ett entydigt identifieringsnummer som lagras som en 16-bytes binär sträng. Denna datatyp är nära besläktad med identifieraren GUID (globalt unikt identifierare), vilket garanterar otvetydighet i global skala. Således möjliggör denna datatyp unik identifiering av data och objekt i distribuerade system.

Du kan initiera en UNIQUEIDENTIFIER -kolumn eller variabel med funktionen NEWID eller NEWSEQUENTIALID, eller använda en anpassad formaterad strängkonstant bestående av hexadecimala siffror och bindestreck. Dessa funktioner diskuteras i nästa artikel.

En kolumn med värden för datatypen UNIQUEIDENTIFIER kan nås med frågan ROWGUIDCOL sökord för att ange att kolumnen innehåller identitetsvärden. (Detta sökord genererar inga värden.) En tabell kan innehålla flera UNIQUEIDENTIFIER -kolumner, men bara en av dem kan ha ROWGUIDCOL -nyckelordet.

SQL_VARIANT datatyp

Datatypen SQL_VARIANT kan användas för att lagra värden av olika typer samtidigt, till exempel numeriska värden, strängar och datum. (Undantaget är TIMESTAMP -värden.) Varje värde i en SQL_VARIANT -kolumn har två delar: själva värdet och informationen som beskriver värdet. Denna information innehåller alla egenskaper för den faktiska datatypen av värdet, till exempel längd, skala och precision.

Funktionen SQL_VARIANT_PROPERTY används för att komma åt och visa information om värdena för en kolumn av typen SQL_VARIANT.

Du bör bara deklarera en kolumntyp som SQL_VARIANT om du verkligen behöver det. Till exempel, om en kolumn är avsedd att lagra värden för olika datatyper, eller om, när du skapar en tabell, typen av data som kommer att lagras i den här kolumnen är okänd.

HIERARKYID datatyp

Datatypen HIERARCHYID används för att lagra hela hierarkin. Till exempel kan denna typ av värde lagra hierarkin för alla anställda eller mappens hierarki. Denna typ implementeras som en CLR-användardefinierad typ som omfattar flera systemfunktioner för att skapa och arbeta med hierarkinoder. Följande funktioner, bland andra, tillhör metoder av denna datatyp: GetLevel (), GetAncestor (), GetDescendant (), Read () och Write ().

TIMESTAMP -datatyp

Datatypen TIMESTAMP anger att en kolumn som är VARBINÄR (8) eller BINÄR (8), beroende på kolumnegenskapen, ska vara noll. För varje databas innehåller systemet en räknare som ökar när någon rad som innehåller en TIMESTAMP -cell infogas eller uppdateras och tilldelar den cellen till den cellen. Med celler av typen TIMESTAMP kan du således bestämma den relativa tiden för den senaste ändringen av motsvarande rader i tabellen. ( ROWVERSIONär synonymt med TIMESTAMP.)

I sig är värdet som lagras i en TIMESTAMP -kolumn irrelevant. Denna kolumn används vanligtvis för att avgöra om en viss rad i en tabell har ändrats sedan den senast öppnades.

Lagringsalternativ

Från och med SQL Server 2008 finns det två olika lagringsalternativ som alla kan spara LOB: er och spara diskutrymme. Det här är följande alternativ:

    lagring av FILESTREAM -data;

    lagring med glesa kolumner.

Dessa lagringsalternativ diskuteras i följande underavsnitt.

Lagra FILESTREAM -data

Som nämnts tidigare stöder SQL Server lagring av stora objekt (LOB) genom datatypen VARBINÄR (MAX). En egenskap av denna datatyp är att binära stora objekt (BLOB) lagras i databasen. Denna omständighet kan orsaka prestandaproblem vid lagring av mycket stora filer som ljud- eller videofiler. I sådana fall lagras dessa data utanför databasen i externa filer.

FILESTREAM -datalagring stöder hantering av LOB som lagras i NTFS -filsystemet. Den största fördelen med denna typ av lagring är att även om data lagras utanför databasen, hanteras den av databasen. Således har denna lagringstyp följande egenskaper:

    FILESTREAM -data kan sparas med CREATE TABLE -satsen, och data modifieringsuttalanden (SELECT, INSERT, UPDATE och DELETE) kan användas för att manipulera data;

    databashanteringssystemet ger samma säkerhetsnivå för FILESTREAM -data som för data som lagras i en databas.

Glesa kolumner

Syftet med lagringsalternativet med glesa kolumner skiljer sig väsentligt från lagringsändamålet för FILESTREAM -typen. Medan syftet med FILESTREAM -lagring är att lagra LOB -objekt utanför databasen, är syftet med glesa kolumner att minimera diskutrymmet som databasen tar upp.

Kolumner av denna typ låter dig optimera lagringen av kolumner med de flesta av deras värden noll. När du använder glesa kolumner behöver du inte diskutrymme för att lagra nullvärden, men å andra sidan kräver lagring av icke-nullvärden ytterligare 2 till 4 byte, beroende på deras typ. Av denna anledning rekommenderar Microsoft att du bara använder glesa kolumner när du förväntar dig minst 20% av det totala diskutrymmet.

Glesa kolumner definieras på samma sätt som andra kolumner i en tabell; adressen till dem utförs på ett liknande sätt. Detta innebär att du kan använda SELECT, INSERT, UPDATE och DELETE -satser för att komma åt glesa kolumner på samma sätt som du skulle använda vanliga kolumner. Den enda skillnaden gäller skapandet av glesa kolumner: för att definiera en specifik kolumn används sparsamt SPARSE -argument efter kolumnnamnet, som visas i det här exemplet:

column_name datatyp SPARSE

Flera glesa kolumner i en tabell kan grupperas i en uppsättning kolumner. En sådan uppsättning skulle vara ett alternativt sätt att lagra och komma åt värden i alla glesa kolumner i tabellen.

NULL -värde

Nollvärdet är ett specialvärde som kan tilldelas en tabellcell. Detta värde används vanligtvis när informationen i en cell är okänd eller inte tillämplig. Om du till exempel inte känner till hemtelefonnumret till en företagsanställd rekommenderar vi att du ställer in motsvarande cell i kolumnen home_telephone till null.

Om värdet på någon operand för ett aritmetiskt uttryck är noll, kommer värdet av resultatet för att utvärdera det uttrycket också att vara null. Därför, i unary aritmetiska operationer, om värdet på uttrycket A är noll, returnerar både + A och -A null. I binära uttryck, om värdet för en eller båda operanderna A och B är noll, kommer resultatet av operationen av addition, subtraktion, multiplikation, division och divisionsmodul också att dessa operander är noll.

Om uttrycket innehåller en jämförelseoperator och värdet på en eller båda operanderna för denna operation är noll, blir resultatet av denna operation också noll.

Nollvärdet måste skilja sig från alla andra värden. För numeriska datatyper är värdet 0 och null inte detsamma. Detsamma gäller för den tomma strängen och null för teckendatatyper.

Nullvärden kan bara lagras i en tabellkolumn om det uttryckligen är tillåtet i kolumndefinitionen. Å andra sidan är nullvärden inte tillåtna för en kolumn om NOT NULL uttryckligen anges i dess definition. Om NULL eller NOT NULL uttryckligen anges för en kolumn med datatyp (med undantag för TIMESTAMP -typ) tilldelas följande värden:

    NULL om parametervärde ANSI_NULL_DFLT_ON SET -uttalandet är på.

    NOT NULL om värdet på parametern ANSI_NULL_DFLT_OFF i SET -satsen är på.

Om set -satsen inte är aktiverad kommer kolumnen som standard att vara INTE NULL. (Nullvärden är inte tillåtna för TIMESTAMP -kolumner.)







2021 gtavrl.ru.