Je crée un formulaire pour envoyer des messages privés et je veux définir la maxlength
valeur d'une zone de texte appropriée à la longueur maximale d'un text
champ dans ma table de base de données MySQL. Combien de caractères un champ de texte de type peut-il stocker?
Si beaucoup, serais-je en mesure de spécifier la longueur dans le champ de type de texte de base de données comme je le ferais avec varchar?
Réponses:
Voir pour les nombres maximum: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
L est le nombre d'octets dans votre champ de texte. Ainsi, le nombre maximal de caractères pour le texte est de 2 16 -1 (en utilisant des caractères à un octet). Signifie 65 535 caractères (en utilisant des caractères à un octet).
Encodage UTF-8 / MultiByte : en utilisant l'encodage MultiByte, chaque caractère peut consommer plus d'un octet d'espace. Pour UTF-8, la consommation d'espace est comprise entre 1 et 4 octets par caractère.
la source
TINYTEXTE: 256 octets
TEXTE: 65 535 octets
MOYENTEXTE: 16 777
215 octets LONGTEXTE: 4 294 967 295 octets
la source
Remarque: Si vous utilisez des caractères multi-octets (comme l'arabe, où chaque caractère arabe prend 2 octets), la colonne "Longueur maximale exacte autorisée" pour
TINYTEXT
peut contenir jusqu'à 127 caractères arabes (Remarque: espace, tiret, trait de soulignement et autres caractères similaires) , sont des caractères à 1 octet).Fondamentalement, c'est comme:
"Longueur maximale exacte autorisée" = "Longueur approximative" en octets - 1
la source
Selon http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html , la limite est de
L + 2 bytes, where L < 2^16
64 Ko.Vous ne devriez pas avoir à vous soucier de la limiter, elle est automatiquement décomposée en morceaux qui s'ajoutent à mesure que la chaîne se développe, donc elle n'utilisera pas toujours aveuglément 64k.
la source
Selon la documentation, vous pouvez utiliser 21 844 caractères au maximum si le jeu de caractères est UTF8
Vous n'avez pas besoin de spécifier la longueur. Si vous avez besoin de plus de caractères, utilisez les types de données MEDIUMTEXT ou LONGTEXT. Avec VARCHAR, la longueur spécifiée n'est pas pour l'exigence de stockage, c'est uniquement pour la façon dont les données sont récupérées de la base de données.
la source
TINYTEXT
est un type de données de chaîne qui peut stocker jusqu'à des255
caractères.TEXT
est un type de données chaîne qui peut stocker jusqu'à65,535
caractères.TEXT
est couramment utilisé pour les articles courts.LONGTEXT
est un type de données de chaîne avec une longueur maximale de4,294,967,295
caractères. À utiliserLONGTEXT
si vous devez stocker un texte volumineux, tel qu'un chapitre d'un roman.la source
TEXT
est un type de données de chaîne pouvant contenir jusqu'à 65 535 caractères. Mais si vous voulez stocker plus de données, changez son type de données enLONGTEXT
ALTER TABLE
name_tabel
CHANGEtext_field
LONGTEXT CHARACTER SETutf8
COLLATEutf8_general_ci
NOT NULL;la source
Pour la version 8.0 de MySql.
Exigences de stockage de type numérique
Les valeurs des colonnes DECIMAL (et NUMERIC) sont représentées à l'aide d'un format binaire qui contient neuf chiffres décimaux (base 10) dans quatre octets. Le stockage des parties entières et fractionnaires de chaque valeur est déterminé séparément. Chaque multiple de neuf chiffres nécessite quatre octets, et les chiffres «restants» nécessitent une fraction de quatre octets. Le stockage requis pour les chiffres en excès est donné par le tableau suivant.
Exigences de stockage de type de date et d'heure Pour les colonnes TIME, DATETIME et TIMESTAMP, le stockage requis pour les tables créées avant MySQL 5.6.4 diffère des tables créées à partir de 5.6.4. Cela est dû à un changement de 5.6.4 qui permet à ces types d'avoir une partie fractionnaire, ce qui nécessite de 0 à 3 octets.
Depuis MySQL 5.6.4, le stockage pour YEAR et DATE reste inchangé. Cependant, TIME, DATETIME et TIMESTAMP sont représentés différemment. DATETIME est compressé plus efficacement, nécessitant 5 plutôt que 8 octets pour la partie non fractionnelle, et les trois parties ont une partie fractionnaire qui nécessite de 0 à 3 octets, en fonction de la précision des secondes fractionnaires des valeurs stockées.
Par exemple, TIME (0), TIME (2), TIME (4) et TIME (6) utilisent respectivement 3, 4, 5 et 6 octets. TIME et TIME (0) sont équivalents et nécessitent le même stockage.
Pour plus d'informations sur la représentation interne des valeurs temporelles, consultez MySQL Internals: Important Algorithms and Structures.
Exigences de stockage des types de chaînes Dans le tableau suivant, M représente la longueur de colonne déclarée en caractères pour les types de chaînes non binaires et en octets pour les types de chaînes binaires. L représente la longueur réelle en octets d'une valeur de chaîne donnée.
la source