PostgreSQL erbjuder en rik uppsättning infödda 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.
Datatyper i PostgreSQL
PostgreSQL stöder följande datatyper:
- Texttyper
- Numeriska typer
- Datum och tider
- XML
- JSON
- Boolean
- Bits
- Binära data
- Nätverk
- Arrayer
- Skapa din datatyp
- Boolean
- Timlig
- UUID
- Array
- JSON
- Särskilda datatyper för lagring av nätverksadress och geometriska data.
Låt oss studera PostgreSQL-datatyper i detalj
- Teckendatatyper
- Numeriska datatyper
- Binära datatyper
- Nätverksadresstyp
- Text söktyp
- Datum / tid Datatyper
- Boolesk typ
- Geometriska datatyper
- Uppräknade typer
- Områdestyp
- UUID-typ
- XML-typ
- JSON-typ
- Pseudo-typer
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 |
Char (n) | Blank vadderad i fast längd |
Text | Användning kan använda denna datatyp för att deklarera en variabel med obegränsad längd |
Numeriska datatyper
PostgreSQL stöder två distinkta typer av nummer:
- Heltal
- Flytpunktsnummer
namn | Butikens storlek | Räckvidd |
---|---|---|
smallint | 2 byte | -32768 till +32767 |
heltal | 4 bytes | -2147483648 till +2147483647 |
bigint | 8 byte | -9223372036854775808 till 9223372036854775807 |
decimal- | variabel | Om du förklarade det som decimaltatatyp varierar från 131072 siffror före decimaltecken till 16383 siffror efter decimaltecken |
numerisk | variabel | Om du förklarar det som siffran kan du inkludera nummer upp till 131072 siffror före decimaltecken till 16383 siffror efter decimaltecken |
verklig | 4 bytes | 6 decimalers precision |
dubbel | 8 byte | 15 decimalers precision |
Binära datatyper
En binär sträng är en sekvens av oktetter eller byte. Binära postgresdatatyper är indelade på två sätt.
- Binära strängar tillåter lagring av odds på värdet noll
- Oktetter som inte kan skrivas ut
Teckensträngar tillåter inte noll oktetter och tillåter inte alla andra oktettvärden och sekvenser som är ogiltiga enligt databasens koduppsättningskodningsregler.
namn | Förvaringsstorlek | Beskrivning |
---|---|---|
Byte | 1 till 4 byte plus storleken på den binära strängen | Binärsträng med variabel längd |
Nätverksadresstyp
Många applikationer lagrar nätverksinformation som IP-adress för användare eller
sensorer. PostgreSQL har tre inbyggda typer som hjälper dig att optimera nätverksdata.
namn | Storlek | Beskrivning |
---|---|---|
cider | 7 eller 19 byes | IPV4 och IPv6-nätverk |
Inet | 7 eller 19 byte | IPV4 och IPV5-värd och nätverk |
macaddr | 6 byte | MAC-adresser |
Att använda nätverksadresstyper har följande fördelar
- Sparar lagringsutrymme
- Kontroll av ingångsfel
- Funktioner som att söka i data via subnät
Text söktyp
PostgreSQL tillhandahåller två datatyper som är utformade för att stödja fulltextsökning. Fulltext-sökning söker igenom en samling naturliga språkdokument 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 som är optimerad för textsökning
- Frågestypens textsökning lagrar de nyckelord som behöver sökas
Datum / tid Datatyper
PostgreSQL-tidsstämpel erbjuder mikrosekundprecision istället för andra precision. Dessutom har du också möjlighet att lagra med tidszon eller utan. PostgreSQL konverterar tidsstämpel med tidszon till UTC vid inmatning och lagrar den.
Inmatning av datum och tid accepteras i olika format, inklusive traditionella Postgres, ISO 8601. SQL-kompatibel etc.
PostgreSQL stöder dag / månad / år beställning. Format som stöds är DMY, MDY, YMD
Temporal datatyper
namn | Storlek | Räckvidd | Upplösning |
---|---|---|---|
Tidsstämpel utan tidszon | 8 byte | 4713 f.Kr. till 294276 e.Kr. | 1 mikrosekund / 14 siffror |
Tidsstämpel med tidszon | 8 byte | 4713 f.Kr. till 294276 e.Kr. | 1 mikrosekund / 14 siffror |
datum | 4 bytes | 4713 f.Kr. till 294276 e.Kr. | En dag |
Tid utan tidszon | 8 byte | 00:00:00 till 24:00:00 | 1 mikrosekund / 14 siffror |
Tid med tidszon | 12 byte | 00:00:00 + 1459 till 24: 00: 00-1459 | 1 mikrosekund / 14 siffror |
Intervall | 12 byte | -178000000 till 178000000 år | 1 mikrosekund / 14 siffror |
Exempel:
Inmatning | Beskrivning |
---|---|
2025-09-07 | ISO 8601, 7 september med valfritt datumformat (rekommenderat format) |
7 september 2025 | 7 september med alla datumstilar |
9/7/2025 | 7 september med MDY, 9 juli med DMY |
9/7/25 | 7 september 2025 med MDY |
2025-sep-7 | 7 september med alla datumstilar |
Sep-7-2018 | 7 september med alla datumstilar |
7-september-25 | 7 september 2025 med YMD |
20250907 | ISO 8601,7 september 20225 i vilket läge som helst |
2025.250 | år och dag på året, i det här fallet den 7 september 2025 |
J25250 | Julians datum |
Tid / tid med tidszoninmatning
Inmatning | Beskrivning |
---|---|
11: 19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 | Samma som 11:19 |
23:19 | samma som 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, samma som 23:19 EST |
23:19 EST | tidszon specificerad som EST, samma som 23:19 EST |
Boolesk typ
En boolesk datatyp kan innehålla
- Sann
- Falsk
- null
värden.
Du använder ett bool- eller booleskt 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
till 1.
Medan värden som
- Nej
- N
- 0
- F
- Falsk
omvandlas till 0
När du väljer data konverteras värdena igen till ja, sant, y, etc.
Geometriska datatyper
Geometriska datatyper representerar tvådimensionella rumsliga objekt. De hjälper till att utföra operationer som rotationer, skalning, översättning etc.
namn | Förvaringsstorlek | Representation | Beskrivning |
---|---|---|---|
Punkt | 16 byte | Peka på ett plan | (x, y) |
Linje | 32 byte | Oändlig linje | ((xl.yl). (x2.y2)) |
Lseg | 32 byte | Slutet linjesegment | ((xl.yl). (x2.y2)) |
Låda | 32 byte | Rektangulär låda | ((xl.yl). (x2.y2)) |
Väg | 16n + 16n byte | Stäng och öppna sökvägen | ((xl.yl), ...) |
Polygon | 40 + 16n byte | Polygon | [(xl.yl)….] |
Cirkel | 24 byte | Cirkel | <(xy) .r> (mittpunkt och radie) |
Uppräknade typer
Uppräknad datatyp PostgreSQL är användbar för att representera sällan förändrad information som landskod eller filial-id. Den uppräknade datatypen visas i en tabell med främmande nycklar för att säkerställa dataintegritet.
Exempel:
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. Normalt 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 intervallet
- tstrange - Hjälper dig att visa tidsstämpel utan tidszon
- konstigt - Låter dig visa tidsstämpel med tidszon
- datumintervall - Datumintervall
UUID-typ
Universally Unique Identifies (UUID) är en 128-bitars kvantitet som genereras av en algoritm. Det är mycket osannolikt att samma identifierare kommer att genereras av en annan person i världen med samma algoritm. Det är därför för de distribuerade systemen att dessa identifierare är ett perfekt val eftersom de erbjuder unikhet i en enda databas. En UUID skrivs som en grupp med små hexadecimala siffror, med olika grupper åtskilda av bindestreck.
PostgreSQL har en inbyggd UUID-datatyp som förbrukar 16 byte lagring ... UUID är en idealisk datatyp för primära nycklar.
Exempel:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre accepterar också alternativa former av UUID-ingångar som alla stora bokstäver, 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-ingången är välformad.
Exempel:
XMLPARSE (DOCUMENT '') Data Type …
JSON-typ
För att lagra JSON-data erbjuder PostgreSQL två datatyper
- JSON
- JSONB
json | Jsonb |
---|---|
En enkel förlängning av en textdatatyp med JSON-validering | En binär representation av JSON-data |
Insättningen är snabb men datahämtningen är relativt långsam. | Infoga är långsam men välj (datainhämtning är snabb) |
Sparar inmatad data precis som det är inklusive blanksteg. | Stöder indexering. Kan optimera det vita utrymmet för att göra det snabbare att hämta. |
Ombearbetning vid datainhämtning | Ingen upparbetning krävs vid datainhämtning |
De mest använda JSON-datatyperna använde oss jsonb såvida det inte finns något speciellt behov av att använda JSON-datatypen.
Exempel:
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"], "onboareded": true}');
Pseudo-typer
PostgreSQL har många specialposter som kallas pseudotyper. Du kan inte använda pseudotyper som PostgreSQL-kolumntyper. Det används för att deklarera eller funktionens argument eller returtyp.
Var och en av de tillgängliga pseudotyperna är till hjälp i situationer där en funktions beteendokument inte motsvarar att bara ta eller returnera ett värde för en specifik SQL-datatyp.
namn | Beskrivning |
---|---|
Några | Funktionen accepterar alla inmatade datatyper. |
En matris | Funktionen accepterar vilken datatyp som helst. |
Vilket element som helst | Funktionen accepterar vilken datatyp som helst. |
Varje enum | Funktionen accepterar vilken datatyp som helst. |
Nonarray | Funktionen accepterar alla datatyper som inte är array. |
Cstring | Funktionen accepterar eller returnerar null-avslutad C-sträng. |
Inre | Intern funktion accepterar eller returnerar server-intern datatyp. |
Språkhanterare | Det förklaras returnera språkhanteraren. |
Spela in | Hitta en funktion som returnerar en ospecificerad radtyp. |
Trigger | En triggerfunktion används för att returnera triggern. |
Det är viktigt att användaren som använder den här funktionen måste se till att funktionen fungerar säkert när en pseudo-typ används som argumenttyp.
Bästa metoder med datatyper
- Använd datatyp "text" om du inte vill begränsa inmatningen
- Använd aldrig "röding".
- Heltals använder "int." Använd endast bigint när du har riktigt stora siffror
- Använd "numeriskt" nästan alltid
- Använd float i PostgreSQL om du har IEEE 754-datakälla
Sammanfattning
- PostgreSQL erbjuder en rik uppsättning infödda datatyper för användare
- PostgreSQL stöder teckendatatyper för lagring av textvärden
- PostgreSQL stöder två distinkta typer av siffror: 1. Heltals, 2. Flytpunktsnummer
- En binär sträng är en sekvens av byte eller oktetter
- PostgreSQL har nätverksadresstyp som hjälper dig att optimera lagring av nätverksdata
- Textsökning PostgreSQL datastrukturer är utformade för att stödja fulltextsökning
- Datum / tid PSQL-datatyper tillåter information om datum och tid i olika format
- Fälttyper av booleska postgres kan innehålla tre värden 1. Sant 2. Falsk 3. Noll
- Geometriska PostgreSQL-datatyper representerar tvådimensionella rumsliga objekt
- Uppräknade datatyper i PostgreSQL är användbara för att representera sällan förändrad information som landskod eller filial-id
- Universally Unique Identifies (UUID) är en 128-bitars kvantitet som genereras av en algoritm
- PostgreSQL har många specialposter som kallas pseudotyper
- Det är bästa praxis att använda datatypen "text" om du inte vill begränsa inmatningen