Skip to content

Datatyper i PostgreSQL forklart

Alle vanlige kolonnedatatyper i PostgreSQL, gruppert etter familie: heltall, desimaler, tekst, tid, booleans og UUID-er, JSON, nettverksadresser, sammensatte typer og utvidelsestyper. Hver rad viser hva typen lagrer og når du bør velge den.

PostgreSQL har dusinvis av typer, men daglig skjemautforming bruker en kjerneoversikt. De gjentakende valgene er: integer mot numeric for tall, varchar mot text for strenger (text er som regel greit), timestamp mot timestamptz (velg timestamptz for alt fra virkeligheten), og json mot jsonb (velg jsonb — det er binært og kan indekseres). Velg den mest spesifikke typen som fortsatt passer; databasen håndhever den for deg.

Referansetabell · 46 oppføringer
46 of 46 rows
Heltall
Et 2-byte heltall fra -32768 til 32767.Sjelden; bare når du må spare plass.
Et 4-byte heltall, omtrent plus/minus 2 milliarder.Standardkolonnen for heltall.
Et 8-byte heltall, omtrent plus/minus 9 kvintillioner.Svært store mengder eller eksterne ID-er.
Et selvøkende 4-byte heltall.Eldre autonummererte nøkler; siden PG 10 er GENERATED AS IDENTITY den anbefalte erstatningen.
2-byte- og 8-byte-variantene av serial.Autonummerering tilpasset en smallint- eller bigint-kolonne.
Et heltall som tabellen genererer for deg (GENERATED ALWAYS AS IDENTITY).Det moderne serial; SQL-standard og tryggere mot manuelle innsettinger.
Desimaler og flyttall
Eksakte desimaler med vilkårlig presisjon.Penger og alt der avrundingsfeil er uakseptable.
Et 4-byte flyttall med enkel presisjon.Omtrentlige vitenskapelige verdier der presisjon ikke er kritisk.
Et 8-byte flyttall med dobbel presisjon.Geodata, statistikk og ML-funksjonsverdier.
Et valutabeløp med fast locale.Sjelden; numeric med en valutakode i appen er mer portabelt.
Tekst
Tekst med fast lengde, fylt ut med mellomrom.Koder med kjent bredde; sjelden nødvendig.
Tekst med variabel lengde og valgfri grense.Avgrensede strenger som brukernavn eller e-postadresser.
Tekst med variabel lengde uten lengdegrense.Den generelle strengkolonnen; ingen ytelsestap mot varchar.
Tid
En kalenderdato uten klokkeslett.Fødselsdager og forfallsdatoer.
Et klokkeslett, med eller uten tidssone.Daglige alarmer eller åpningstider.
Dato og klokkeslett uten tidssone.Eldre skjemaer; unngå i nytt arbeid.
Dato og klokkeslett lagret som UTC, vist i klientens tidssone.Standardvalget for ethvert virkelig tidspunkt; velg dette fremfor timestamp.
Et tidsrom, som 2 dager eller 3 timer.Varigheter og datoaritmetikk.
Boolean, UUID og bytes
Sann eller usann.Flagg og brytere.
En 128-bit globalt unik identifikator.Ikke-sekvensielle ID-er som er trygge å eksponere (lag i appen eller med gen_random_uuid).
Rå binærbytes.Blobs, bilder og uklare nyttelaster; bruk objektlagring for store filer.
Bitstrenger med fast eller variabel lengde.Pakkede flagg og protokollfelt; en enkelt av/på-verdi er fortsatt boolean.
JSON og semistrukturert
JSON tolket til en binær, indekserbar form.Fleksible eller nestede data; den anbefalte JSON-kolonnen (støtter GIN-indekser).
JSON beholdt som originalteksten.Sjelden; bare når du må bevare nøkkelrekkefølge eller nøyaktige mellomrom.
XML-tekst.Eldre integrasjoner som krever XML.
Et kompilert stiuttrykk for å navigere i JSON-data.Filtrering i jsonb med jsonb_path_query og SQL/JSON-operatorene.
Nettverk og søk
En IPv4- eller IPv6-vertsadresse.Lagring av klient- eller server-IP-er.
En IP-nettverksblokk, som 10.0.0.0/24.Brannmurregler og subnettområder.
En 6- eller 8-byte (EUI-64) MAC-adresse.Identifikatorer for enheter og nettverksgrensesnitt.
Forhåndsbearbeidet tekst for fulltekstsøk.Postgres sitt innebygde søk før du tar i bruk en egen søkemotor.
Søkeord kombinert med AND-, OR- og prefiksoperatorer.Spørringsdelen av fulltekstsøk, matchet mot en tsvector med @@.
En posisjon i write-ahead-loggen, loggsekvensnummeret.Overvåking av replikeringsforsinkelse og sikkerhetskopier.
Sammensatte og avanserte
En array av enhver bastype, f.eks. integer[].Lister med enkle verdier; bruk en undertabell når elementer trenger egne kolonner.
Én verdi fra en fast liste du definerer.Statusfelt med et stabilt sett med alternativer.
En egendefinert radtype med flere felt.Gjentatte feltgrupper delt mellom tabeller.
Et sammenhengende område mellom to grenser.Tidsplaner, prisbånd og versjonsområder, med overlappsoperatorer.
En bastype pakket inn i begrensninger du definerer.Gjenbrukbare regler som en ikke-tom e-postadresse, håndhevet i hver kolonne som bruker den.
En navnløs rad med typede verdier.Returverdier fra PL/pgSQL-funksjoner og mellomresultater i spørringer.
Innebygde todimensjonale geometriverdier.Enkel plangeometri; virkelige steder krever PostGIS.
En usignert 4-byte systemobjektidentifikator.Sammenkobling av systemkataloger; ikke for applikasjonskolonner.
En intern identifikatorstreng på 63 tegn.Katalogspørringer; vanlig text for alt som vises til brukere.
Utvidelsestyper
Nøkkel/verdi-strengpar i én enkelt verdi (utvidelse).Flate mapper; jsonb dekker dette bedre i dag.
En hierarkisk etikettsti som news.tech.ai (utvidelse).Trær med spørringer etter forfedre og etterkommere.
Tekst som sammenlignes uten hensyn til store og små bokstaver (utvidelse).Unikhet uten store og små bokstaver, som e-post, uten lower()-indeks.
Geografiske og geometriske objekter fra PostGIS-utvidelsen.Spørringer om avstand, innhold og romlig indeksering.
Utvidelsesfunksjoner som genererer UUID-verdier.Eldre generering; siden PG 13 er gen_random_uuid() innebygd.