Ricerca…


introduzione

PostgreSQL ha un ricco set di tipi di dati nativi disponibili per gli utenti. Gli utenti possono aggiungere nuovi tipi a PostgreSQL usando il comando CREATE TYPE.

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

Tipi numerici

Nome Dimensione di archiviazione Descrizione Gamma
smallint 2 byte numero intero a piccola scala Da -32768 a +32767
integer 4 byte Scelta ypica per intero Da -2147483648 a +2147483647
bigint 8 byte numero intero a grande raggio -9223372036854775808 a +9223372036854775807
decimal variabile precisione specificata dall'utente, esatta fino a 131072 cifre prima del punto decimale; fino a 16383 cifre dopo il punto decimale
numeric variabile precisione specificata dall'utente, esatta fino a 131072 cifre prima del punto decimale; fino a 16383 cifre dopo il punto decimale
real 4 byte precisione variabile, inesatta 6 cifre decimali di precisione
double precision 8 byte precisione variabile, inesatta 15 cifre decimali di precisione
smallserial 2 byte piccolo numero autoincrementante Da 1 a 32767
serial 4 byte intero autoincrementante Da 1 a 2147483647
bigserial 8 byte grande numero autoincrementante Da 1 a 9223372036854775807
int4range Intervallo di numero intero
int8range Gamma di bigint
numrange Intervallo numerico

Tipi di data / ora

Nome Dimensione di archiviazione Descrizione Basso valore Alto valore Risoluzione
timestamp (senza fuso orario) 8 byte sia la data che l'ora (nessun fuso orario) 4713 a 294276 d.C. 1 microsecondo / 14 cifre
timestamp (con fuso orario) 8 byte sia data che ora, con fuso orario 4713 a 294276 d.C. 1 microsecondo / 14 cifre
date 4 byte data (nessuna ora del giorno) 4713 a 5874897 AD 1 giorno
time (senza fuso orario) 8 byte ora del giorno (senza data) 00:00:00 24:00:00 1 microsecondo / 14 cifre
time (con fuso orario) 12 byte solo ora del giorno, con fuso orario 00: 00: 00 + 1459 24: 00: 00-1459 1 microsecondo / 14 cifre
interval 16 byte Intervallo di tempo -178000000 anni 178000000 anni 1 microsecondo / 14 cifre
tsrange intervallo di data e ora senza fuso orario
tstzrange intervallo di data e ora con fuso orario
daterange intervallo di data

Tipi geometrici

Nome Dimensione di archiviazione Descrizione Rappresentazione
point 16 byte Punto su un aereo (X, y)
line 32 byte Linea infinita {A, B, C}
lseg 32 byte Segmento di linea finita ((X1, y1), (x2, y2))
box 32 byte Scatola rettangolare ((X1, y1), (x2, y2))
path 16 + 16n byte Percorso chiuso (simile al poligono) ((X1, y1), ...)
path 16 + 16n byte Percorso aperto [(X1, y1), ...]
polygon 40 + 16n byte Poligono (simile al percorso chiuso) ((X1, y1), ...)
circle 24 byte Cerchio <(x, y), r> (punto centrale e raggio)

Tipi di indirizzo di rete

Nome Dimensione di archiviazione Descrizione
cidr 7 o 19 byte Reti IPv4 e IPv6
inet 7 o 19 byte Host e reti IPv4 e IPv6
macaddr 6 byte Indirizzi MAC

Tipi di caratteri

Nome Descrizione
character varying(n) , varchar(n) lunghezza variabile con limite
character(n) , char(n) lunghezza fissa, imbottito bianco
text lunghezza illimitata variabile

Array

In PostgreSQL puoi creare matrici di qualsiasi tipo built-in, definito dall'utente o enum. Di default non esiste un limite per una matrice, ma è possibile specificarla.

Dichiarazione di una matrice

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

Creare una matrice

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

Accedere a una matrice

Per impostazione predefinita, PostgreSQL utilizza una convenzione di numerazione basata su uno per gli array, ovvero una matrice di n elementi inizia con array[1] e termina con 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)

Ottenere informazioni su un array

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

Funzioni dell'array

sarà aggiunto



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow