Varchar dans MySQL est un type de données utilisé pour stocker du texte dont la longueur peut atteindre un maximum de 65535 caractères . Les colonnes varchar du tableau sont de chaîne de longueur variable qui peut contenir soit des chiffres, soit des caractères, ou les deux. Ce type de données est capable de stocker seulement 255 caractères avant la version 5.0.3, mais avec cette version et les versions ultérieures, il peut contenir jusqu'à 65 535 caractères. Il peut être stocké dans MySQL sous forme de 1 octet ou 2 octets préfixe de longueur plus taille réelle.
Le préfixe de longueur spécifie la longueur en octets d'une valeur de chaîne, et non la taille maximale que nous avons définie. Si les valeurs ne nécessitent pas plus de 255 octets, une colonne utilise le préfixe de longueur plus un octet. Si les valeurs nécessitent plus de 255 octets, une colonne utilise le préfixe de longueur plus deux octets.
La longueur maximale d'un VARCHAR en MySQL est soumis à la taille de ligne maximale de 65 535 octets, qui est partagée entre toutes les colonnes à l'exception des colonnes TEXT/BLOB et le jeu de caractères utilisé. Cela signifie que la colonne totale ne doit pas dépasser 65 535 octets.
fonction anonyme Java
Comprenons-le à l'aide d'un exemple.
Nous allons créer deux tables et les nommer Test1 et Test2. Les deux tableaux contiennent deux colonnes nommées T1 et T2. Exécutez l'instruction suivante pour créer une table ' Essai 1 ' :
CREATE TABLE Test1 ( T1 VARCHAR(32765) NOT NULL, T2 VARCHAR(32766) NOT NULL ) CHARACTER SET = 'latin1' COLLATE LATIN1_DANISH_CI;
L'instruction ci-dessus a créé une table avec succès car la longueur de la colonne T1 = 32 765 plus 2 octets et T2 = 32 766 plus 2 octets est égale à 65 535 (32 765+2+32766+2). Ainsi, la longueur de la colonne satisfait à la taille de ligne maximale de varchar, qui est de 65 535.
Maintenant, nous allons voir ce qui se passe si la taille de la colonne dépasse la taille maximale de varchar 65535. Exécutez l'instruction ci-dessous où nous avons augmenté la taille de la colonne T1 pour créer une table Test2 :
CREATE TABLE Test2 ( T1 VARCHAR(32770) NOT NULL, T2 VARCHAR(32766) NOT NULL ) CHARACTER SET = 'latin1' COLLATE LATIN1_DANISH_CI;
Après avoir exécuté l'instruction ci-dessus, MySQL génère l'erreur. Cela signifie que la taille maximale des lignes ne peut pas dépasser 65 535 octets. Dans tous les cas, si cela augmente, l'instruction échouera et MySQL générera une erreur.
Dans un autre cas, supposons que nous ayons créé une table nommée Test3 en utilisant la déclaration ci-dessous :
liste des religions
CREATE TABLE Test3 ( Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(5) NOT NULL );
Ensuite, insérez les valeurs dans le tableau à l'aide de l'instruction ci-dessous :
INSERT INTO Test3(Name) VALUES ('Stephen');
Maintenant, exécutez l'instruction ci-dessus. MySQL donne le message d'erreur : Les données sont trop longues pour la colonne 'Nom' de la ligne 1 . La sortie l’explique plus clairement.
MySQL VARCHAR et espaces
MySQL ne remplit pas d'espace pour les valeurs varchar lorsqu'elles sont stockées. MySQL a également conservé les espaces de fin lorsqu'ils stockaient ou récupéraient des valeurs varchar. Nous pouvons le comprendre à travers l'exemple suivant où un insérer une instruction ajoute des valeurs dans le Nom colonne du tableau Test3 :
dictionnaire de tri python
INSERT INTO Test3(Name) VALUES ('John ');
Ensuite, exécutez l'instruction SELECT pour récupérer les valeurs.
SELECT Id, Name, length(Name) FROM Test3;
Cela donnera le résultat suivant dans lequel MySQL a inclus l'espace de fin dans le comptage de la longueur car cela n'augmente pas la longueur de la colonne.
Cependant, lorsque nous essayons d'insérer une valeur varchar avec des espaces de fin qui dépassent la longueur de la colonne, MySQL va tronquer les espaces de fin. De plus, MySQL émet un avertissement . L'exemple suivant l'explique plus clairement :
INSERT INTO Test3(Name) VALUES ('Peter ');
L'instruction ci-dessus insère une valeur dont la longueur est six dans la colonne du nom. La valeur est toujours insérée dans la colonne, mais MySQL tronque l'espace de fin avant d'ajouter la valeur. Nous pouvons vérifier à l'aide de la requête ci-dessous où nous pouvons voir l'instruction insert ajoutée avec succès mais avec un avertissement qui donne : Données tronquées pour la colonne « nom » à la ligne 1 :
Différence entre les types de données Char et Varchar
Les types de données char et varchar sont tous deux suivants Caractère ASCII . Ils sont presque identiques mais diffèrent dans le stockage et la récupération des données de la base de données. Le tableau suivant résume les différences essentielles entre les types de données char et varchar :
CARBONISER | VARCHAR |
---|---|
Il a du caractère. | Cela signifie caractère variable. |
Il stocke les valeurs en longueur fixe que nous déclarons lors de la création d'une table. | Il stocke les valeurs dans une chaîne de longueur variable avec un préfixe de un ou deux octets. |
Ce type de données peut être complété par un espace de fin pour conserver la longueur spécifiée. | Ce type de données ne peut être complété par aucun caractère, y compris un espace, lorsqu'il est stocké. |
Il ne peut pas contenir plus de 255 caractères. | Il peut contenir jusqu’à 65 535 caractères. |
Il prend en charge l'allocation de mémoire statique. | Il prend en charge l'allocation dynamique de mémoire. |