Char VS. Varchar

Char VS. Varchar
Les types de données char et varchar dans SQL sont les plus importants car ils nous permettent de stocker des données de chaîne.

Ce tutoriel passera en revue chaque type de données et décrira la différence.

Le type de char SQL

Le type de char référence à un type de données utilisé pour stocker les chaînes de caractère d'une longueur fixe.

Le type de char vous permet de spécifier une taille spécifique pour les données que vous insérez dans cette ligne.

Bien que la mise en œuvre du type CHAR puisse varier légèrement en fonction du moteur de base de données, dans SQL standard, le type de char peut tenir jusqu'à un maximum de 8 000 caractères non Unicodes.

Pour définir une longueur d'un type de char, vous pouvez utiliser la syntaxe:

char (n)

Où n fait référence au nombre (longueur) des caractères que vous pouvez stocker.

Étant donné que le type de char est de longueur fixe, si vous insérez une chaîne avec moins de caractères que la taille spécifiée, la chaîne est rembourrée avec des espaces supplémentaires pour correspondre à la chaîne définie.

De même, si vous insérez une chaîne de plus grande longueur que la taille du jeu, la chaîne est tronquée à la taille du jeu.

Pour illustrer, commencez par créer une exemple de base de données:

Notez que dans cet exemple, nous utilisons PostgreSQL, mais vous pouvez choisir n'importe quelle saveur SQL.

$ PSQL -U Postgres

Créer une exemple de base de données:

Postgres = # Créer une base de données Sample_DB;

Connectez-vous à la base de données.

Postgres = # \ c samptample_db

Créer une table avec deux lignes. Le premier devrait être un identifiant avec auto-incrémentation (série) et l'autre du type de char.

Créer une table char_v_varchar (id serial, full_name char (15))

Notez que la longueur maximale de la colonne Full_name est de 15.

Laissez-nous maintenant ajouter des exemples de données.

Insérer dans CHAR_V_VARCHAR (full_name) VALEURS ('Aaron Wise'); - 10 caractères
Insérer dans CHAR_V_VARCHAR (full_name) VALEURS ('Aaron Wise Jack'); - 15 caractères
Insérer dans les valeurs char_v_varchar (full_name) ('aaron wise un autre nom bla bla'); - plus de 15 caractères

Faites attention aux trois déclarations d'insertion. Le premier insère une valeur de 10 caractères, le second ajoute une valeur de 15 caractères exactement, et l'autre ajoute une valeur de caractères supérieure à 15.

La première valeur sera rembourrée avec 5 caractères d'espace supplémentaires pour maximiser la longueur de set si nous exécutons le code ci-dessus.

Le second s'adaptera parfaitement, et le troisième sera tronqué.

L'ajout d'une valeur supérieure à la longueur de set est interdite dans certains moteurs de base de données. Par exemple, dans PostgreSQL, la deuxième instruction d'insertion échouera avec une erreur:

Erreur: valeur trop longue pour le caractère de type (15)
État SQL: 22001

Pour vérifier la durée des enregistrements, nous pouvons exécuter la requête:

Sélectionnez la longueur (full_name) sur char_v_varchar;

Le code ci-dessus doit renvoyer la longueur de chaque ligne dans le tableau:

longueur
--------
15
15
(2 rangées)

Notez que dans certains moteurs de base de données peut vous permettre d'ajouter une valeur de plus petite longueur sans rembourrage avec des espaces supplémentaires.

Il est bon de se rappeler que le type de char utilise 1 octet pour un caractère inséré.

Le type SQL VARCHAR

Contrairement au type de caractère, de VARCHAR ou de caractère variable, stocke les chaînes de caractères de différentes longueurs.

Cela signifie que vous pouvez définir la taille de la colonne varchar. Cependant, vous pouvez ajouter des valeurs de taille supérieures ou inférieures à la longueur de set.

Prenons un exemple ci-dessous:

créer une table char_v_varchar (id serial, full_name varchar);

Dans ce cas, nous définissons une table avec la colonne de Varchar. Étant donné que la taille de Varchar peut varier, nous n'avons pas besoin de régler une longueur.

Nous pouvons ensuite insérer trois valeurs de taille variable comme:

Insérer dans CHAR_V_VARCHAR (full_name) VALEURS ('Aaron Wise'); - 10 caractères
Insérer dans CHAR_V_VARCHAR (full_name) VALEURS ('Aaron Wise Jack'); - 15 caractères
Insérer dans les valeurs char_v_varchar (full_name) ('aaron wise un autre nom bla bla'); - plus de 15 caractères
Sélectionnez la longueur (full_name) sur char_v_varchar;

Le code ci-dessus doit insérer trois enregistrements et retourner la taille de chacun.

Dernières pensées

C'est alors sur la différence entre un type char et varchar. Un char contienne des chaînes de caractère de taille fixe, tandis qu'un varchar contient une chaîne de caractères de longueurs variables.

Bien que le varchar puisse sembler applicable à la plupart des situations, il peut entraîner des résultats de performances significatifs s'ils sont utilisés de manière déraisonnable. Par conséquent, si les performances sont un facteur critique pour votre base de données, envisagez d'utiliser un char, sauf si nécessaire.