PostgreSQL Datentypen: Byte, Numerisch, Zeichen, Binär

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
  • Boolean
  • Zeitlich
  • UUID
  • Feld
  • JSON
  • 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 IPV5-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)
7. September 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, 20225. September XNUMX 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

  • Wahre
  • 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),…)
Vieleck 40 + 16n Bytes Vieleck [(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

Universally Unique Identifieds (UUID) ist eine 128-Bit-Größe, die von einem Algorithmus generiert wird. Es ist sehr unwahrscheinlich, dass dieselbe Kennung von einer anderen Person auf der Welt mit demselben Algorithmus generiert wird. Deshalb sind diese Bezeichner für verteilte Systeme eine ideale Wahl, da sie Eindeutigkeit innerhalb einer einzelnen Datenbank bieten. Eine UUID wird als eine Gruppe kleiner hexadezimaler Ziffern geschrieben, wobei verschiedene Gruppen durch Bindestriche getrennt sind.

PostgreSQL verfügt über einen nativen UUID-Datentyp, der 16 Byte Speicher verbraucht. 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"], "onboareded": 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

Zusammenfassung

  • PostgreSQL bietet Benutzern einen umfangreichen Satz nativer Datentypen
  • PostgreSQL unterstützt Zeichendatentypen zum Speichern von Textwerten
  • PostgreSQL unterstützt zwei verschiedene Arten von Zahlen: 1. Ganzzahlen, 2. Gleitkommazahlen
  • Eine Binärzeichenfolge ist eine Folge von Bytes oder Oktetten
  • PostgreSQL verfügt über einen Netzwerkadresstyp, der Ihnen bei der Optimierung der Speicherung von Netzwerkdaten hilft
  • Textsuche PostgreSQL Datenstrukturen sind so konzipiert, dass sie die Volltextsuche unterstützen
  • Datum/Uhrzeit PSQL-Datentypen ermöglichen Datums- und Uhrzeitinformationen in verschiedenen Formaten
  • Boolesche Postgres-Feldtypen können drei Werte enthalten: 1. Wahr 2. Falsch 3. Null
  • Geometrisch PostgreSQL Datentypen repräsentieren zweidimensionale räumliche Objekte
  • Aufgezählte Datentypen in PostgreSQL ist nützlich, um sich selten ändernde Informationen wie den Ländercode oder die Filial-ID darzustellen
  • Universally Unique Identifieds (UUID) ist eine 128-Bit-Größe, die von einem Algorithmus generiert wird
  • PostgreSQL verfügt über viele Spezialeinträge, die Pseudotypen genannt werden
  • Es empfiehlt sich, den Datentyp „Text“ zu verwenden, es sei denn, Sie möchten die Eingabe einschränken