Je me demande si j'ai un VARCHAR de 200 caractères et que je mets une chaîne de 100 caractères, utilisera-t-il 200 octets ou utilisera-t-il simplement la taille réelle de la chaîne?
100 caractères.
Ceci est le var (variable) dans varchar
: vous ne stockez que ce que vous avez entré (et 2 octets supplémentaires pour stocker une longueur allant jusqu'à 65535 )
S'il s'agissait de char(200)
, vous devriez toujours stocker 200 caractères, avec 100 espaces
Voir la documentation: "Les types CHAR et VARCHAR"
VARCHAR signifie qu'il s'agit d'un caractère de longueur variable, il ne prendra donc que l'espace nécessaire. Mais si vous connaissez la structure sous-jacente, il peut être judicieux de limiter VARCHAR à un maximum.
Par exemple, si vous stockiez des commentaires de l'utilisateur, vous pouvez limiter le champ de commentaire à 4 000 caractères seulement; Si tel est le cas, cela n'a aucun sens de faire en sorte que la table SQL ait un champ plus grand que VARCHAR (4000).
En fait, cela prend 101 octets.