Alle almindelige PostgreSQL-kolonnetyper, grupperet efter familie: heltal, decimaler, tekst, tid, booleske værdier og UUID'er, JSON, netværksadresser, sammensatte typer og udvidelsestyper. Hver række viser, hvad typen lagrer, og hvornår man vælger den.
PostgreSQL har dusinvis af typer, men dagligt skemadesign bruger en kernemængde. De tilbagevendende valg er: integer frem for numeric til tal, varchar frem for text til strenge (text er som regel fint), timestamp frem for timestamptz (foretræk timestamptz til alt virkeligt) og json frem for jsonb (foretræk jsonb, det er binært og kan indekseres). Vælg den mest specifikke type, der stadig passer; databasen håndhæver den for dig.
Referencetabel · 46 poster
PostgreSQL-datatyperExplained
46 of 46 rows
Heltal
Et 2-byte heltal fra -32768 til 32767.
Sjældent; kun når du skal spare plads.
Et 4-byte heltal, cirka plus/minus 2 milliarder.
Standardkolonnen til heltal.
Et 8-byte heltal, cirka plus/minus 9 trillioner.
Meget store tællere eller eksterne ID'er.
Et automatisk forøgende 4-byte heltal.
Ældre automatisk nummererede nøgler; siden PG 10 er GENERATED AS IDENTITY den anbefalede erstatning.
2-byte- og 8-byte-varianterne af serial.
Automatisk nummerering matchet til en smallint- eller bigint-kolonne.
Et heltal, som tabellen genererer for dig (GENERATED ALWAYS AS IDENTITY).
Det moderne serial; SQL-standard og sikrere mod manuelle indsættelser.
Decimaler og flydende tal
Eksakte decimaler med vilkårlig præcision.
Penge og alt, hvor afrundingsfejl er uacceptable.
Et 4-byte flydende tal med enkel præcision.
Omtrentlige videnskabelige værdier, hvor præcision ikke er kritisk.
Et 8-byte flydende tal med dobbelt præcision.
Geodata, statistik og ML-featureværdier.
Et valutabeløb med en fast locale.
Sjældent; numeric med en valutakode i appen er mere portabelt.
Tekst
Tekst med fast længde, udfyldt med mellemrum.
Koder med kendt bredde; sjældent nødvendigt.
Tekst med variabel længde og valgfri grænse.
Begrænsede strenge såsom brugernavne eller e-mails.
Tekst med variabel længde uden længdegrænse.
Den generelle tekstkolonne; ingen ydelsesstraf frem for varchar.
Tid
En kalenderdato uden tid på dagen.
Fødselsdage og forfaldsdatoer.
Et tidspunkt på dagen, med eller uden tidszone.
Daglige alarmer eller åbningstider.
Dato og tid uden tidszone.
Ældre skemaer; undgå i nyt arbejde.
Dato og tid lagret som UTC, vist i klientens zone.
Standardvalget for ethvert virkeligt tidspunkt; foretræk dette frem for timestamp.
En tidsperiode, såsom 2 dage eller 3 timer.
Varigheder og datoberegning.
Boolsk, UUID og bytes
Sandt eller falsk.
Flag og til/fra-indstillinger.
En 128-bit universelt unik identifikator.
Ikke-sekventielle ID'er, der er sikre at vise frem (generer i appen eller med gen_random_uuid).
Rå binære bytes.
Blobs, billeder og uigennemsigtige payloads; foretræk objektlagring til store filer.
Bitstrenge med fast eller variabel længde.
Pakkede flag og protokolfelter; en enkelt til/fra-værdi er stadig boolean.
JSON og semistruktureret
JSON parset til en binær, indekserbar form.
Fleksible eller indlejrede data; den anbefalede JSON-kolonne (understøtter GIN-indekser).
JSON bevaret som den oprindelige tekst.
Sjældent; kun når du skal bevare nøglerækkefølge eller eksakt whitespace.
XML-tekst.
Ældre integrationer, der kræver XML.
Et kompileret udtryk til at navigere i JSON-data.
Filtrering i jsonb med jsonb_path_query og SQL/JSON-operatorerne.
Netværk og søgning
En IPv4- eller IPv6-værtsadresse.
Lagring af klient- eller server-IP'er.
En IP-netværksblok, såsom 10.0.0.0/24.
Firewallregler og subnetområder.
En 6- eller 8-byte (EUI-64) MAC-adresse.
Identifikatorer til enheder og netværksgrænseflader.
Forbehandlet tekst til fuldtekstsøgning.
Postgres' indbyggede søgning, før du griber til en separat søgemaskine.
Søgetermer kombineret med AND-, OR- og præfiksoperatorer.
Forespørgselshalvdelen af fuldtekstsøgning, matchet mod en tsvector med @@.
En position i write-ahead-loggen, logsekvensnummeret.
Replikeringsforsinkelse og backup-overvågning.
Sammensat og avanceret
Et array af enhver basistype, fx integer[].
Lister af simple værdier; brug en undertabel, når elementer skal have egne kolonner.
En værdi fra en fast liste, du definerer.
Statusfelter med et stabilt sæt muligheder.
En egen rækketype af flere felter.
Gentagne feltgrupper delt på tværs af tabeller.
Et sammenhængende interval mellem to grænser.
Tidsplaner, prisbånd og versionsperioder, med overlapningsoperatorer.
En basistype pakket ind i begrænsninger, du definerer.
Genanvendelige regler såsom en ikke-tom e-mail, håndhævet i hver kolonne, der bruger den.
En unavngiven række af typede værdier.
Returværdier fra PL/pgSQL-funktioner og mellemresultater af forespørgsler.
Indbyggede todimensionelle geometriske værdier.
Simpel plangeometri; virkelige steder kræver PostGIS.
Et usigneret 4-byte systemobjekt-id.
Joins mod systemkataloger; ikke til applikationskolonner.
En intern identifikatorstreng på 63 tegn.
Katalogforespørgsler; almindelig text til alt brugervendt.
Udvidelsestyper
Nøgle/værdi-strengpar i én enkelt værdi (udvidelse).
Flade maps; jsonb dækker det bedre i dag.
En hierarkisk etiketsti såsom news.tech.ai (udvidelse).
Træer med forfader- og efterkommerforespørgsler.
Tekst, der sammenligner uden hensyn til store og små bogstaver (udvidelse).
Unikhed uden forskel på store og små bogstaver, såsom e-mails, uden lower()-indeks.
Geografiske og geometriske objekter fra PostGIS-udvidelsen.
Afstands-, indeholdelses- og rumlige indeksforespørgsler.
Udvidelsesfunktioner, der genererer UUID-værdier.
Ældre generering; siden PG 13 er gen_random_uuid() indbygget.