PostgreSQL-Datentypen: Zeichen - Numerisch - Binär - Boolescher Wert

Inhaltsverzeichnis:

Anonim

PostgreSQL bietet eine Vielzahl nativer Datentypen für Benutzer. Benutzer können mithilfe des Befehls CREATE TYPE neue Typen hinzufügen. Außerdem werden Abfragen einfacher und lesbarer.

Datentypen in PostgreSQL

PostgreSQL unterstützt die folgenden Datentypen:

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

Lassen Sie uns die PostgreSQL-Datentypen im Detail untersuchen

  • Zeichendatentypen
  • Numerische Datentypen
  • Binäre Datentypen
  • Netzwerkadressentyp
  • Textsuchtyp
  • Datums- / Uhrzeit-Datentypen
  • Boolescher Typ
  • Geometrische Datentypen
  • Aufgezählte Typen
  • Bereichstyp
  • UUID-Typ
  • XML-Typ
  • JSON-Typ
  • Pseudo-Typen

Zeichendatentypen

PostgreSQL unterstützt Zeichendatentypen zum Speichern von Textwerten. PostgreSQL erstellt Zeichendatentypen aus denselben internen Strukturen. PostgreSQL bietet drei Zeichendatentypen: CHAR (n), VARCHAR (n) und TEXT.

Name Beschreibung
varchar (n) Ermöglicht das Deklarieren einer variablen Länge mit einem Limit
Char (n) Feste Länge, blank gepolstert
Text Use kann diesen Datentyp verwenden, um eine Variable mit unbegrenzter Länge zu deklarieren

Numerische Datentypen

PostgreSQL unterstützt zwei verschiedene Arten von Zahlen:

  • Ganzzahlen
  • Gleitkommazahlen
Name Ladengröße Reichweite
smallint 2 Bytes -32768 bis +32767
ganze Zahl 4 Bytes -2147483648 bis +2147483647
Bigint 8 Bytes -9223372036854775808 bis 9223372036854775807
Dezimal Variable Wenn Sie es als dezimalen Datentyp deklariert haben, reicht der Bereich von 131072 Stellen vor dem Dezimalpunkt bis 16383 Stellen nach dem Dezimalpunkt
numerisch Variable Wenn Sie es als Zahl deklarieren, können Sie eine Zahl mit bis zu 131072 Stellen vor dem Dezimalpunkt und bis zu 16383 Stellen nach dem Dezimalpunkt angeben
echt 4 Bytes Genauigkeit von 6 Dezimalstellen
doppelt 8 Bytes Genauigkeit von 15 Dezimalstellen

Binäre Datentypen

Eine binäre Zeichenfolge 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

Zeichenketten lassen keine Null-Oktette zu und erlauben auch keine anderen Oktettwerte und -sequenzen, die gemäß den Zeichensatz-Codierungsregeln der Datenbank ungültig sind.

Name Speichergröße Beschreibung
Byte 1 bis 4 Bytes plus die Größe der Binärzeichenfolge Binäre Zeichenfolge mit variabler Länge

Netzwerkadressentyp

Viele Anwendungen speichern Netzwerkinformationen wie die IP-Adresse von Benutzern oder

Sensoren. PostgreSQL verfügt über drei native Typen, mit denen Sie die Netzwerkdaten optimieren können.

Name Größe Beschreibung
Apfelwein 7 oder 19 Byes IPV4- und IPv6-Netzwerke
Inet 7 oder 19 Bytes IPV4- und IPV5-Host und -Netzwerke
macaddr 6 Bytes MAC-Adressen

Die Verwendung von Netzwerkadressentypen bietet folgende Vorteile

  1. Speicherplatz sparen
  2. Eingabefehlerprüfung
  3. Funktionen wie das Suchen von Daten 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 suchen, die am besten zu einer Abfrage passen.

  • Tsvector-Textsuche PostgreSQL-Variablentypen repräsentieren ein Dokument in einer für die Textsuche optimierten Form
  • Die Textsuche vom Abfragetyp speichert die Schlüsselwörter, die gesucht werden müssen

Datums- / Uhrzeit-Datentypen

Der PostgreSQL-Zeitstempel bietet eine Genauigkeit von Mikrosekunden anstelle einer Genauigkeit von Sekunden. Darüber hinaus haben Sie auch die Möglichkeit, mit oder ohne Zeitzone zu speichern. PostgreSQL konvertiert den Zeitstempel mit der Zeitzone bei der Eingabe in UTC und speichert ihn.

Die Eingabe von Datum und Uhrzeit wird in verschiedenen Formaten akzeptiert, einschließlich herkömmlicher Postgres, ISO 8601. SQL-kompatibel usw.

PostgreSQL unterstützt die Bestellung von Tag / Monat / Jahr. Unterstützte Formate sind DMY, MDY, YMD

Zeitliche Datentypen

Name Größe Reichweite Auflösung
Zeitstempel ohne Zeitzone 8 Bytes 4713 v. Chr. Bis 294276 n. Chr 1 Mikrosekunde / 14 Stellen
Zeitstempel mit Zeitzone 8 Bytes 4713 v. Chr. Bis 294276 n. Chr 1 Mikrosekunde / 14 Stellen
Datum 4 Bytes 4713 v. Chr. Bis 294276 n. Chr Ein Tag
Zeit ohne Zeitzone 8 Bytes 00:00:00 bis 24:00:00 1 Mikrosekunde / 14 Stellen
Zeit mit Zeitzone 12 Bytes 00:00:00 + 1459 bis 24: 00: 00-1459 1 Mikrosekunde / 14 Stellen
Intervall 12 Bytes -178000000 bis 178000000 Jahre 1 Mikrosekunde / 14 Stellen

Beispiele:

Eingang Beschreibung
2025-09-07 ISO 8601, 7. September mit einem beliebigen Datumsstil (empfohlenes Format)
7. September 2025 7. September mit jedem Datumsstil
07.09.2025 7. September mit MDY, 9. Juli mit DMY
9/7/25 7. September 2025 mit MDY
2025-Sep-7 7. September mit jedem Datumsstil
7. September 2008 7. September mit jedem Datumsstil
7-Sep-25 7. September 2025 mit YMD
20250907 ISO 8601,7 Sep 20225 in einem beliebigen 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 Uhr Gleich wie 11:19
23:19 Uhr das gleiche wie 23:19
23: 19-3 23: 19-03: 00 231900-03 ISO 8601, wie 23:19 EST
23:19 EST Zeitzone als EST angegeben, wie 23:19 EST

Boolescher Typ

Ein boolescher Datentyp kann enthalten sein

  • Wahr
  • Falsch
  • Null

Werte.

Sie verwenden ein bool- oder boolesches Schlüsselwort, um eine Spalte mit dem booleschen Datentyp zu deklarieren.

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

  • Ja
  • y
  • 1
  • t
  • wahr

in 1.

Während Werte wie

  • Nein
  • N.
  • 0
  • F.
  • Falsch

werden in 0 konvertiert

Bei der Auswahl der Daten werden die Werte wieder in yes, true, y usw. konvertiert.

Geometrische Datentypen

Geometrische Datentypen repräsentieren zweidimensionale räumliche Objekte. Sie helfen bei der Ausführung von Vorgängen wie Rotationen, Skalieren, Verschieben usw.

Name Speichergröße Darstellung Beschreibung
Punkt 16 Bytes Zeigen Sie auf ein Flugzeug (x, y)
Linie 32 Bytes Unendliche Linie ((xl.yl). (x2.y2))
Lseg 32 Bytes Endliches Liniensegment ((xl.yl). (x2.y2))
Box 32 Bytes Rechteckige Box ((xl.yl). (x2.y2))
Pfad 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

Der aufgezählte PostgreSQL-Datentyp ist nützlich, um selten sich ändernde Informationen wie Ländercode oder Zweigstellen-ID darzustellen. Der Aufzählungstyp 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')

Bereichstyp

Viele Geschäftsanwendungen erfordern Daten in Bereichen. In der Regel werden zwei Spalten (Beispiel: Startdatum, Enddatum) definiert, um Bereiche zu behandeln. Dies ist sowohl ineffizient als auch schwierig zu warten.

Postgre hat Bereichstypen wie folgt erstellt

  • int4range - Zeigt den Bereich der Ganzzahl an
  • int8range - Anzeigebereich von bigint
  • numrange - Zeigt den numerischen Bereich an
  • tstrange - Hilft Ihnen, Zeitstempel ohne Zeitzone anzuzeigen
  • seltsam - Ermöglicht die Anzeige des Zeitstempels mit der Zeitzone
  • Datumsbereich - Datumsbereich

UUID-Typ

Universally Unique Identifications (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. Aus diesem Grund sind diese Kennungen für verteilte Systeme eine ideale Wahl, da sie die Einzigartigkeit innerhalb einer einzelnen Datenbank bieten. Eine UUID wird als Gruppe von hexadezimalen Kleinbuchstaben geschrieben, wobei verschiedene Gruppen durch Bindestriche getrennt sind.

PostgreSQL hat einen nativen UUID-Datentyp, der 16 Byte Speicherplatz beansprucht. 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, geschweiften Klammern usw.

XML-Typ

Mit PostgreSQL können Sie XML-Daten in einem Datentyp speichern, es ist jedoch nichts anderes als eine Erweiterung eines Textdatentyps. Der Vorteil ist jedoch, dass überprüft wird, ob das Eingabe-XML wohlgeformt ist.

Beispiel:

XMLPARSE (DOCUMENT 'Data Type')

JSON-Typ

Speichern von JSON-Daten PostgreSQL bietet zwei 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. Das Einfügen ist langsam, aber wählen Sie (Datenabruf ist schnell)
Speichert eingegebene Daten genau so, wie sie Leerzeichen enthalten. Unterstützt die Indizierung. Optimiert möglicherweise das Leerzeichen, um das Abrufen zu beschleunigen.
Wiederaufbereitung beim Datenabruf Beim Abrufen der Daten ist keine erneute Verarbeitung erforderlich

Der am häufigsten verwendete JSON-Datentyp verwendet jsonb, es sei denn, es besteht eine spezielle Notwendigkeit, den JSON-Datentyp zu verwenden.

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

Pseudo-Typen

PostgreSQL hat viele spezielle Einträge, die als Pseudotypen bezeichnet werden. Sie können keine Pseudotypen als PostgreSQL-Spaltentypen verwenden. Es werden verwendet, um das Argument oder den Rückgabetyp der Funktion zu deklarieren oder zu funktionieren.

Jeder der verfügbaren Pseudo-Typen ist in Situationen hilfreich, in denen die Verhaltensdokumente einer Funktion nicht dem einfachen Nehmen oder Zurückgeben eines Werts eines bestimmten SQL-Datentyps entsprechen.

Name Beschreibung
Irgendein 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 Aufzählungsdatentyp.
Nonarray Die Funktion akzeptiert alle Nicht-Array-Datentypen.
Cstring Die Funktion akzeptiert oder gibt eine nullterminierte C-Zeichenfolge zurück.
Intern Die interne Funktion akzeptiert oder gibt den serverinternen Datentyp zurück.
Language_handler Es wird deklariert, dass der Language Handler zurückgegeben wird.
Aufzeichnung Suchen Sie eine Funktion, die einen nicht angegebenen Zeilentyp zurückgibt.
Auslösen Eine Triggerfunktion wird verwendet, um den Trigger zurückzugeben.

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 für die Verwendung von Datentypen

  • Verwenden Sie den Datentyp "Text", es sei denn, Sie möchten die Eingabe einschränken
  • Verwenden Sie niemals "char".
  • Ganzzahlen verwenden "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 eine Vielzahl nativer Datentypen für Benutzer
  • PostgreSQL unterstützt Zeichendatentypen zum Speichern von Textwerten
  • PostgreSQL unterstützt zwei verschiedene Arten von Zahlen: 1. Ganzzahlen, 2. Gleitkommazahlen
  • Eine binäre Zeichenfolge ist eine Folge von Bytes oder Oktetten
  • PostgreSQL verfügt über einen Netzwerkadressentyp, mit dem Sie die Speicherung von Netzwerkdaten optimieren können
  • Textsuche PostgreSQL-Datenstrukturen unterstützen die Volltextsuche
  • Datum / Uhrzeit PSQL-Datentypen ermöglichen Datums- und Uhrzeitinformationen in verschiedenen Formaten
  • Boolesche Postgres-Feldtypen können drei Werte enthalten: 1. Richtig 2. Falsch 3. Null
  • Geometrische PostgreSQL-Datentypen repräsentieren zweidimensionale räumliche Objekte
  • Aufgezählte Datentypen in PostgreSQL sind nützlich, um selten wechselnde Informationen wie Ländercode oder Zweigstellen-ID darzustellen
  • Universally Unique Identifications (UUID) ist eine 128-Bit-Größe, die von einem Algorithmus generiert wird
  • PostgreSQL hat viele spezielle Einträge, die als Pseudotypen bezeichnet werden
  • Es wird empfohlen, den Datentyp "Text" zu verwenden, es sei denn, Sie möchten die Eingabe einschränken