Présentation
PostgreSQL est un système de gestion de base de données relationnelle open source connu pour sa robustesse et son extensibilité. Cela signifie également que PostgreSQL offre une variété de types de données pour les utilisateurs.
Dans ce didacticiel, nous couvrirons les différents types de données intégrés disponibles dans PostgreSQL.

Types de données PostgreSQL
Lors de la création d'une table dans PostgreSQL, vous pouvez spécifier un type de données pour chaque colonne. PostgreSQL prend en charge une large gamme de types de données intégrés :
Personnage
PostgreSQL utilise des types de données de caractères pour stocker des valeurs de texte. Il existe trois types de données de caractères dans PostgreSQL :
Nom | Description |
caractère(n), caractère(n) | Chaînes de longueur fixe, où n est le nombre de caractères. Espace vide rempli à droite égal à n . |
caractère variable(n), varchar(n) | Chaîne de longueur variable avec une limite de caractères, où n est le nombre de caractères. |
texte | Chaîne de longueur variable et illimitée. |
Types numériques
Types de données numériques inclure :
- Entiers de deux, quatre et huit octets
- Nombres à virgule flottante de quatre et huit octets
- Décimales sélectionnables :
Nom | Taille de stockage | Description | Plage |
smallint | 2 octets | Entier de petite plage. | -32768 à +32767 |
entier | 4 octets | Entier moyen. | -2147483648 à +2147483647 |
bigint | 8 octets | Entier large. | -9223372036854775808 à 9223372036854775807 |
décimal | variable | Décimale de précision spécifiée par l'utilisateur. | Jusqu'à 131072 chiffres avant la virgule décimale. Jusqu'à 16383 chiffres après la virgule |
numérique | variable | Décimale de précision spécifiée par l'utilisateur. | jusqu'à 131072 chiffres avant la virgule décimale. Jusqu'à 16383 chiffres après la virgule |
réel | 4 octets | Décimale à précision variable. | Précision à 6 chiffres décimaux |
double précision | 8 octets | Décimale à précision variable. | Précision de 15 chiffres décimaux |
petite série | 2 octets | Petit entier auto-incrémenté. | 1 à 32767 |
série | 4 octets | Entier auto-incrémenté moyen. | 1 à 2147483647 |
grande série | 8 octets | Grand entier auto-incrémenté. | 1 à 9223372036854775807 |
Monétaire
Le type de données monétaires stocke une somme d'argent numérique avec une précision fractionnaire fixe. Ce type stocke jusqu'à 8 octets de données avec une plage de -92233720368547758.08 à +92233720368547758.07 et utilise numérique , entier , et bigint types de données en tant que valeurs.
Date/Heure
PostgreSQL prend en charge tous les types de données de date et d'heure SQL standard , avec une résolution de 1 microseconde ou 14 chiffres. La date est la seule exception, avec une résolution d'un jour, compté selon le calendrier grégorien :
Nom | Taille de stockage | Description | Plage |
horodatage | 8 octets | Date et heure, sans fuseau horaire. | 4713 avant JC à 294276 après JC |
horodatagez | 8 octets | Date et heure, avec fuseau horaire. | 4713 avant JC à 294276 après JC |
date | 4 octets | Date. | 4713 avant JC à 294276 après JC |
heure sans fuseau horaire | 8 octets | Heure de la journée, sans fuseau horaire. | 00:00:00 à 24:00:00 |
heure avec fuseau horaire | 12 octets | Heure de la journée, avec fuseau horaire. | 00:00:00 + 1459 à 24:00:00-1459 |
intervalle | 12 octets | Intervalle de temps. | -178000000 à 178000000 ans |
Binaire
PostgreSQL peut enregistrer des chaînes binaires de longueur variable en tant que type de données bytea , prenant 1 ou 4 octets plus la taille de la chaîne binaire réelle.
Booléen
Un type de données booléen est déclaré en utilisant bool
ou boolean
mots clés. Il peut contenir vrai (1) , faux (0) , ou inconnu (null) valeurs.
Énuméré
Types de données énumérées consistent en un ensemble statique et ordonné de valeurs, telles que des nombres de 1 à 10 ou des mois de l'année. Contrairement aux autres types de données, vous pouvez créer des types énumérés à l'aide du create type
commande :
CREATE TYPE year AS ENUM ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
Chaîne de bits
Type de chaîne de bits stocke des chaînes de 1 et de 0, utilisées pour stocker ou visualiser les masques de bits :
Nom | Description |
bit(n) | Stocke une chaîne de bits avec une longueur fixe de n caractères. |
variant(n) | Stocke une chaîne de bits d'une longueur variable, jusqu'à n caractères. |
UUID
Un UUID (Universally Unique Identifiers) est un ensemble de 32 chiffres créé par un algorithme. Il se compose de plusieurs groupes de quatre, huit et douze chiffres, séparés par des tirets :

Adresse réseau
PostgreSQL utilise des types de données d'adresse réseau pour stocker les adresses IPv4, IPv6 et MAC :
Nom | Taille de stockage | Description |
cidr | 7 ou 19 octets | Stocke les réseaux IPv4 et IPv6. |
inet | 7 ou 19 octets | Stocke les hôtes et les réseaux IPv4 et IPv6. |
macaddr | 6 octets | Stocke les adresses MAC. |
L'utilisation de types de données d'adresse réseau présente plusieurs avantages par rapport à l'utilisation de texte brut. Cela inclut l'économie d'espace de stockage, des fonctions et commandes spécialisées et une vérification plus facile des erreurs.
Recherche textuelle
Type de données de recherche textuelle permet de rechercher la meilleure correspondance dans une collection de documents en langage naturel :
Nom | Description |
tsvector | Représente un document optimisé pour la recherche de texte, avec une liste de mots distincts normalisés pour fusionner différentes variantes du même mot (lexèmes). |
tsquery | Stocke les mots-clés qui doivent être recherchés et les combine à l'aide d'opérateurs booléens (AND, OR et NOT). |
Géométrique
Types de données géométriques représentent des objets spatiaux rendus en deux dimensions, tels que des points, des lignes et des polygones :
Nom | Taille de stockage | Représentation | Description numérique |
point | 16 octets | Point sur un plan. | (x,y) |
ligne | 32 octets | Ligne infinie. | ((x1,y1),(x2,y2)) |
lseg | 32 octets | Segment de droite fini. | ((x1,y1),(x2,y2)) |
boîte | 32 octets | Boîte rectangulaire. | ((x1,y1),(x2,y2)) |
chemin | 16+16n octets | Chemin ouvert ou fermé. | ((x1,y1),...(xn,yn)) |
polygone | 40+16n octets | Polygone. | ((x1,y1),...(xn,yn)) |
cercle | 24 octets | Cercle. | ((x,y),r) (centre et rayon) |
XML
PostgreSQL vous permet d'enregistrer des données XML en tant que type de données XML en utilisant le XMLPARSE
fonction :
XMLPARSE (DOCUMENT [document name] WELLFORMED)
ou :
XMLPARSE (CONTENT [XML content] WELLFORMED)
Où :
[document name]
:Un document XML à racine unique.[XML content]
:valeur XML valideWELLFORMED
:Cette option garantit que [nom du document] ou [contenu XML] sera résolu en un document XML bien formé. Utilisez-le uniquement lorsque vous ne voulez pas que la base de données vérifie si l'entrée est bien formée.
JSON
PostgreSQL propose deux types de données JSON :
- json : Une extension du type de données texte avec validation JSON. Ce type de données enregistre les données exactement telles qu'elles sont (y compris les espaces). Vous pouvez l'insérer rapidement dans la base de données, mais sa récupération est relativement lente en raison du retraitement.
- jsonb : Représente les données JSON dans un format binaire. Plus lent à insérer dans la base de données, mais la prise en charge de l'indexation et l'absence de retraitement accélèrent considérablement la récupération.

Tableau
Le type de données tableau vous permet de définir une colonne d'une table en tant que tableau multidimensionnel pouvant utiliser n'importe quel type de données de base, énuméré ou composite. Vous pouvez déclarer, modifier et rechercher des tableaux comme vous le feriez pour n'importe quelle autre colonne de la base de données.
Composé
Types de données composites permettent d'utiliser une ligne ou un enregistrement d'une table comme élément de données. Semblable aux types de données de tableau, vous pouvez également déclarer, rechercher et modifier des valeurs composites.
Plage
Types de données de plage utiliser des plages discrètes ou continues d'autres types de données. Les types de données de plage intégrés incluent :
Nom | Description |
int4range | Plage d'entiers de taille moyenne. |
int8range | Plage de grands nombres entiers. |
numrange | Plage de décimales de précision spécifiées par l'utilisateur. |
étrange | Plage d'heures et de dates sans fuseau horaire. |
tstzrange | Plage d'heures et de dates avec un fuseau horaire. |
plage de dates | Plage de dates. |
Vous pouvez également créer des types de plage personnalisés en utilisant d'autres types de données comme base.
Identifiant d'objet
PostgreSQL utilise des identifiants d'objets comme systèmes de clés primaires lors de l'exécution d'opérations d'entrée et de sortie spécialisées :
Nom | Références | Description |
oid | tout | Identifiant d'objet numérique. |
regproc | pg_proc | Nom de la fonction. |
regprocedure | pg_proc | Fonction avec des types d'arguments. |
register | pg_operator | Nom de l'opérateur. |
régérateur | pg_operator | Opérateur avec types d'arguments. |
regclass | pg_class | Nom de la relation. |
regtype | pg_type | Nom du type de données. |
regconfig | pg_ts_config | Configuration de la recherche de texte. |
réglementaire | pg_ts_dict | Dictionnaire de recherche de texte. |
Pseudo-types
Les pseudo-types sont une collection d'entrées spéciales pour déclarer l'argument ou le type de résultat d'une fonction :
Nom | Description |
tout | La fonction accepte n'importe quel type de données d'entrée. |
n'importe quel élément | La fonction accepte n'importe quel type de données. |
n'importe quel tableau | La fonction accepte n'importe quel type de données de tableau. |
anynonarray | La fonction accepte tout type de données non tableau. |
numéro | La fonction accepte tous les types de données énumérés. |
n'importe où | La fonction accepte n'importe quel type de données de plage. |
cstring | La fonction accepte ou renvoie une chaîne C terminée par un caractère nul. |
interne | La fonction accepte ou renvoie le type de données interne au serveur. |
language_handler | La fonction renvoie le gestionnaire de langue. |
fdw_handler | Un gestionnaire d'encapsuleur de données distantes renvoie fdw_handler. |
enregistrement | Recherche une fonction qui renvoie un type de ligne non spécifié. |
déclencheur | Une fonction déclencheur renvoie un déclencheur. |
annuler | La fonction ne renvoie aucune valeur. |