PostgreSQL Datentypen: Numerisch, Zeichen, Byte

โšก Intelligente Zusammenfassung

PostgreSQL Datentypen definieren die Art des Wertes, den jede Spalte speichern kann, und umfassen die Kategorien Zeichen, Zahlen, Binรคrdaten, Datum und Uhrzeit, Boolesche Werte, geometrische Daten, Netzwerkdaten, UUIDs, XML und JSON. PostgreSQL Mit dem Befehl CREATE TYPE kรถnnen Benutzer auรŸerdem benutzerdefinierte Typen erstellen.

  • ๐Ÿ”ค Charaktertypen: CHAR, VARCHAR und TEXT speichern Textwerte fester Lรคnge, variabler Lรคnge bzw. unbegrenzter Lรคnge.
  • ๐Ÿ”ข Numerische Typen: Ganze Zahlen und Gleitkommazahlen reichen von smallint bis bigint, plus exakte numerische und Dezimalwerte.
  • ๐Ÿ•’ Datum und Uhrzeit: Die Datentypen Zeitstempel, Datum, Uhrzeit und Intervall bieten Mikrosekundenprรคzision mit optionalen Zeitzonen.
  • โœ… Boolesche Werte und Aufzรคhlungen: Boolesche Werte speichern wahr, falsch oder null, wรคhrend Aufzรคhlungstypen selten verรคnderliche, feste Mengen modellieren.
  • ๐ŸŒ Spezialisierte Typen: Netzwerk-, geometrische, UUID-, XML-, JSON- und JSONB-Adressen verarbeiten Formen, Kennungen und strukturierte Daten.
  • ๐Ÿ’ก Best Practice: Verwenden Sie vorzugsweise TEXT fรผr Zeichenketten und NUMERIC fรผr Zahlen und erstellen Sie benutzerdefinierte Datentypen nur bei Bedarf.

PostgreSQL bietet Benutzern eine Vielzahl nativer Datentypen. Benutzer kรถnnen mithilfe des Befehls CREATE TYPE neue Typen hinzufรผgen. AuรŸerdem werden Abfragen dadurch einfacher und lesbarer.

Datentypen in PostgreSQL

PostgreSQL unterstรผtzt die folgenden Datentypen:

  • Texttypen
  • Numerische Typen
  • Daten und Zeiten
  • XML
  • JSON
  • Boolean
  • Bits
  • Binรคrdaten
  • Netzwerk
  • Arrays
  • Erstellen Sie Ihren Datentyp
  • Zeitlich
  • UUID
  • Spezielle Datentypen zum Speichern einer Netzwerkadresse und geometrischer Daten.

Lass uns lernen PostgreSQL Datentypen im Detail

Zeichendatentypen

PostgreSQL unterstรผtzt Zeichendatentypen zum Speichern von Textwerten. PostgreSQL baut Zeichendatentypen auf der Grundlage derselben internen Strukturen auf. PostgreSQL bietet drei Zeichendatentypen: CHAR(n), VARCHAR(n) und TEXT.

Name Beschreibung
varchar(n) Ermรถglicht die Deklaration variabler Lรคnge mit einem Limit
Char(n) Feste Lรคnge, blank gepolstert
Text Mit diesem Datentyp kรถnnen Sie eine Variable mit unbegrenzter Lรคnge deklarieren

Numerische Datentypen

PostgreSQL unterstรผtzt zwei unterschiedliche Nummerntypen:

  • Ganze Zahlen
  • Gleitkommazahlen
Name GrรถรŸe speichern Abdeckung
smallint 2 bytes -32768 bis + 32767
ganze Zahl 4 bytes -2147483648 bis + 2147483647
bigint 8 bytes -9223372036854775808 um 9223372036854775807
dezimal Variable Wenn Sie es als Dezimalzahl deklariert haben, reicht der Datentyp von 131072 Stellen vor dem Dezimalpunkt bis 16383 Stellen nach dem Dezimalpunkt
numerisch Variable Wenn Sie es als Zahl deklarieren, kรถnnen Sie Zahlen mit bis zu 131072 Stellen vor dem Dezimalpunkt bis 16383 Stellen nach dem Dezimalpunkt einschlieรŸen
echt 4 bytes 6 Dezimalstellen Genauigkeit
doppelt 8 bytes 15 Dezimalstellen Genauigkeit

Binรคre Datentypen

Eine Binรคrzeichenfolge ist eine Folge von Oktetten oder Bytes. Binรคre Postgres-Datentypen werden auf zwei Arten unterteilt.

  • Binรคre Zeichenfolgen ermรถglichen das Speichern von Quoten mit dem Wert Null
  • Nicht druckbare Oktette

Zeichenfolgen erlauben keine Null-Oktette und verbieten auch alle anderen Oktettwerte und -sequenzen, die gemรครŸ den Zeichensatzkodierungsregeln der Datenbank ungรผltig sind.

Name SpeichergrรถรŸe Beschreibung
Byte 1 bis 4 Byte plus die GrรถรŸe der Binรคrzeichenfolge Binรคrzeichenfolge variabler Lรคnge

Netzwerkadresstyp

Viele Anwendungen speichern Netzwerkinformationen wie IP-Adressen von Benutzern oder Sensoren. PostgreSQL verfรผgt รผber drei native Typen, die Ihnen bei der Optimierung der Netzwerkdaten helfen.

Name GrรถรŸe Beschreibung
Apfelwein 7 oder 19 Byte IPv4 und IPv6 Netzwerke
Inet 7 oder 19 Byte IPv4- und IPv6-Hosts und -Netzwerke
macaddr 6 bytes MAC-Adressen

Die Verwendung von Netzwerkadresstypen hat folgende Vorteile

  1. Speicherplatzsparend
  2. รœberprรผfung von Eingabefehlern
  3. Funktionen wie die Datensuche nach Subnetz

Textsuchtyp

PostgreSQL bietet zwei Datentypen, die die Volltextsuche unterstรผtzen. Bei der Volltextsuche wird eine Sammlung von Dokumenten in natรผrlicher Sprache durchsucht, um diejenigen zu finden, die einer Abfrage am besten entsprechen.

  • Tsvector-Textsuche PostgreSQL Variablentypen stellen ein Dokument in einer fรผr die Textsuche optimierten Form dar
  • Bei der Textsuche vom Typ Abfrage werden die Schlรผsselwรถrter gespeichert, nach denen gesucht werden muss

Datums-/Uhrzeitdatentypen

PostgreSQL Der Zeitstempel bietet Mikrosekundengenauigkeit anstelle von Sekundengenauigkeit. Darรผber hinaus haben Sie auch die Mรถglichkeit, mit oder ohne Zeitzone zu speichern. PostgreSQL konvertiert den Zeitstempel mit Zeitzone bei der Eingabe in UTC und speichert ihn.

Die Eingabe von Datum und Uhrzeit wird in verschiedenen Formaten akzeptiert, einschlieรŸlich traditionellem Postgres, ISO 8601. SQL-kompatibel usw.

PostgreSQL Unterstรผtzt die Reihenfolge nach Tag, Monat und Jahr. Unterstรผtzte Formate sind DMY, MDY, YMD

Zeitliche Datentypen

Name GrรถรŸe Abdeckung Auflรถsung
Zeitstempel ohne Zeitzone 8 bytes 4713 v. Chr. bis 294276 n. Chr 1 Mikrosekunde/14 Ziffern
Zeitstempel mit Zeitzone 8 bytes 4713 v. Chr. bis 294276 n. Chr 1 Mikrosekunde/14 Ziffern
Datum 4 bytes 4713 v. Chr. bis 294276 n. Chr Eines Tages
Zeit ohne Zeitzone 8 bytes 00:00:00 to 24:00:00 1 Mikrosekunde/14 Ziffern
Zeit mit Zeitzone 12 bytes 00:00:00 + 1459 bis 24:00:00-1459 1 Mikrosekunde/14 Ziffern
Intervall 12 bytes -178000000 bis 178000000 Jahre 1 Mikrosekunde/14 Ziffern

Beispiele

Eingang Beschreibung
2025-09-07 ISO 8601, 7. September mit beliebigem Datumsstil (empfohlenes Format)
September 7, 2025 7. September mit beliebigem Datumsstil
9/7/2025 7. September mit MDY, 9. Juli mit DMY
9/7/25 7. September 2025, mit MDY
2025-Sep-7 7. September mit beliebigem Datumsstil
7. September 2018 7. September mit beliebigem Datumsstil
7-Sep-25 7. September 2025, mit YMD
20250907 ISO 8601, 7. September 2025 in jedem Modus
2025.250 Jahr und Tag des Jahres, in diesem Fall der 7. September 2025
J25250 Julianisches Datum

Zeit/Zeit mit Zeitzoneneingabe

Eingang Beschreibung
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11:19 AM Dasselbe wie 11:19
11:19 PM wie 23:19
23: 19-3
23:19-03:00
231900-03
ISO 8601, dasselbe wie 11:19 Uhr EST
23: 19 EST Die als EST angegebene Zeitzone entspricht 11:19 Uhr EST

Boolescher Typ

Ein boolescher Datentyp kann enthalten

  • richtig
  • falsch
  • null

Werte.

Sie verwenden a bool or boolean Schlรผsselwort, um eine Spalte mit dem Datentyp Boolean zu deklarieren.

Wenn Sie Werte in eine boolesche Spalte einfรผgen, konvertiert Postgre Werte wie

  • Ja
  • y
  • 1
  • t
  • was immer dies auch sein sollte.

in 1.

Wรคhrend Werte mรถgen

  • Nein
  • N
  • 0
  • F
  • falsch

werden auf 0 umgerechnet

Bei der Datenauswahl werden die Werte wieder zurรผck in โ€žJaโ€œ, โ€žTrueโ€œ, โ€žYโ€œ usw. umgewandelt.

Geometrische Datentypen

Geometrische Datentypen stellen zweidimensionale rรคumliche Objekte dar. Sie helfen bei der Durchfรผhrung von Operationen wie Rotationen, Skalierungen, Verschiebungen usw.

Name SpeichergrรถรŸe Vertretung Beschreibung
Points 16 bytes Zeigen Sie auf eine Ebene (x, y)
Line 32 bytes Unendliche Linie ((xl.yl).(x2.y2))
Lseg 32 bytes Endliches Liniensegment ((xl.yl).(x2.y2))
Box 32 bytes rechteckig Box ((xl.yl).(x2.y2))
Path 16n + 16n Bytes Pfad schlieรŸen und รถffnen ((xl.yl),โ€ฆ)
Polygon 40 + 16n Bytes Polygon [(xl.yl),โ€ฆ.]
Kreis 24 bytes Kreis <(xy).r> (Mittelpunkt und Radius)

Aufgezรคhlte Typen

Aufgezรคhlt PostgreSQL Der Datentyp ist nรผtzlich, um sich selten รคndernde Informationen wie den Lรคndercode oder die Filial-ID darzustellen. Der Datentyp โ€žEnumeratedโ€œ wird in einer Tabelle mit Fremdschlรผsseln dargestellt, um die Datenintegritรคt sicherzustellen.

Beispiel

Die Haarfarbe ist in einer demografischen Datenbank ziemlich statisch

CREATE TYPE hair_color AS ENUM
('brown','black','red','grey','blond')

Aufgezรคhlte Typen

Bereichstyp

Viele Geschรคftsanwendungen erfordern Daten in Bereichen. Typischerweise werden zwei Spalten (Beispiel: Startdatum, Enddatum) fรผr die Behandlung von Bereichen definiert. Dies ist sowohl ineffizient als auch schwer zu warten.

Postgre hat Bereichstypen wie folgt erstellt

  • int4range โ€“ Anzeigebereich einer Ganzzahl
  • int8range โ€“ Anzeigebereich von bigint
  • Numrange โ€“ Zeigt den numerischen Bereich an
  • tstrange โ€“ Hilft Ihnen, Zeitstempel ohne Zeitzone anzuzeigen
  • seltsam โ€“ Ermรถglicht die Anzeige von Zeitstempeln mit Zeitzone
  • Datumsbereich โ€“ Datumsbereich

UUID-Typ

Eine universell eindeutige Kennung (UUID) ist eine 128-Bit-Zahl, die algorithmisch generiert wird. Es ist รคuรŸerst unwahrscheinlich, dass eine andere Person weltweit mit demselben Algorithmus dieselbe Kennung erzeugt. Daher eignen sich UUIDs ideal fรผr verteilte Systeme, da sie die Eindeutigkeit innerhalb einer Datenbank gewรคhrleisten. Eine UUID besteht aus einer Gruppe von Kleinbuchstaben im Hexadezimalformat, wobei die einzelnen Gruppen durch Bindestriche getrennt sind.

PostgreSQL Es verfรผgt รผber einen nativen UUID-Datentyp, der 16 Byte Speicherplatz belegt. UUID ist ein idealer Datentyp fรผr Primรคrschlรผssel.

Beispiel

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre akzeptiert auch alternative Formen von UUID-Eingaben wie GroรŸbuchstaben, keine Bindestriche, Klammern usw.

XML-Typ

PostgreSQL ermรถglicht das Speichern von XML-Daten in einem Datentyp, ist jedoch nichts anderes als eine Erweiterung eines Textdatentyps. Der Vorteil besteht jedoch darin, dass รผberprรผft wird, ob das Eingabe-XML wohlgeformt ist.

Beispiel

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

JSON-Typ

Zum Speichern von JSON-Daten PostgreSQL bietet 2 Datentypen

  1. JSON
  2. JSONB
JSON Jsonb
Eine einfache Erweiterung eines Textdatentyps mit JSON-Validierung Eine binรคre Darstellung der JSON-Daten
Das Einfรผgen ist schnell, der Datenabruf jedoch relativ langsam. Einfรผgen ist langsam, aber Auswahl (Datenabruf ist schnell)
Speichert eingegebene Daten genau so, wie sie sind, einschlieรŸlich Leerzeichen. Unterstรผtzt die Indizierung. Optimiert mรถglicherweise den Leerraum, um den Abruf zu beschleunigen.
Wiederaufbereitung beim Datenabruf Beim Datenabruf ist keine erneute Verarbeitung erforderlich

Der am weitesten verbreitete JSON-Datentyp verwendet uns jsonb, es sei denn, es besteht ein besonderer Bedarf fรผr die Verwendung des JSON-Datentyps.

Beispiel

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}');

Pseudotypen

PostgreSQL verfรผgt รผber viele Spezialeintrรคge, die Pseudotypen genannt werden. Sie kรถnnen keine Pseudotypen als verwenden PostgreSQL Spaltentypen. Sie werden verwendet, um das Argument oder den Rรผckgabetyp einer Funktion zu deklarieren.

Jeder der verfรผgbaren Pseudotypen ist in Situationen hilfreich, in denen die Verhaltensdokumente einer Funktion nicht einfach der รœbernahme oder Rรผckgabe eines bestimmten Werts entsprechen SQL-Datentyp.

Name Beschreibung
Jedes Die Funktion akzeptiert alle Eingabedatentypen.
Eine Anordnung Die Funktion akzeptiert jeden Array-Datentyp.
Beliebiges Element Die Funktion akzeptiert jeden Datentyp.
Jede Aufzรคhlung Die Funktion akzeptiert jeden Enum-Datentyp.
Nichtarray Die Funktion akzeptiert jeden Nicht-Array-Datentyp.
Cstring Die Funktion akzeptiert eine nullterminierte C-Zeichenfolge oder gibt sie zurรผck.
Intern Interne Funktion akzeptiert oder gibt serverinternen Datentyp zurรผck.
Sprachhandler Es wird als Rรผckgabesprachhandler deklariert.
Rekord Suchen Sie eine Funktion, die einen nicht angegebenen Zeilentyp zurรผckgibt.
Auslรถsen Zur Rรผckgabe des Triggers wird eine Triggerfunktion verwendet.

Es ist wichtig, dass der Benutzer, der diese Funktion verwendet, sicherstellen muss, dass sich die Funktion sicher verhรคlt, wenn ein Pseudotyp als Argumenttyp verwendet wird.

Best Practices bei der Verwendung von Datentypen

  • Verwenden Sie den Datentyp โ€žTextโ€œ, es sei denn, Sie mรถchten die Eingabe einschrรคnken
  • Verwenden Sie niemals โ€žcharโ€œ.
  • Fรผr Ganzzahlen verwenden Sie โ€žintโ€œ. Verwenden Sie โ€žbigintโ€œ nur, wenn Sie wirklich groรŸe Zahlen haben
  • Verwenden Sie fast immer โ€žnumerischโ€œ.
  • Verwenden Sie Float-In PostgreSQL wenn Sie รผber eine IEEE 754-Datenquelle verfรผgen

Hรคufig gestellte Fragen

Numerische Datentypen (Dezimalzahlen) speichern exakte Werte und eignen sich ideal fรผr Geldbetrรคge und prรคzise Berechnungen. Gleitkommazahlen (Real- und Double-Datentypen) speichern Nรคherungswerte und bieten eine hรถhere Verarbeitungsgeschwindigkeit, weisen jedoch kleinere Rundungsfehler auf. Daher sollten sie fรผr exakte Finanzdaten vermieden werden.

Ja. PostgreSQL Ermรถglicht es, in jeder Spalte ein Array eines Basistyps wie integer[] oder text[] zu speichern. Arrays sind nรผtzlich fรผr Wertelisten und kรถnnen in Abfragen durchsucht, indiziert und entschachtelt werden.

Verwenden Sie fรผr Wรคhrungen den numerischen Datentyp, da dieser exakte Dezimalwerte speichert. Vermeiden Sie Gleitkommazahlen, da diese Rundungsfehler verursachen. Es gibt zwar auch einen speziellen Gelddatentyp, dieser ist jedoch fรผr Daten in verschiedenen Wรคhrungen weniger flexibel.

KI kann Ihre Beispieldaten analysieren und geeignete Datentypen empfehlen, z. B. numeric fรผr Geldbetrรคge oder jsonb fรผr flexible Felder. Sie erlรคutert die Abwรคgungen hinsichtlich Speicherplatz, Genauigkeit und Leistung, damit Sie eine fundierte Entscheidung treffen kรถnnen.

Ja. KI kann Datentypen zuordnen von MySQL, Oracleoder SQL Server zu ihren PostgreSQL ร„quivalente und Flag-Fehler, wie z. B. TINYINT oder NVARCHAR, helfenping Sie planen eine reibungslosere Datenbankmigration.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: