PostgreSQL Datatyper: Numerisk, Tecken, Byte

โšก Smart sammanfattning

PostgreSQL Datatyper definierar vilken typ av vรคrde varje kolumn kan lagra, vilket tรคcker tecken-, numeriska, binรคra, datum- och tids-, booleska, geometriska, nรคtverks-, UUID-, XML- och JSON-kategorier. PostgreSQL lรฅter รคven anvรคndare skapa anpassade typer med kommandot CREATE TYPE.

  • ๐Ÿ”ค Karaktรคrstyper: CHAR, VARCHAR och TEXT lagrar textvรคrden med fast lรคngd, variabel lรคngd och obegrรคnsad lรคngd.
  • ๐Ÿ”ข Numeriska typer: Heltal och flyttalstyper strรคcker sig frรฅn smallint till bigint, plus exakta numeriska och decimalvรคrden.
  • ๐Ÿ•’ Datum och tid: Tidsstรคmpel, datum, tid och intervalltyper erbjuder mikrosekundprecision med valfria tidszoner.
  • โœ… Boolean och Enum: Booleanska vรคrden gรคller fรถr sant, falskt eller noll, medan upprรคknade typer modellerar som sรคllan รคndrar fasta mรคngder.
  • ๐ŸŒ Specialiserade typer: Nรคtverk, geometri, UUID, XML, JSON och JSONB hanterar adresser, former, identifierare och strukturerad data.
  • ???? Bรคsta praxis: Fรถredra TEXT fรถr strรคngar och NUMERISK fรถr tal, och skapa anpassade typer endast vid behov.

PostgreSQL erbjuder en rik uppsรคttning inbyggda datatyper fรถr anvรคndare. Anvรคndare kan lรคgga till nya typer med hjรคlp av CREATE TYPE-kommandot. Det gรถr ocksรฅ frรฅgor enklare och mer lรคsbara.

Data skrivs in PostgreSQL

PostgreSQL stรถder fรถljande datatyper:

  • Texttyper
  • Numeriska typer
  • Datum och tider
  • XML
  • JSON
  • Boolean
  • Bits
  • Binรคr data
  • nรคtverks
  • arrayer
  • Skapa din datatyp
  • Tillfรคllig
  • UUID
  • Speciella datatyper fรถr att lagra en nรคtverksadress och geometriska data.

Lรฅt oss studera PostgreSQL datatyper i detalj

Teckendatatyper

PostgreSQL stรถder teckendatatyper fรถr lagring av textvรคrden. PostgreSQL bygger teckendatatyper av samma interna strukturer. PostgreSQL erbjuder tre teckendatatyper: CHAR(n), VARCHAR(n) och TEXT.

Namn BESKRIVNING
varchar(n) Lรฅter dig deklarera variabel lรคngd med en grรคns
Rรถd(n) Fast lรคngd, blank vadderad
text Anvรคnd kan anvรคnda denna datatyp fรถr att deklarera en variabel med obegrรคnsad lรคngd

Numeriska datatyper

PostgreSQL stรถder tvรฅ olika typer av nummer:

  • heltal
  • Flyttal
Namn Butiksstorlek Mรคtomrรฅde
smallint 2 bitgrupper -32768 till + 32767
heltal 4 bitgrupper -2147483648 till + 2147483647
bigint 8 bitgrupper -9223372036854775808 till 9223372036854775807
decimal- variabel Om du deklarerade den som decimal varierar datatypen frรฅn 131072 siffror fรถre decimalkomma till 16383 siffror efter decimalkomma
numerisk variabel Om du deklarerar det som nummer kan du inkludera nummer upp till 131072 siffror fรถre decimalkomma till 16383 siffror efter decimalkomma
verklig 4 bitgrupper 6 decimalsiffror precision
dubbla 8 bitgrupper 15 decimalsiffror precision

Binรคra datatyper

En binรคr strรคng รคr en sekvens av oktetter eller byte. Binรคra Postgres-datatyper รคr uppdelade pรฅ tvรฅ sรคtt.

  • Binรคra strรคngar tillรฅter lagring av odds med vรคrde noll
  • Ej utskrivbara oktetter

Teckenstrรคngar tillรฅter inte noll oktetter och tillรฅter รคven andra oktettvรคrden och sekvenser som รคr ogiltiga enligt databasens teckenuppsรคttningsregler fรถr kodning.

Namn Lagringsstorlek BESKRIVNING
Byte 1 till 4 byte plus storleken pรฅ den binรคra strรคngen Binรคr strรคng med variabel lรคngd

Nรคtverksadresstyp

Mรฅnga applikationer lagrar nรคtverksinformation som IP-adresser till anvรคndare eller sensorer. PostgreSQL har tre inbyggda typer som hjรคlper dig att optimera nรคtverksdata.

Namn Storlek BESKRIVNING
cider 7 eller 19 byte IPv4 och IPv6 nรคtverk
inet 7 eller 19 byte IPv4- och IPv6-vรคrdar och nรคtverk
macaddr 6 bitgrupper MAC-adresser

Att anvรคnda nรคtverksadresstyper har fรถljande fรถrdelar

  1. Lagringsutrymmessparande
  2. Kontroll av inmatningsfel
  3. Funktioner som att sรถka data via subnรคt

Textsรถkningstyp

PostgreSQL tillhandahรฅller tvรฅ datatyper som รคr utformade fรถr att stรถdja fulltextsรถkning. Fulltextsรถkning รคr att sรถka igenom en samling dokument pรฅ naturliga sprรฅk fรถr att sรถka i de som bรคst matchar en frรฅga.

  • Tsvector textsรถkning PostgreSQL variabeltyper representerar ett dokument i en form optimerad fรถr textsรถkning
  • Textsรถkningen av frรฅgetyp lagrar de nyckelord som behรถver sรถkas

Datum/Tid Datatyper

PostgreSQL tidsstรคmpel erbjuder mikrosekundsprecision istรคllet fรถr sekundprecision. Dessutom har du ocksรฅ mรถjlighet att lagra med eller utan tidszon. PostgreSQL kommer att konvertera tidsstรคmpel med tidszon till UTC pรฅ inmatning och lagra den.

Inmatning av datum och tid accepteras i olika format, inklusive traditionell Postgres, ISO 8601. SQL-kompatibel mm.

PostgreSQL stรถder bestรคllning av dag/mรฅnad/รฅr. Format som stรถds รคr DMY, MDY, YMD

Temporala datatyper

Namn Storlek Mรคtomrรฅde Upplรถsning
Tidsstรคmpel utan tidszon 8 bitgrupper 4713 f.Kr. till 294276 e.Kr 1 mikrosekund/14 siffror
Tidsstรคmpel med tidszon 8 bitgrupper 4713 f.Kr. till 294276 e.Kr 1 mikrosekund/14 siffror
datum 4 bitgrupper 4713 f.Kr. till 294276 e.Kr En dag
Tid utan tidszon 8 bitgrupper 00:00:00 to 24:00:00 1 mikrosekund/14 siffror
Tid med tidszon 12 bitgrupper 00:00:00 + 1459 till 24:00:00-1459 1 mikrosekund/14 siffror
Intervall 12 bitgrupper -178000000 till 178000000 รฅr 1 mikrosekund/14 siffror

Exempel

Ingรฅng BESKRIVNING
2025-09-07 ISO 8601, 7 september med valfri datumstil (rekommenderat format)
September 7, 2025 7 september med valfri dejtstil
9/7/2025 7 september med MDY, 9 juli med DMY
9/7/25 7 september 2025, med MDY
2025-september-7 7 september med valfri dejtstil
7 september 2018 7 september med valfri dejtstil
7-september-25 7 september 2025, med YMD
20250907 ISO 8601, 7 september 2025 i alla lรคgen
2025.250 รฅr och dag pรฅ รฅret, i det hรคr fallet den 7 september 2025
J25250 Julians datum

Tid/tid med tidszoningรฅng

Ingรฅng BESKRIVNING
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM Samma som 11:19
11: 19 PM samma som 23:19
23: 19-3
23: 19-03: 00
231900-03
ISO 8601, samma som 11:19 EST
23: 19 EST tidszon specificerad som EST, samma som 11:19 EST

boolesk typ

En boolesk datatyp kan hรฅlla

  • Sant
  • Falsk
  • null

vรคrden.

Du anvรคnder en bool or boolean nyckelord fรถr att deklarera en kolumn med den booleska datatypen.

Nรคr du infogar vรคrden i en boolesk kolumn konverterar Postgre vรคrden som

  • Ja
  • y
  • 1
  • t
  • sann

1.

Medan vรคrderingar som

  • Nej
  • N
  • 0
  • F
  • Falsk

omvandlas till 0

Nรคr du vรคljer data konverteras vรคrdena igen till yes, true, y, etc.

Geometriska datatyper

Geometriska datatyper representerar tvรฅdimensionella rumsliga objekt. De hjรคlper till att utfรถra operationer som rotationer, skalning, translation, etc.

Namn Fรถrvaringsstorlek Representationen BESKRIVNING
Punkt 16 bitgrupper Peka pรฅ ett plan (X, y)
linje 32 bitgrupper Oรคndlig linje ((xl.yl).(x2.y2))
Lseg 32 bitgrupper Finita linjesegment ((xl.yl).(x2.y2))
Box 32 bitgrupper Rektangulรคr Box ((xl.yl).(x2.y2))
Bana 16n + 16n byte Stรคng och รถppna sรถkvรคgen ((xl.yl),...)
Polygon 40 + 16n byte Polygon [(xl.yl),โ€ฆ.]
Circle 24 bitgrupper Circle <(xy).r> (mittpunkt och radie)

Upprรคknade typer

Rรคknat PostgreSQL datatyp รคr anvรคndbar fรถr att representera information som sรคllan รคndras, sรฅsom landskod eller filial-ID. Den upprรคknade datatypen representeras i en tabell med frรคmmande nycklar fรถr att sรคkerstรคlla dataintegritet.

Exempelvis

Hรฅrfรคrg รคr ganska statisk i en demografisk databas

CREATE TYPE hair_color AS ENUM
('brown','black','red','grey','blond')

Upprรคknade typer

Omrรฅdestyp

Mรฅnga affรคrsapplikationer krรคver data i intervall. Vanligtvis definieras tvรฅ kolumner (exempel: startdatum, slutdatum) fรถr att hantera intervall. Detta รคr bรฅde ineffektivt och svรฅrt att underhรฅlla.

Postgre har byggt sortimentstyper enligt fรถljande

  • int4range โ€” Visa intervall fรถr heltal
  • int8range โ€” Visa intervall fรถr bigint
  • numrange โ€” Visar det numeriska omrรฅdet
  • tstrange โ€” Hjรคlper dig att visa tidsstรคmpel utan tidszon
  • konstigt โ€” Lรฅter dig visa tidsstรคmpel med tidszon
  • datumintervall โ€” Datumintervall

UUID-typ

En universellt unik identifierare (UUID) รคr en 128-bitars kvantitet som genereras av en algoritm. Det รคr mycket osannolikt att samma identifierare genereras av en annan person i vรคrlden med samma algoritm. Det รคr dรคrfรถr dessa identifierare รคr ett idealiskt val fรถr distribuerade system eftersom de erbjuder unikhet inom en enda databas. En UUID skrivs som en grupp hexadecimala siffror med gemener, med olika grupper separerade med bindestreck.

PostgreSQL har en inbyggd UUID-datatyp som fรถrbrukar 16 byte lagringsutrymme. UUID รคr en idealisk datatyp fรถr primรคrnycklar.

Exempelvis

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre accepterar ocksรฅ alternativa former av UUID-inmatningar som alla versaler, inga bindestreck, hรคngslen, etc.

XML-typ

PostgreSQL lรฅter dig lagra XML-data i en datatyp, men det รคr inget annat รคn ett tillรคgg till en textdatatyp. Men fรถrdelen รคr att den kontrollerar att XML-inmatningen รคr vรคlformaterad.

Exempelvis

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

JSON-typ

Fรถr att lagra JSON-data PostgreSQL erbjuder 2 datatyper

  1. JSON
  2. JSONB
json Jsonb
En enkel fรถrlรคngning av en textdatatyp med JSON-validering En binรคr representation av JSON-data
Infogning gรฅr snabbt men datahรคmtning รคr relativt lรฅngsam. Infogning gรฅr lรฅngsamt men vรคlj (datahรคmtning gรฅr snabbt)
Sparar inmatad data precis som den รคr inklusive blanksteg. Stรถder indexering. Kan optimera blanksteg fรถr att gรถra hรคmtning snabbare.
Ombearbetning vid datahรคmtning Ingen ombearbetning krรคvs vid datahรคmtning

Den mest anvรคnda JSON-datatypen anvรคnde oss av jsonb om det inte finns nรฅgot speciellt behov av att anvรคnda JSON-datatypen.

Exempelvis

CREATE TABLE employee (
  id integer NOT NULL,
  age  integer NOT NULL,
  data jsonb
);
INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboarded": true}');

Pseudo-typer

PostgreSQL har mรฅnga specialanpassade poster som kallas pseudotyper. Du kan inte anvรคnda pseudotyper som PostgreSQL kolumntyper. Det anvรคnds fรถr att deklarera eller funktions argument eller returtyp.

Var och en av de tillgรคngliga pseudotyperna รคr till hjรคlp i situationer dรคr en funktions beteendedokument inte motsvarar att bara ta eller returnera ett vรคrde fรถr en specifik SQL-datatyp.

Namn BESKRIVNING
Vilken som helst Funktionen accepterar alla indatatyper.
En matris Funktionen accepterar alla typer av arraydata.
Vilket element som helst Funktionen accepterar alla datatyper.
Vilken upprรคkning som helst Funktionen accepterar alla enumdatatyper.
Icke-array Funktionen accepterar alla icke-arraydatatyper.
Cstring Funktionen accepterar eller returnerar nollterminerad C-strรคng.
Inre Intern funktion accepterar eller returnerar serverintern datatyp.
Sprรฅkhanterare Det รคr deklarerat att returnera sprรฅkhanteraren.
Spela in Hitta en funktion som returnerar en ospecificerad radtyp.
Trigger En triggerfunktion anvรคnds fรถr att returnera trigger.

Det รคr viktigt att anvรคndaren som anvรคnder denna funktion mรฅste se till att funktionen fungerar sรคkert nรคr en pseudotyp anvรคnds som argumenttyp.

Bรคsta metoder fรถr att anvรคnda datatyper

  • Anvรคnd "text" datatyp om du inte vill begrรคnsa inmatningen
  • Anvรคnd aldrig "kol".
  • Heltal anvรคnder "int." Anvรคnd bara bigint nรคr du har riktigt stora siffror
  • Anvรคnd "numerisk" nรคstan alltid
  • Anvรคnd flyta in PostgreSQL om du har IEEE 754-datakรคlla

Vanliga frรฅgor

Numerisk (decimal) lagrar exakta vรคrden och รคr idealisk fรถr pengar och precisa berรคkningar. Flyttalstyper (reella och dubbla) lagrar ungefรคrliga vรคrden med snabbare prestanda men smรฅ avrundningsfel, sรฅ undvik dem fรถr exakta finansiella data.

Ja. PostgreSQL lรฅter vilken kolumn som helst lagra en array av en bastyp, sรฅsom integer[] eller text[]. Arrayer รคr anvรคndbara fรถr listor med vรคrden och kan sรถkas igenom, indexeras och avkapslas i frรฅgor.

Anvรคnd den numeriska typen fรถr valuta eftersom den lagrar exakta decimalvรคrden. Undvik flyttalsmetoder, som introducerar avrundningsfel. Den dedikerade pengatypen finns ocksรฅ men รคr mindre flexibel fรถr data i flera valutor.

AI kan granska dina exempeldata och rekommendera lรคmpliga typer, till exempel numeric for money eller jsonb fรถr flexibla fรคlt. Den fรถrklarar avvรคgningar inom lagring, precision och prestanda sรฅ att du kan fatta dina beslut med sรคkerhet.

Ja. AI kan mappa datatyper frรฅn MySQL, Oracle, eller SQL Server till deras PostgreSQL ekvivalenter och flaggavvikelser, sรฅsom TINYINT eller NVARCHAR, helping du planerar en smidigare databasmigrering.

Sammanfatta detta inlรคgg med: