postgresql
Tipi di dati
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.
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