Postgres VARCHAR vs TEXT

Introduction

Si vous travaillez avec PostgreSQL, il est important d’avoir une solide compréhension des différents types de données afin de pouvoir choisir les bons lors de la création de vos tables de base de données. Deux types de caractères courants utilisés dans PostgreSQL sont les types TEXT et VARCHAR. Bien qu’il y ait beaucoup de similitudes entre ces deux types, il y a aussi quelques différences clés. Dans cet article, nous allons en apprendre davantage sur ces types de caractères et comparer les différences entre Postgres VARCHAR et TEXT.

Prérequis

Avant de procéder à notre comparaison Postgres VARCHAR vs TEXT, faisons une pause pour passer en revue quelques prérequis nécessaires pour suivre les exemples de cet article :

  • Assurez-vous que le serveur PostgreSQL a été correctement installé et configuré. Le service doit être exécuté en arrière-plan.

Les utilisateurs de Linux et de Windows peuvent télécharger PostgreSQL ici :

  • Pour démarrer le serveur PostgreSQL dans un environnement Linux, utilisez la commande suivante :
1
sudo service postgresql start
  • Vous pouvez voir si le service fonctionne avec la commande indiquée ci-dessous :
1
service postgresql status

La sortie de cette commande ressemblera à ce qui suit :

1
2
3
4
5
6
7
8
9
â— postgresql.service – SGBD PostgreSQL
Loaded : chargé (/lib/systemd/system/postgresql.service ; enabled ; vendor prese
Active : actif (sorti) depuis Thu 2019-08-01 14:51:20 PST ; 36min ago
Process : 1230 ExecStart=/bin/true (code=exité, status=0/SUCCESS)
PID principal : 1230 (code=exité, status=0/SUCCESS)
Aug 01 14:51:20 user-UX330UAK systemd : Démarrage de PostgreSQL RDBMS…
Aug 01 14:51:20 user-UX330UAK systemd : Démarrage du RDBMS PostgreSQL.
lignes 1-8/8 (FIN)
  • Si vous travaillez sur une machine Windows, les instructions suivantes peuvent être utilisées pour démarrer, arrêter et redémarrer le serveur PostgreSQL :
  1. Ouvrir le panneau de configuration
  2. Ouvrir les outils d’administration
  3. Ouvrir les services
  4. Localiser le service du serveur PostgreSQL
  5. Enfin, démarrer, arrêter ou redémarrer le service

Quels sont les types de caractères PostgreSQL ?

Il existe trois types de caractères dans PostgreSQL : character(n), qui est communément appelé char(n), character varying(n), qui est communément appelé varchar(n), et text. La valeur de n doit être un nombre entier positif pour ces types. Tous les types de caractères PostgreSQL sont capables de stocker des chaînes de caractères jusqu’à n caractères.

Si vous essayez de stocker une chaîne de caractères plus longue dans une colonne de ce type de caractères PostgreSQL, vous obtiendrez une erreur, sauf si les caractères qui dépassent la limite sont entièrement composés d’espaces. Si c’est le cas, la chaîne ou les caractères qui dépassent seront tronqués à la longueur maximale autorisée.

Le type de données VARCHAR se comporte de manière similaire au type de données TEXT lorsque la valeur de n n’est pas spécifiée. Les performances des deux types de caractères sont également similaires lorsque n est omis.

Contrairement aux autres bases de données, les types de caractères PostgreSQL n’ont pas de différence de performances entre eux. La plupart du temps, nous utiliserons TEXT ou VARCHAR en fonction de nos besoins ; nous utilisons le VARCHAR(n) lorsque nous voulons que PostgreSQL effectue une vérification des limites de longueur.

Exemples utilisant les types de caractères PostgreSQL

Dans cet exemple, nous poursuivrons notre comparaison Postgres VARCHAR vs TEXT en examinant de plus près les types de caractères et leur fonctionnement dans une base de données PostgreSQL.

Avant de poursuivre nos exemples, nous devrons créer une table :

1
2
3
4
5
CREATE TABLE pgsql_char_sample (
id serial PRIMARY KEY,
my_char VARCHAR (8),
my_text TEXT
) ;

Après avoir créé notre table, nous pouvons effectuer une opération d’insertion :

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, mon_texte)
VALUES
(
‘Cette chaîne échantillon est pour la colonne varchar’,
‘Cette chaîne échantillon est pour la colonne texte à insérer dans la table PostgreSQL’
) ;

L’instruction présentée ci-dessus entraînera une erreur :

1
ERREUR : VALUE too long FOR TYPE CHARACTER VARYING(8)

Cette erreur se produit parce que nous avons tenté d’insérer une chaîne de plus de huit caractères dans la colonne my_char dont le type de données est varchar(8).

Tentons à nouveau d’insérer des données échantillons, cette fois avec des valeurs différentes :

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, mon_texte)
VALUES
(
‘String’,
‘Cet exemple de chaîne est pour la colonne texte à insérer dans la table PostgreSQL’
) ;

Pour vérifier que notre opération d’insertion a réussi, nous pouvons utiliser l’instruction suivante :

1
SELECT * FROM pgsql_char_sample;

Le résultat devrait ressembler à ceci :

1
2
3
4
id | my_char | my_text
—-+———+———————————————————————————-
1 | String | Cet exemple de chaîne est pour la COLONNE de texte à insérer dans la TABLE PostgreSQL
(1 ROW)

Dans l’exemple que nous avons regardé, nous pouvons voir que la seule différence entre les colonnes VARCHAR(n) et TEXT est qu’une limite peut être fixée pour la colonne VARCHAR. Dans ce cas, nous avons fixé la longueur de VARCHAR à huit caractères, de sorte que les chaînes de caractères d’une longueur supérieure ne peuvent pas être insérées. Comme nous l’avons mentionné précédemment, les types de caractères VARCHAR et TEXT ne présentent pas de différences observables en termes de performances.

Conclusion

Lorsque vous stockez des données de type caractère dans PostgreSQL, il est important de choisir le bon type de données pour chaque colonne de votre table. Dans cet article, nous avons comparé les types de caractères Postgres VARCHAR vs TEXT, en discutant de leurs similarités et différences de base. Grâce aux informations fournies dans cet article, vous serez prêt à concevoir vos propres tables de base de données dans PostgreSQL et à choisir les types de données appropriés pour vos besoins.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.