Documentation PostgreSQL 14.22 » Langage SQL » Types de données

Précédent | Niveau supérieur | Suivant
7.8. Requêtes `WITH` (Common Table Expressions) | Sommaire | 8.1. Types numériques

## Chapitre 8. Types de données

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

Nom | Alias | Description
--- | --- | ---
`bigint` | `int8` | Entier signé sur huit octets
`bigserial` | `serial8` | Entier 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
`boolean` | `bool` | Boolé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 precision` | `float`, `float8` | Nombre à virgule flottante de double précision (sur huit octets)
`inet` |  | Adresse d'ordinateur IPv4 ou IPv6
`integer` | `int`, `int4` | Entier 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
`real` | `float4` | Nombre à virgule flottante de simple précision (sur quatre octets)
`smallint` | `int2` | Entier signé sur deux octets
`smallserial` | `serial2` | Entier sur deux octets à incrémentation automatique
`serial` | `serial4` | Entier 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 zone` | `timetz` | Heure du jour, avec fuseau horaire
`timestamp [ (`p`) ] [ without time zone ]` |  | Date et heure (sans fuseau horaire)
`timestamp [ (`p`) with time zone` | `timestamptz` | Date 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.