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
- Speicherplatzsparend
- Überprüfung von Eingabefehlern
- 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')
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
- JSON
- 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