Recherche…


Introduction

PostgreSQL dispose d'un riche ensemble de types de données natifs à la disposition des utilisateurs. Les utilisateurs peuvent ajouter de nouveaux types à PostgreSQL en utilisant la commande CREATE TYPE.

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

Types numériques

prénom Taille de stockage La description Gamme
smallint 2 octets entier à petite portée -32768 à +32767
integer 4 octets choix ypical pour entier -2147483648 à +2147483647
bigint 8 octets entier à grande portée -9223372036854775808 à +9223372036854775807
decimal variable précision spécifiée par l'utilisateur, exacte jusqu'à 131072 chiffres avant le point décimal; jusqu'à 16383 chiffres après le point décimal
numeric variable précision spécifiée par l'utilisateur, exacte jusqu'à 131072 chiffres avant le point décimal; jusqu'à 16383 chiffres après le point décimal
real 4 octets précision variable, inexacte Précision de 6 chiffres décimaux
double precision 8 octets précision variable, inexacte Précision de 15 chiffres décimaux
smallserial 2 octets petit entier auto-incrémentant 1 à 32767
serial 4 octets entier auto-incrémentant 1 à 2147483647
bigserial 8 octets grand entier auto-incrémentant 1 à 9223372036854775807
int4range Gamme d'entier
int8range Gamme de bigint
numrange Gamme de numérique

Types date / heure

prénom Taille de stockage La description Valeur faible Haute valeur Résolution
timestamp (sans fuseau horaire) 8 octets la date et l'heure (pas de fuseau horaire) 4713 avant JC 294276 AD 1 microseconde / 14 chiffres
timestamp (avec fuseau horaire) 8 octets à la fois la date et l'heure, avec le fuseau horaire 4713 avant JC 294276 AD 1 microseconde / 14 chiffres
date 4 octets date (pas d'heure de la journée) 4713 avant JC 5874897 AD Un jour
time (sans fuseau horaire) 8 octets heure du jour (pas de date) 00:00:00 24:00:00 1 microseconde / 14 chiffres
time (avec fuseau horaire) 12 octets temps de la journée seulement, avec fuseau horaire 00: 00: 00 + 1459 24h00: 00-1459 1 microseconde / 14 chiffres
interval 16 octets intervalle de temps -178000000 ans 178000000 ans 1 microseconde / 14 chiffres
tsrange plage d'horodatage sans fuseau horaire
tstzrange plage d'horodatage avec fuseau horaire
daterange gamme de date

Types géométriques

prénom Taille de stockage La description Représentation
point 16 octets Point sur un avion (x, y)
line 32 octets Ligne infinie {ABC}
lseg 32 octets Segment de ligne fini ((x1, y1), (x2, y2))
box 32 octets Boîte rectangulaire ((x1, y1), (x2, y2))
path 16 + 16n octets Chemin fermé (similaire au polygone) ((x1, y1), ...)
path 16 + 16n octets Chemin ouvert [(x1, y1), ...]
polygon 40 + 16n octets Polygone (similaire au chemin fermé) ((x1, y1), ...)
circle 24 octets Cercle <(x, y), r> (centre et rayon)

Types d'adresse réseau

prénom Taille de stockage La description
cidr 7 ou 19 octets Réseaux IPv4 et IPv6
inet 7 ou 19 octets Hôtes et réseaux IPv4 et IPv6
macaddr 6 octets Adresses MAC

Types de caractères

prénom La description
character varying(n) , varchar(n) longueur variable avec limite
character(n) , caractère char(n) longueur fixe, matelassé
text longueur illimitée variable

Tableaux

Dans PostgreSQL, vous pouvez créer des tableaux de tout type intégré, défini par l'utilisateur ou enum. Par défaut, il n'y a pas de limite à un tableau, mais vous pouvez le spécifier.

Déclarer un tableau

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

Créer un tableau

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

Accéder à un tableau

Par défaut, PostgreSQL utilise une convention de numérotation à base unique pour les tableaux, c'est-à-dire qu'un tableau de n éléments commence par array[1] et se termine par 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)

Obtenir des informations sur un tableau

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

Fonctions de tableau

sera ajouté



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow