Types de données
Comme nous l’avons observé lors de la création de table, il faut non seulement créer la table mais aussi le squelette dont les noms des colonnes, leurs types et leurs contraintes avant d’insérer des données. Il faut donc construire la classe avant d’y insérer des objets.
La mise en place d’une structure normalisée est essentielle, dès lors qu’on intègre de nouvelles données dans la table. Toutes les valeurs d’un attribut (variable ou colonne) ont le même type, le même format. Les objets ‘voiture’ vont avoir plusieurs attributs mais chaque attribut a ses propres caractéristiques. L’attribut « puissance » va être du même type pour chaque voiture, un nombre de cv, un entier. L’attribut « couleur » va être du même type pour chaque voiture : ‘bleue’, ‘rouge’, ‘verte’, ‘noire’, ‘blanche’. C’est une chaine de caractère et cette couleur ne peut pas être désignée par des chiffres ! Quoique… Si… Ok, mais vous m’avez compris.
La documentation PostgreSQL offre un tableau récapitulant tous les types de données natifs disponibles.
Tableau 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 | 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 | |
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 | |
uuid | identifiant unique universel | |
xml | données XML |
Source : https://docs.postgresql.fr/12/datatype.html
NB : La colonne ‘Nom’ est le nom pour l’utilisateur, ‘Alias’ est le nom utilisé en interne par PostgreSQL.
NB : Notez également que cette liste est propre au système de gestion de base de données PostgreSQL, bien que la plupart des types ont une norme SQL, il se peut que les types et leur attribution dans une table soient différents d’un système à un autre.