Grundlegendes zu PostgreSQL-Datentypen
Wenhao Wang
Dev Intern · Leapcell

Key Takeaways
- PostgreSQL bietet eine breite Palette von Datentypen zur Verarbeitung verschiedener Datenformate.
- Die richtige Auswahl der Datentypen verbessert die Datenbankleistung und -integrität.
- PostgreSQL unterstützt erweiterte Typen wie Arrays, JSON und Bereichstypen für komplexe Datenmodellierung.
PostgreSQL bietet eine umfassende Suite von Datentypen, die es Entwicklern ermöglichen, verschiedene Datenformen effizient zu speichern und zu bearbeiten. Die Auswahl des geeigneten Datentyps ist entscheidend, um die Datenintegrität zu gewährleisten, die Speicherung zu optimieren und die Abfrageleistung zu verbessern. Dieser Artikel befasst sich mit den verschiedenen in PostgreSQL verfügbaren Datentypen und gibt Einblicke in ihre Verwendung und Vorteile.
Numerische Typen
Numerische Typen in PostgreSQL werden verwendet, um Zahlen zu speichern, sowohl ganze Zahlen als auch Gleitkommazahlen.
-
Integer-Typen:
smallint
: 2-Byte-Integer, Bereich von -32.768 bis 32.767.integer
oderint
: 4-Byte-Integer, Bereich von -2.147.483.648 bis 2.147.483.647.bigint
: 8-Byte-Integer, Bereich von -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807.
-
Serielle Typen (auto-inkrementierende Integer):
smallserial
: 2-Byte auto-inkrementierender Integer.serial
: 4-Byte auto-inkrementierender Integer.bigserial
: 8-Byte auto-inkrementierender Integer.
-
Gleitkommatypen:
real
: 4-Byte-Gleitkommazahl mit einfacher Genauigkeit.double precision
: 8-Byte-Gleitkommazahl mit doppelter Genauigkeit.
-
Typen mit beliebiger Genauigkeit:
numeric
oderdecimal
: Benutzerdefinierte Genauigkeit, geeignet für exakte numerische Werte wie Geldbeträge.
Währungstyp
money
: Speichert Geldbeträge mit einer festen Nachkommastellengenauigkeit. Es ist ein 8-Byte-Typ, der für Finanzkalkulationen geeignet ist.
Zeichentypen
Zeichentypen werden verwendet, um Textzeichenketten zu speichern.
char(n)
: Zeichenkette fester Länge, mit Leerzeichen aufgefüllt.varchar(n)
: Zeichenkette variabler Länge mit einer Begrenzung.text
: Zeichenkette variabler Länge ohne spezifische Begrenzung.
Binäre Datentypen
bytea
: Speichert binäre Zeichenketten und ermöglicht die Speicherung von Binärdaten wie Bildern oder Dateien.
Datums-/Uhrzeittypen
PostgreSQL bietet verschiedene Typen für die Handhabung von Datums- und Uhrzeitwerten.
date
: Speichert Kalenderdaten (Jahr, Monat, Tag).time [ (p) ] [ without time zone ]
: Speichert Uhrzeitwerte.time [ (p) ] with time zone
: Speichert Uhrzeitwerte mit Zeitzone.timestamp [ (p) ] [ without time zone ]
: Speichert sowohl Datum als auch Uhrzeit.timestamp [ (p) ] with time zone
: Speichert sowohl Datum als auch Uhrzeit mit Zeitzone.interval
: Stellt eine Zeitspanne dar.
Boolescher Typ
boolean
: Speichert logische Boolesche Werte:true
,false
odernull
.
Aufzählungstypen
Aufzählungstypen (enum
) ermöglichen die Erstellung einer statischen, geordneten Menge von Werten. Nützlich für Spalten, die nur eine bestimmte Menge von Werten enthalten sollen, z. B. Wochentage oder Statuscodes.
Beispiel:
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
Geometrische Typen
PostgreSQL enthält Typen zur Darstellung zweidimensionaler räumlicher Objekte.
point
: Ein geometrisches Zahlenpaar.line
: Unendliche Linie.lseg
: Liniensegment.box
: Rechteckige Box.path
: Geschlossener oder offener Pfad.polygon
: Polygon.circle
: Kreis.
Netzwerkadresstypen
Diese Typen sind für die Speicherung von netzwerkbezogenen Informationen vorgesehen.
cidr
: IPv4- oder IPv6-Netzwerk.inet
: IPv4- oder IPv6-Hostadresse.macaddr
: MAC-Adresse.
Bit-String-Typen
Wird zum Speichern von Bitmasken verwendet.
bit(n)
: Bit-String fester Länge.bit varying(n)
: Bit-String variabler Länge.
Textsuchtypen
PostgreSQL bietet Typen zur Unterstützung von Volltextsuchfunktionen.
tsvector
: Ein Dokument in einer für die Textsuche optimierten Form.tsquery
: Eine Textabfrage.
UUID-Typ
uuid
: Speichert Universally Unique Identifiers, die für Kennungen nützlich sind, die über Raum und Zeit hinweg eindeutig sein müssen.
XML-Typ
xml
: Speichert XML-Daten und ermöglicht die Speicherung und Abfrage von XML-Dokumenten.
JSON-Typen
PostgreSQL bietet eine robuste Unterstützung für JSON-Daten.
json
: Speichert JSON-Daten als Text.jsonb
: Speichert JSON-Daten in einem binären Format, was eine effiziente Verarbeitung und Indizierung ermöglicht.
Arrays
PostgreSQL erlaubt es, Spalten als Arrays eines beliebigen eingebauten oder benutzerdefinierten Basistyps zu definieren.
Beispiel:
CREATE TABLE products ( name text, tags text[] );
Zusammengesetzte Typen
Zusammengesetzte Typen ermöglichen die Erstellung einer Struktur mit mehreren Feldern.
Beispiel:
CREATE TYPE address AS ( street text, city text, zip_code text );
Bereichstypen
Bereichstypen stellen einen Wertebereich eines bestimmten Elementtyps dar.
Eingebaute Bereichstypen umfassen:
int4range
: Bereich von Integer.numrange
: Bereich von Numeric.tsrange
: Bereich von Timestamp ohne Zeitzone.tstzrange
: Bereich von Timestamp mit Zeitzone.daterange
: Bereich von Date.
Domänentypen
Domänen sind Datentypen mit optionalen Einschränkungen. Sie sind nützlich für die Erstellung wiederverwendbarer Einschränkungen.
Beispiel:
CREATE DOMAIN positive_integer AS integer CHECK (VALUE > 0);
Objektbezeichnertypen
oid
: Objektbezeichner, der intern von PostgreSQL zur Identifizierung von Objekten verwendet wird.
Pseudo-Typen
Pseudo-Typen sind Spezialtypen, die angeben, dass eine Funktion keinen Standarddatentyp zurückgibt.
Beispiele umfassen:
any
void
internal
Fazit
Die umfangreiche Auswahl an Datentypen von PostgreSQL bietet die Flexibilität, komplexe Datenstrukturen zu modellieren und die Datenintegrität zu erzwingen. Das Verständnis und die Verwendung der geeigneten Datentypen ist grundlegend für die Entwicklung effizienter und zuverlässiger Datenbanksysteme.
FAQs
smallint
, integer
, bigint
, real
, double precision
und numeric
.
jsonb
speichert JSON in einem binären Format, wodurch es schneller für die Verarbeitung und Indizierung ist.
Ja, mit zusammengesetzten Typen, Aufzählungstypen oder Domänentypen.
Wir sind Leapcell, Ihre erste Wahl für das Hosting von Backend-Projekten.
Leapcell ist die Serverless-Plattform der nächsten Generation für Webhosting, asynchrone Aufgaben und Redis:
Multi-Sprachen-Unterstützung
- Entwickeln Sie mit Node.js, Python, Go oder Rust.
Stellen Sie unbegrenzt Projekte kostenlos bereit
- Zahlen Sie nur für die Nutzung - keine Anfragen, keine Gebühren.
Unschlagbare Kosteneffizienz
- Pay-as-you-go ohne Leerlaufgebühren.
- Beispiel: 25 US-Dollar unterstützen 6,94 Mio. Anfragen bei einer durchschnittlichen Antwortzeit von 60 ms.
Optimierte Entwicklererfahrung
- Intuitive Benutzeroberfläche für mühelose Einrichtung.
- Vollständig automatisierte CI/CD-Pipelines und GitOps-Integration.
- Echtzeitmetriken und Protokollierung für umsetzbare Einblicke.
Mühelose Skalierbarkeit und Hohe Leistung
- Auto-Skalierung zur einfachen Bewältigung hoher Gleichzeitigkeit.
- Null Betriebsaufwand - konzentrieren Sie sich einfach auf den Aufbau.
Erfahren Sie mehr in der Dokumentation!
Folgen Sie uns auf X: @LeapcellHQ