Suche…


Einführung

PostgreSQL verfügt über eine Vielzahl an systemeigenen Datentypen, die den Benutzern zur Verfügung stehen. Benutzer können mit dem Befehl CREATE TYPE neue Typen zu PostgreSQL hinzufügen.

https://www.postgresql.org/docs/9.6/static/datatype.html

Numerische Typen

Name Speichergröße Beschreibung Angebot
smallint 2 Bytes Ganzzahl mit kleinem Bereich -32768 bis +32767
integer 4 Bytes ypical Wahl für Ganzzahl -2147483648 bis +2147483647
bigint 8 Bytes Large Range Integer -9223372036854775808 bis +9223372036854775807
decimal Variable benutzerspezifizierte Genauigkeit, genau bis zu 131072 Stellen vor dem Dezimalpunkt; bis zu 16383 Nachkommastellen
numeric Variable benutzerspezifizierte Genauigkeit, genau bis zu 131072 Stellen vor dem Dezimalpunkt; bis zu 16383 Nachkommastellen
real 4 Bytes variable Genauigkeit, ungenau 6 Dezimalstellen Genauigkeit
double precision 8 Bytes variable Genauigkeit, ungenau 15 Dezimalstellen Genauigkeit
smallserial 2 Bytes kleine Ganzzahl mit automatischer Inkrementierung 1 bis 32767
serial 4 Bytes Autoincrementing-Ganzzahl 1 bis 2147483647
bigserial 8 Bytes große autoincrementing-Ganzzahl 1 bis 9223372036854775807
int4range Bereich der ganzen Zahl
int8range Bereich von bigint
numrange Bereich der numerischen

Datums- / Zeittypen

Name Speichergröße Beschreibung Niedriger Wert Hochwertig Auflösung
timestamp (ohne Zeitzone) 8 Bytes Datum und Uhrzeit (keine Zeitzone) 4713 v 294276 n. Chr 1 Mikrosekunde / 14 Ziffern
timestamp (mit Zeitzone) 8 Bytes sowohl Datum als auch Uhrzeit mit Zeitzone 4713 v 294276 n. Chr 1 Mikrosekunde / 14 Ziffern
date 4 Bytes Datum (keine Tageszeit) 4713 v 5874897 n. Chr 1 Tag
time (ohne Zeitzone) 8 Bytes Tageszeit (kein Datum) 00:00:00 24:00:00 1 Mikrosekunde / 14 Ziffern
time (mit Zeitzone) 12 Bytes Nur Tageszeiten mit Zeitzone 00: 00: 00 + 1459 24: 00: 00-1459 1 Mikrosekunde / 14 Ziffern
interval 16 Bytes Zeitintervall -178000000 Jahre 178000000 Jahre 1 Mikrosekunde / 14 Ziffern
tsrange Zeitstempelbereich ohne Zeitzone
tstzrange Zeitstempelbereich mit Zeitzone
daterange Datumsbereich

Geometrische Typen

Name Speichergröße Beschreibung Darstellung
point 16 Bytes Zeigen Sie auf eine Ebene (x, y)
line 32 Bytes Unendliche Linie {ABC}
lseg 32 Bytes Endliches Liniensegment ((x1, y1), (x2, y2))
box 32 Bytes Rechteckige Box ((x1, y1), (x2, y2))
path 16 + 16n Bytes Geschlossener Pfad (ähnlich wie Polygon) ((x1, y1), ...)
path 16 + 16n Bytes Pfad öffnen [(x1, y1), ...]
polygon 40 + 16n Bytes Polygon (ähnlich wie geschlossener Pfad) ((x1, y1), ...)
circle 24 Bytes Kreis <(x, y), r> (Mittelpunkt und Radius)

Typen der Netzwerkadressen

Name Speichergröße Beschreibung
cidr 7 oder 19 Bytes IPv4- und IPv6-Netzwerke
inet 7 oder 19 Bytes IPv4- und IPv6-Hosts und -Netzwerke
macaddr 6 Bytes MAC-Adressen

Zeichentypen

Name Beschreibung
character varying(n) , varchar(n) variable Länge mit Limit
character(n) , character(n) char(n) Feste Länge, leer aufgefüllt
text variable unbegrenzte Länge

Arrays

In PostgreSQL können Sie Arrays aller integrierten, benutzerdefinierten oder Aufzählungstypen erstellen. Standardmäßig gibt es keine Begrenzung für ein Array, Sie können es jedoch angeben.

Ein Array deklarieren

SELECT integer[];
SELECT integer[3];
SELECT integer[][];
SELECT integer[3][3];
SELECT integer ARRAY;
SELECT integer ARRAY[3];

Array erstellen

SELECT '{0,1,2}';
SELECT '{{0,1},{1,2}}';
SELECT ARRAY[0,1,2];
SELECT ARRAY[ARRAY[0,1],ARRAY[1,2]];

Zugriff auf ein Array

Standardmäßig verwendet PostgreSQL eine Ein-Nummerierungs-Konvention für Arrays, dh ein Array von n Elementen beginnt mit array[1] und endet mit array[n] .

--accesing a spefific element
WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT int_arr[1] FROM arr;

int_arr
---------
        0
(1 row)

--sclicing an array
WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT int_arr[1:2] FROM arr;

int_arr
---------
    {0,1}
(1 row)

Informationen zu einem Array abrufen

--array dimensions (as text)
with arr as (select ARRAY[0,1,2] int_arr) select array_dims(int_arr) from arr;

array_dims
------------
       [1:3]
(1 row)

--length of an array dimension
 WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT array_length(int_arr,1) FROM arr;

 array_length
 --------------
              3
 (1 row)

--total number of elements across all dimensions
 WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT cardinality(int_arr) FROM arr;
 
 cardinality
 -------------
             3
 (1 row)

Array-Funktionen

wird hinzugefügt werden



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow