Sök…


Introduktion

PostgreSQL har en rik uppsättning infödda datatyper tillgängliga för användare. Användare kan lägga till nya typer i PostgreSQL med kommandot CREATE TYPE.

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

Numeriska typer

namn Lagringsstorlek Beskrivning Räckvidd
smallint 2 byte småskaligt heltal -32768 till +32767
integer 4 bytes ypical val för heltal -2147483648 till +2147483647
bigint 8 byte stort antal heltal -9223372036854775808 till +9223372036854775807
decimal variabel användarspecificerad precision, exakt upp till 131072 siffror före decimalpunkten; upp till 16383 siffror efter decimalpunkten
numeric variabel användarspecificerad precision, exakt upp till 131072 siffror före decimalpunkten; upp till 16383 siffror efter decimalpunkten
real 4 bytes variabel precision, inexakt 6 decimalers precision
double precision 8 byte variabel precision, inexakt 15 decimalers precision
smallserial 2 byte litet autoinkrementering heltal 1 till 32767
serial 4 bytes autoinkrementering heltal 1 till 2147483647
bigserial 8 byte stort autoinkrement heltal 1 till 9223372036854775807
int4range Område för heltal
int8range Utbud av bigint
numrange Numerisk räckvidd

Datum / tidstyper

namn Lagringsstorlek Beskrivning Lågt värde Högt värde Upplösning
timestamp (utan tidszon) 8 byte både datum och tid (ingen tidszon) 4713 f.Kr. 294276 e.Kr. 1 mikrosekund / 14 siffror
timestamp (med tidszon) 8 byte både datum och tid, med tidszon 4713 f.Kr. 294276 e.Kr. 1 mikrosekund / 14 siffror
date 4 bytes datum (ingen tid på dagen) 4713 f.Kr. 5874897 AD 1 dag
time (utan tidszon) 8 byte tid på dagen (inget datum) 00:00:00 24:00:00 1 mikrosekund / 14 siffror
time (med tidszon) 12 byte bara dagar på dagen, med tidszon 00: 00: 00 + 1459 24: 00: 00-1459 1 mikrosekund / 14 siffror
interval 16 byte tidsintervall -178000000 år 178000000 år 1 mikrosekund / 14 siffror
tsrange intervall av tidsstämpel utan tidszon
tstzrange tidsstämpel med tidszon
daterange datumintervall

Geometriska typer

namn Lagringsstorlek Beskrivning Representation
point 16 byte Peka på ett plan (X, y)
line 32 byte Oändlig linje {A, B, C}
lseg 32 byte Finite linjesegment ((X1, y1), (x2, y2))
box 32 byte Rektangulär låda ((X1, y1), (x2, y2))
path 16 + 16n byte Stängd väg (liknande polygon) ((X1, y1), ...)
path 16 + 16n byte Öppen väg [(X1, y1), ...]
polygon 40 + 16n byte Polygon (liknande stängd väg) ((X1, y1), ...)
circle 24 byte Cirkel <(x, y), r> (mittpunkt och radie)

Nätverksadresstyper

namn Lagringsstorlek Beskrivning
cidr 7 eller 19 byte IPv4- och IPv6-nätverk
inet 7 eller 19 byte IPv4- och IPv6-värdar och nätverk
macaddr 6 byte MAC-adresser

Karaktärstyper

namn Beskrivning
character varying(n) , varchar(n) variabel längd med gräns
character(n) , char(n) fast längd, tom vadderad
text variabel obegränsad längd

arrayer

I PostgreSQL kan du skapa matriser av alla inbyggda, användardefinierade eller enum-typer. Som standard finns det ingen gräns för en matris, men du kan ange den.

Förklara en array

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

Skapa en matris

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

Åtkomst till en matris

Som standard använder PostgreSQL en en-baserad numreringskonvention för matriser, det vill säga en matris med n-element börjar med array[1] och slutar med 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)

Få information om en matris

--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-funktioner

kommer läggas till



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow