PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 15.9 » Langage SQL » Types de données

Chapitre 8. Types de données

Table des matières

8.1. Types numériques
8.1.1. Types entiers
8.1.2. Nombres à précision arbitraire
8.1.3. Types à virgule flottante
8.1.4. Types seriés
8.2. Types monétaires
8.3. Types caractère
8.4. Types de données binaires
8.4.1. Le format hexadécimal bytea
8.4.2. Le format d'échappement bytea
8.5. Types date/heure
8.5.1. Saisie des dates et heures
8.5.2. Affichage des dates et heures
8.5.3. Fuseaux horaires
8.5.4. Saisie d'intervalle
8.5.5. Affichage d'intervalles
8.6. Type booléen
8.7. Types énumération
8.7.1. Déclaration de types énumérés
8.7.2. Tri
8.7.3. Sûreté du type
8.7.4. Détails d'implémentation
8.8. Types géométriques
8.8.1. Points
8.8.2. Lines
8.8.3. Segments de droite
8.8.4. Boîtes
8.8.5. Chemins
8.8.6. Polygones
8.8.7. Cercles
8.9. Types adresses réseau
8.9.1. inet
8.9.2. cidr
8.9.3. inet vs cidr
8.9.4. macaddr
8.9.5. macaddr8
8.10. Type chaîne de bits
8.11. Types de recherche plein texte
8.11.1. tsvector
8.11.2. tsquery
8.12. Type UUID
8.13. Type XML
8.13.1. Créer des valeurs XML
8.13.2. Gestion de l'encodage
8.13.3. Accéder aux valeurs XML
8.14. Types JSON
8.14.1. Syntaxe d'entrée et de sortie JSON
8.14.2. Concevoir des documents JSON efficacement
8.14.3. Existence et inclusion jsonb
8.14.4. Indexation jsonb
8.14.5. Utiliser l'indiçage avec jsonb
8.14.6. Transformations
8.14.7. Type jsonpath
8.15. Tableaux
8.15.1. Déclaration des types tableaux
8.15.2. Saisie de valeurs de type tableau
8.15.3. Accès aux tableaux
8.15.4. Modification de tableaux
8.15.5. Recherche dans les tableaux
8.15.6. Syntaxe d'entrée et de sortie des tableaux
8.16. Types composites
8.16.1. Déclaration de types composites
8.16.2. Construire des valeurs composites
8.16.3. Accéder aux types composites
8.16.4. Modifier les types composites
8.16.5. Utiliser des types composites dans les requêtes
8.16.6. Syntaxe en entrée et sortie d'un type composite
8.17. Types intervalle de valeurs
8.17.1. Types internes d'intervalle de valeurs range et multirange
8.17.2. Exemples
8.17.3. Bornes inclusives et exclusives
8.17.4. Intervalles de valeurs infinis (sans borne)
8.17.5. Saisie/affichage d'intervalle de valeurs
8.17.6. Construire des intervalles de valeurs ranges et multiranges
8.17.7. Types intervalle de valeurs discrètes
8.17.8. Définir de nouveaux types intervalle de valeurs
8.17.9. Indexation
8.17.10. Contraintes sur les intervalles de valeurs
8.18. Types domaine
8.19. Types identifiant d'objet
8.20. Type pg_lsn
8.21. Pseudo-Types

PostgreSQL offre un large choix de types de données disponibles nativement. Les utilisateurs peuvent ajouter de nouveaux types à PostgreSQL en utilisant la commande CREATE TYPE.

Le Tableau 8.1 montre tous les types de données généraux disponibles nativement. La plupart des types de données alternatifs listés dans la colonne « Alias » sont les noms utilisés en interne par PostgreSQL pour des raisons historiques. Il existe également d'autres types de données internes ou obsolètes, mais ils ne sont pas listés ici.

Tableau 8.1. Types de données

NomAliasDescription
bigintint8Entier signé sur huit octets
bigserialserial8Entier sur huit octets à incrémentation automatique
bit [ (n) ] Suite de bits de longueur fixe
bit varying [ (n) ]varbit [ (n) ]Suite de bits de longueur variable
booleanboolBooléen (Vrai/Faux)
box Boîte rectangulaire dans le plan
bytea Donnée binaire (« tableau d'octets »)
character [ (n) ]char [ (n) ]Chaîne de caractères de longueur fixe
character varying [ (n) ]varchar [ (n) ]Chaîne de caractères de longueur variable
cidr Adresse réseau IPv4 ou IPv6
circle Cercle dans le plan
date Date du calendrier (année, mois, jour)
double precisionfloat8Nombre à virgule flottante de double précision (sur huit octets)
inet Adresse d'ordinateur IPv4 ou IPv6
integerint, int4Entier signé sur quatre octets
interval [ champs ] [ (p) ] Intervalle de temps
json Données texte JSON
jsonb Données binaires JSON, décomposées
line Droite (infinie) dans le plan
lseg Segment de droite dans le plan
macaddr Adresse MAC (pour Media Access Control)
macaddr8 Adresse MAC (pour Media Access Control) (format EUI-64)
money Montant monétaire
numeric [ (p, s) ]decimal [ (p, s) ]Nombre exact dont la précision peut être spécifiée
path Chemin géométrique dans le plan
pg_lsn Séquence numérique de journal (Log Sequence Number) de PostgreSQL
pg_snapshot image (snapshot) de l'identifiant de transaction niveau utilisateur
point Point géométrique dans le plan
polygon Chemin géométrique fermé dans le plan
realfloat4Nombre à virgule flottante de simple précision (sur quatre octets)
smallintint2Entier signé sur deux octets
smallserialserial2Entier sur deux octets à incrémentation automatique
serialserial4Entier sur quatre octets à incrémentation automatique
text Chaîne de caractères de longueur variable
time [ (p) ] [ without time zone ] Heure du jour (sans fuseau horaire)
time [ (p) ] with time zonetimetzHeure du jour, avec fuseau horaire
timestamp [ (p) ] [ without time zone ] Date et heure (sans fuseau horaire)
timestamp [ (p) with time zonetimestamptzDate et heure, avec fuseau horaire
tsquery requête pour la recherche plein texte
tsvector document pour la recherche plein texte
txid_snapshot image de l'identifiant de transaction au niveau utilisateur (déprécié ; voir pg_snapshot)
uuid identifiant unique universel
xml données XML

Compatibilité

Les types suivants sont conformes à la norme SQL : bigint, bit, bit varying, boolean, char, character varying, character, varchar, date, double precision, integer, interval, numeric, decimal, real, smallint, time (avec et sans fuseau horaire), timestamp (avec et sans fuseau horaire), xml.

Chaque type de données a une représentation externe déterminée par ses fonctions d'entrée et de sortie. De nombreux types de données internes ont un format externe évident. Cependant, certains types sont spécifiques à PostgreSQL, comme les chemins géométriques, ou acceptent différents formats, comme les types de données de date et d'heure. Certaines fonctions d'entrée et de sortie ne sont pas inversables : le résultat de la fonction de sortie peut manquer de précision comparé à l'entrée initiale.