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.

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
- 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) |
| 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')
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
- 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"], "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
