Maintenant que nous connaissons le concept des types de données de caractères CHAR, VARCHAR et TEXT respectivement dans PostgreSQL, cet article se concentrera sur la mise en évidence de la différence clé entre eux.
Qu’est-ce que le type de données CHAR ?
Ce type de données est utilisé pour stocker des caractères de longueur limitée. Il est représenté par char(n)
ou character(n)
dans PostgreSQL, où n représente la limite de la longueur des caractères.Si n n’est pas spécifié, la valeur par défaut est char(1)
ou character(1)
.
Quel est le type de données VARCHAR ?
Ce type de données est utilisé pour stocker des caractères de longueur limitée. Il est représenté par varchar(n)
dans PostgreSQL Tm, où n représente la limite de la longueur des caractères. Si n n’est pas spécifié, la valeur par défaut est varchar
qui a une longueur illimitée.
Qu’est-ce que le type de données TEXTUELLES ?
Ce type de données est utilisé pour stocker des caractères de longueur illimitée. Il est représenté par text
dans PostgreSQL. Les performances du varchar (sans n) et du texte sont les mêmes.
Le tableau ci-dessous présente la différence majeure entre CHAR, VARCHAR et TEXT:
Comparison | CHAR | VARCHAR | TEXT |
---|---|---|---|
Syntax | CHAR(n) | VARCHAR(n) | TEXT |
Representation | char(n) or character(n) |
varchar(n) |
text |
Length of characters | Limited | Limited | Unlimited |
Spaces and padding | Gets tronqué | Devient tronqué | Renaît intact |
Si n n’est pas spécifié | n = 1 | n = infini | Le concept de n n’existe pas |
Cycle de requête | Cycle supplémentaire pour vérifier la longueur | Cycle supplémentaire pour vérifier la longueur | Aucune évaluation du caractère longueur |
Exemple:
Créons une nouvelle table (disons, character_tests) pour la démonstration en utilisant les commandes ci-dessous:
CREATE TABLE character_tests ( id serial PRIMARY KEY, x CHAR (1), y VARCHAR (10), z TEXT);
Maintenant, insérons une nouvelle ligne dans la table char_test en utilisant la commande ci-dessous:
INSERT INTO character_tests (x, y, z)VALUES ( 'Geeks', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
À ce stade, PostgreSQL va générer une erreur car le type de données de la colonne x est char(1) et nous avons essayé d’insérer une chaîne de trois caractères dans cette colonne comme indiqué ci-dessous:
ERROR: value too long for type character(1)
Alors, maintenant, corrigeons-le.
INSERT INTO character_tests (x, y, z)VALUES ( 'G', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
Maintenant, nous obtiendrons la même erreur pour la colonne y car le nombre de caractères entrés est supérieur à 10 comme indiqué ci-dessous:
ERROR: value too long for type character(10)
Corrigeons-le aussi.
INSERT INTO character_tests (x, y, z)VALUES ( 'Y', 'varchar(n)', 'This is a very long text for the PostgreSQL text column' );
Maintenant que nous avons réussi à attribuer les valeurs au type de données de caractère, vérifiez-le en exécutant la commande ci-dessous :
SELECT * FROM character_tests;
Sortie: