postgresql
Types de données
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.
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