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.

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
- Lagringsutrymmessparande
- Kontroll av inmatningsfel
- 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')
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
- JSON
- 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
