2009-08-13 6 views
13

Avertissement: Je suis très nouveau pour SQL et les bases de données en général. J'ai besoin de créer un champ qui va stocker un maximum de 32 caractères de données textuelles. Est-ce que "VARCHAR(32)" signifie que j'ai exactement 32 caractères pour mes données? Ai-je besoin de réserver un caractère supplémentaire pour la terminaison nulle? J'ai effectué un test simple et il semble que ce soit un tampon WYSIWYG. Cependant, je voulais obtenir une réponse concrète de la part de gens qui savent réellement ce qu'ils font. J'ai un arrière-plan C [++], donc cette question soulève des cloches d'alarme dans ma tête.[My] SQL VARCHAR Taille et Null-Termination

Répondre

24

Oui, vous avez 32 caractères disponibles. SQL ne se préoccupe pas des chaînes terminées nulles comme le font certains langages de programmation.

+0

Merci, c'est un soulagement. –

1

Votre taille de spécification VARCHAR est la taille maximale de vos données, dans ce cas, 32 caractères. Cependant, VARCHARS est un champ dynamique, donc le stockage physique réel utilisé est seulement la taille de vos données, plus un ou deux octets.

Si vous mettez une chaîne de 10 caractères dans un VARCHAR (32), le stockage physique sera de 11 ou 12 octets (le manuel vous dira la formule exacte). Cependant, lorsque MySQL traite des ensembles de résultats (c'est-à-dire après un SELECT), 32 octets seront alloués en mémoire pour ce champ pour chaque enregistrement.

+0

+1 pour l'explication de l'allocation de mémoire lors de la sélection du champ. Je me demande comment cela fonctionne avec les champs TEXT et BLOB ... – Leonel

Questions connexes