PostgreSQL Types de données : octet, numérique, caractère, binaire

PostgreSQL offre un ensemble riche de types de données natifs pour les utilisateurs. Les utilisateurs peuvent ajouter de nouveaux types à l'aide de la commande CREATE TYPE. Cela rend également les requêtes plus simples et plus lisibles.

Types de données dans PostgreSQL

PostgreSQL prend en charge les types de données suivants :

  • Types de texte
  • Types numériques
  • Dates et heures
  • XML
  • JSON
  • Boolean
  • Bits
  • Données binaires
  • Réseau
  • Arrays
  • Créez votre type de données
  • Boolean
  • Temporel
  • UUID
  • tableau
  • JSON
  • Types de données spéciaux pour stocker une adresse réseau et des données géométriques.

Étudions PostgreSQL types de données en détail

Types de données de caractères

PostgreSQL prend en charge les types de données caractère pour stocker les valeurs de texte. PostgreSQL construit des types de données de caractères à partir des mêmes structures internes. PostgreSQL propose trois types de données de caractères : CHAR(n), VARCHAR(n) et TEXT.

Nom Description
varchar(n) Vous permet de déclarer une longueur variable avec une limite
Caractère(n) Longueur fixe, rembourrage vierge
Texte Use peut utiliser ce type de données pour déclarer une variable de longueur illimitée

Types de données numériques

PostgreSQL prend en charge deux types de nombres distincts :

  • Entiers
  • Nombres à virgule flottante
Nom Taille du magasin Catégorie
petit entier Octets 2 -32768 à + 32767
entier Octets 4 -2147483648 à + 2147483647
bigint Octets 8 -9223372036854775808 à 9223372036854775807
décimal variable Si vous l'avez déclaré comme type de données décimal, le type de données varie de 131072 16383 chiffres avant la virgule décimale à chiffres après la virgule décimale.
numérique variable Si vous le déclarez comme nombre, vous pouvez inclure un nombre allant jusqu'à 131072 16383 chiffres avant la virgule décimale jusqu'à chiffres après la virgule décimale.
réal Octets 4 Précision de 6 chiffres décimaux
double Octets 8 Précision de 15 chiffres décimaux

Types de données binaires

Une chaîne binaire est une séquence d'octets ou d'octets. Les types de données binaires Postgres sont divisés de deux manières.

  • Les chaînes binaires permettent de stocker des cotes de valeur zéro
  • Octets non imprimables

Les chaînes de caractères n'autorisent pas zéro octet et interdisent également toute autre valeur et séquence d'octets non valide selon les règles de codage du jeu de caractères de la base de données.

Nom Taille de stockage Description
Octet 1 à 4 octets plus la taille de la chaîne binaire Chaîne binaire de longueur variable

Type d'adresse réseau

De nombreuses applications stockent des informations réseau telles que les adresses IP des utilisateurs ou des capteurs. PostgreSQL dispose de trois types natifs qui vous aident à optimiser les données du réseau.

Nom Taille Description
cidre 7 ou 19 octets IPV4 et IPv6 réseaux
Inet 7 ou 19 octets Hôte et réseaux IPV4 et IPV5
macaddr Octets 6 Adresses MAC

L'utilisation des types d'adresses réseau présente les avantages suivants

  1. Gain d'espace de stockage
  2. Vérification des erreurs de saisie
  3. Fonctions telles que la recherche de données par sous-réseau

Type de recherche de texte

PostgreSQL fournit deux types de données conçus pour prendre en charge la recherche en texte intégral. La recherche en texte intégral consiste à rechercher dans une collection de documents en langage naturel ceux qui correspondent le mieux à une requête.

  • Recherche de texte Tsvector PostgreSQL les types de variables représentent un document sous une forme optimisée pour la recherche de texte
  • La recherche de texte de type requête stocke les mots-clés qui doivent être recherchés

Types de données date/heure

PostgreSQL L'horodatage offre une précision à la microseconde au lieu d'une précision à la seconde. De plus, vous avez également la possibilité de stocker avec ou sans fuseau horaire. PostgreSQL convertira l'horodatage avec le fuseau horaire en UTC lors de l'entrée et le stockera.

La saisie de la date et de l'heure est acceptée dans divers formats, notamment Postgres traditionnel, ISO 8601, compatible SQL, etc.

PostgreSQL prend en charge la commande jour/mois/année. Les formats pris en charge sont DMY, MDY, YMD

Types de données temporelles

Nom Taille Catégorie Résolution
Horodatage sans fuseau horaire Octets 8 4713 avant JC à 294276 après JC 1 microseconde/14 chiffres
Horodatage avec fuseau horaire Octets 8 4713 avant JC à 294276 après JC 1 microseconde/14 chiffres
données Octets 4 4713 avant JC à 294276 après JC Un jour
Heure sans fuseau horaire Octets 8 00:00:00 to 24:00:00 1 microseconde/14 chiffres
Heure avec fuseau horaire Octets 12 00:00:00 + 1459 à 24:00:00-1459 1 microseconde/14 chiffres
l'intervalle Octets 12 -178000000 à 178000000 ans 1 microseconde/14 chiffres

Exemples

Entrée Description
2025-09-07 ISO 8601, 7 septembre avec n'importe quel style de date (format recommandé)
September 7, 2025 7 septembre avec n'importe quel style de date
9/7/2025 7 septembre avec MDY, 9 juillet avec DMY
9/7/25 7 septembre 2025, avec MDY
2025-Sep-7 7 septembre avec n'importe quel style de date
7 sept.2018 7 septembre avec n'importe quel style de date
7-Sep-25 7 septembre 2025, avec YMD
20250907 ISO 8601,7 septembre 20225 dans n'importe quel mode
2025.250 année et jour de l'année, dans ce cas, le 7 septembre 2025
J25250 Date julienne

Heure/Heure avec entrée de fuseau horaire

Entrée Description
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11h19 Idem à 11h19
11​h​19 pareil qu'à 23h19
23: 19-3
23:19-03:00
231900-03
ISO 8601, identique à 11 h 19 HNE
23: 19 EST fuseau horaire spécifié comme EST, identique à 11h19 EST

Type booléen

Un type de données booléen peut contenir

  • Vrai
  • Faux
  • nul

valeurs.

Vous utilisez un bool or booléen mot-clé pour déclarer une colonne avec le type de données booléen.

Lorsque vous insérez des valeurs dans une colonne booléenne, Postgre convertit des valeurs telles que

  • Oui
  • y
  • 1
  • t
  • oui

en 1.

Alors que des valeurs comme

  • Non
  • N
  • 0
  • F
  • Faux

sont convertis en 0

Lors de la sélection des données, les valeurs sont à nouveau reconverties en oui, vrai, y, etc.

Types de données géométriques

Les types de données géométriques représentent des objets spatiaux bidimensionnels. Ils aident à effectuer des opérations telles que des rotations, des mises à l'échelle, des traductions, etc.

Nom Taille de stockage Représentation Description
Point Octets 16 Pointer sur un avion (x, y)
Line Octets 32 Ligne infinie ((xl.yl ).(x2.y2))
Lseg Octets 32 Segment de ligne fini ((xl.yl ).(x2.y2))
Box Octets 32 Flacons Box ((xl.yl ).(x2.y2))
Chemin 16n + 16n octets Fermer et ouvrir le chemin ((xl.yl),…)
Polygone 40 + 16n octets Polygone [(xl.yl)….]
Réseautage et Mentorat Octets 24 Réseautage et Mentorat <(xy).r> (point central et rayon)

Types énumérés

Dénombré PostgreSQL Le type de données est utile pour représenter des informations rarement changeantes telles que le code du pays ou l’identifiant de la succursale. Le type de données Enumerated est représenté dans une table avec des clés étrangères pour garantir l'intégrité des données.

Exemple

La couleur des cheveux est assez statique dans une base de données démographique

CREATE TYPE hair_color AS ENUM
('brown','black','red','grey','blond')

Types énumérés

Type de gamme

De nombreuses applications métier nécessitent des données sous forme de plages. Généralement, deux colonnes (exemple : date de début, date de fin) sont définies pour gérer les plages. Ceci est à la fois inefficace et difficile à maintenir.

Postgre a construit les types de plages comme suit

  • int4range — Afficher la plage d'un entier
  • int8range — Afficher la plage de bigint
  • numrange — Affiche la plage numérique
  • tstrange — Vous aide à afficher l'horodatage sans fuseau horaire
  • étrange — Vous permet d'afficher l'horodatage avec le fuseau horaire
  • plage de dates — Plage de dates

Type d'UUID

Les identités universellement uniques (UUID) sont une quantité de 128 bits générée par un algorithme. Il est très peu probable que le même identifiant soit généré par une autre personne dans le monde utilisant le même algorithme. C'est pourquoi pour les systèmes distribués, ces identifiants constituent un choix idéal car ils offrent un caractère unique au sein d'une seule base de données. Un UUID est écrit sous la forme d'un groupe de chiffres hexadécimaux minuscules, avec différents groupes séparés par des tirets.

PostgreSQL a un type de données UUID natif qui consomme 16 octets de stockage. L'UUID est un type de données idéal pour les clés primaires.

Exemple

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre accepte également des formes alternatives d'entrées UUID comme toutes les majuscules, pas de traits d'union, d'accolades, etc.

Type XML

PostgreSQL vous permet de stocker des données XML dans un type de données, mais ce n'est rien de plus qu'une extension d'un type de données texte. Mais l’avantage est qu’il vérifie que le XML d’entrée est bien formé.

Exemple

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

TypeJSON

Pour stocker des données JSON PostgreSQL propose 2 types de données

  1. JSON
  2. JSONB
json Jsonb
Une simple extension d'un type de données texte avec validation JSON Une représentation binaire des données JSON
L'insertion est rapide mais la récupération des données est relativement lente. L'insertion est lente mais la sélection (la récupération des données est rapide)
Enregistre les données saisies exactement telles qu'elles sont, y compris les espaces. Prend en charge l'indexation. Peut optimiser les espaces pour accélérer la récupération.
Retraitement sur récupération des données Aucun retraitement requis lors de la récupération des données

Le type de données JSON le plus largement utilisé utilise jsonb, sauf s'il existe un besoin spécialisé d'utiliser le type de données JSON.

Exemple

CREATE TABLE employee (
  id integer NOT NULL,
  age  integer NOT NULL,
  data jsonb
);

INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboareded": true}'); 

Pseudo-types

PostgreSQL possède de nombreuses entrées à usage spécial appelées pseudo-types. Vous ne pouvez pas utiliser de pseudo-types comme PostgreSQL types de colonnes. Ils sont utilisés pour déclarer l'argument ou le type de retour d'une fonction.

Chacun des pseudo-types disponibles est utile dans les situations où les documents de comportement d'une fonction ne correspondent pas simplement à la prise ou au retour d'une valeur d'un élément spécifique. Type de données SQL.

Nom Description
Toutes La fonction accepte tous les types de données d’entrée.
Un tableau La fonction accepte n'importe quel type de données de tableau.
Tout élément La fonction accepte n'importe quel type de données.
N'importe quelle énumération La fonction accepte tout type de données enum.
Non-tableau La fonction accepte tout type de données non-tableau.
C chaîne La fonction accepte ou renvoie une chaîne C terminée par un caractère nul.
Interne La fonction interne accepte ou renvoie le type de données interne au serveur.
Gestionnaire_de_langue Il est déclaré qu'il renvoie le gestionnaire de langue.
Enregistrement Recherchez une fonction qui renvoie un type de ligne non spécifié.
Gâchette Une fonction de déclenchement est utilisée pour renvoyer le déclencheur.

Il est important que l'utilisateur qui utilise cette fonction s'assure que la fonction se comportera de manière sécurisée lorsqu'un pseudo-type est utilisé comme type d'argument.

Meilleures pratiques d'utilisation des types de données

  • Utilisez le type de données « texte » sauf si vous souhaitez limiter la saisie
  • N’utilisez jamais « char ».
  • Les entiers utilisent « int ». Utilisez bigint uniquement lorsque vous avez de très gros nombres
  • Utilisez presque toujours « numérique »
  • Utiliser flotter dans PostgreSQL si vous disposez d'une source de données IEEE 754

Résumé

  • PostgreSQL offre un riche ensemble de types de données natifs aux utilisateurs
  • PostgreSQL prend en charge les types de données de caractères pour stocker les valeurs de texte
  • PostgreSQL prend en charge deux types de nombres distincts : 1. Les entiers, 2. Les nombres à virgule flottante
  • Une chaîne binaire est une séquence d'octets ou d'octets
  • PostgreSQL a un type d'adresse réseau pour vous aider à optimiser le stockage des données réseau
  • Recherche de texte PostgreSQL les structures de données sont conçues pour prendre en charge la recherche en texte intégral
  • Les types de données PSQL Date/Heure autorisent les informations de date et d'heure dans différents formats
  • Les types de champs booléens Postgres peuvent contenir trois valeurs 1. Vrai 2. Faux 3. Null
  • Géométrique PostgreSQL les types de données représentent des objets spatiaux bidimensionnels
  • Types de données énumérés dans PostgreSQL est utile pour représenter des informations rarement changeantes telles que le code du pays ou l'identifiant de la succursale
  • L'identité universellement unique (UUID) est une quantité de 128 bits générée par un algorithme.
  • PostgreSQL possède de nombreuses entrées à usage spécial appelées pseudo-types
  • Il est recommandé d'utiliser le type de données « texte », sauf si vous souhaitez limiter la saisie.