Longueur maximale pour le texte de type MySQL
je crée un formulaire pour envoyer des messages privés et je veux définir la valeur maxlength
d'un textarea approprié à la longueur maximale d'un champ text
dans ma table de base de données MySQL. Combien de caractères un champ de texte de type peut-il contenir?
si beaucoup, pourrais-je spécifier la longueur dans le champ de type de texte de la base de données comme je le ferais avec varchar?
8 réponses
voir pour les nombres maximums: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
TINYBLOB, TINYTEXT L + 1 bytes, where L < 2^8 (255 Bytes)
BLOB, TEXT L + 2 bytes, where L < 2^16 (64 Kibibytes)
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 2^24 (16 Mebibytes)
LONGBLOB, LONGTEXT L + 4 bytes, where L < 2^32 (4 Gibibytes)
L est le nombre d'octets dans votre champ de texte. Donc le nombre maximum de caractères pour le texte est 2 16 -1 (en utilisant des caractères d'un seul octet). Signifie 65 535 caractères (en caractères d'un seul octet).
UTF-8 / MultiByte encoding : utiliser MultiByte encoding chaque caractère peut consommer plus d'un octet d'espace. Pour L'UTF-8, la consommation d'espace se situe entre 1 et 4 octets par caractère.
TINYTEXT: 256 octets
Texte: 65,535 octets
Medium text: 16,777,215 octets
LONGTEXT: 4,294,967,295 octets
Type | Approx. Length | Exact Max. Length Allowed
-----------------------------------------------------------
TINYTEXT | 256 Bytes | 255 characters
TEXT | 64 Kilobytes | 65,535 characters
MEDIUMTEXT | 16 Megabytes | 16,777,215 characters
LONGTEXT | 4 Gigabytes | 4,294,967,295 characters
Note: Si vous utilisez des caractères multi-octets, la colonne "Exact Max. Longueur permise" aura une longueur différente. Par exemple: si vous utilisez des caractères de 2 octets, la longueur maximale exacte pour TINYTEXT
serait de 127 caractères. En gros, c'est le nombre d'octets autorisés -1.
selon http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html , la limite est L + 2 bytes, where L < 2^16
, ou 64k.
vous ne devriez pas avoir à vous préoccuper de le limiter, il est automatiquement décomposé en morceaux qui sont ajoutés au fur et à mesure que la corde grandit, donc il ne sera pas toujours utiliser aveuglément 64k.
combien de caractères un champ de texte de type peut-il contenir?
selon Documentation vous pouvez utiliser un maximum de 21,844 caractères si le jeu de caractères est UTF8
si beaucoup, est-ce que je pourrais spécifier la longueur dans le champ de type de texte db comme je le ferais avec varchar?
Vous n'avez pas besoin de spécifier la longueur. Si vous avez besoin de plus de caractères utiliser les types de données MÉDIUMTEXT ou LONGTEXT. Avec VARCHAR, la longueur de spécifieng n'est pas pour l'exigence de stockage, il est seulement pour la façon dont les données sont extraites de la base de données.
TINYTEXT 256 bytes TEXT 65,535 bytes ~64kb MEDIUMTEXT 16,777,215 bytes ~16MB LONGTEXT 4,294,967,295 bytes ~4GB
TINYTEXT
est un type de données chaîne qui peut stocker jusqu'à 255
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 brefs.
LONGTEXT
est un type de données chaîne avec une longueur maximale de 4,294,967,295
caractères. Utiliser LONGTEXT
si vous avez besoin de stocker d'importantes du texte, comme un chapitre d'un roman.
TEXT
est un type de données chaîne qui peut stocker jusqu'à 65.535 caractères.
Mais encore si vous voulez stocker plus de données puis changer son type de données à LONGTEXT
ALTER TABLE name_tabel
CHANGE text_field
LONGTEXT CHARACTER SET utf8
COLLATE utf8_general_ci
NOT NULL;
pour la version MySql 8.0.
Exigences De Stockage De Type Numérique
Data Type Storage Required
TINYINT 1 byte
SMALLINT 2 bytes
MEDIUMINT 3 bytes
INT, INTEGER 4 bytes
BIGINT 8 bytes
FLOAT(p) 4 bytes if 0 <= p <= 24, 8 bytes if 25 <= p <= 53
FLOAT 4 bytes
DOUBLE, REAL 8 bytes
DECIMAL(M,D), NUMERIC(M,D) Varies; see following discussion
BIT(M) approximately (M+7)/8 bytes
Les valeurs pour les colonnes décimales (et numériques) sont représentées en utilisant un format binaire qui regroupe neuf décimales (base 10) en quatre octets. Le stockage pour le nombre entier et les parties fractionnaires de chaque valeur sont déterminés séparément. Chaque multiple de neuf chiffres nécessite quatre octets, et les chiffres "restants" nécessitent une fraction de quatre octets. Stockage obligatoire pour les chiffres excédentaires est donné par le tableau suivant.
date et heure Type exigences relatives à l'entreposage 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 on. Ceci est dû à un changement dans 5.6.4 qui permet à ces types d'avoir une partie fractionnaire, qui nécessite de 0 à 3 octets.
Data Type Storage Required Before MySQL 5.6.4 Storage Required as of MySQL 5.6.4
YEAR 1 byte 1 byte
DATE 3 bytes 3 bytes
TIME 3 bytes 3 bytes + fractional seconds storage
DATETIME 8 bytes 5 bytes + fractional seconds storage
TIMESTAMP 4 bytes 4 bytes + fractional seconds storage
à partir de MySQL 5.6.4, le stockage pour L'année et la DATE reste inchangé. Cependant, le temps, le DATETIME et le TIMESTAMP sont représentés différemment. DATETIME est emballé plus efficacement, nécessitant 5 plutôt que 8 bytes pour la partie non fractionnaire, et les trois parties ont une partie fractionnaire qui nécessite de 0 à 3 bytes, selon la précision fractionnaire de secondes des valeurs stockées.
Fractional Seconds Precision Storage Required
0 0 bytes
1, 2 1 byte
3, 4 2 bytes
5, 6 3 bytes
Par exemple, le TEMPS(0), le TEMPS(2), le TEMPS(4) et(6) 3, 4, 5, et 6 octets, respectivement. Temps et temps(0) sont équivalents et nécessitent le même stockage.
pour plus de détails sur la représentation interne des valeurs temporelles, voir MySQL internes: algorithmes et Structures importantes.
Exigences De Stockage Du TypeDans le tableau suivant, M représente la longueur de colonne déclarée en caractères pour les types de chaînes non ordinaires et les octets pour les types de chaînes binaires. L représente la longueur réelle en octets d'une chaîne de valeur.
Data Type Storage Required
CHAR(M) The compact family of InnoDB row formats optimize storage for variable-length character sets. See COMPACT Row Format Characteristics. Otherwise, M × w bytes, <= M <= 255, where w is the number of bytes required for the maximum-length character in the character set.
BINARY(M) M bytes, 0 <= M <= 255
VARCHAR(M), VARBINARY(M) L + 1 bytes if column values require 0 − 255 bytes, L + 2 bytes if values may require more than 255 bytes
TINYBLOB, TINYTEXT L + 1 bytes, where L < 28
BLOB, TEXT L + 2 bytes, where L < 216
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 224
LONGBLOB, LONGTEXT L + 4 bytes, where L < 232
ENUM('value1','value2',...) 1 or 2 bytes, depending on the number of enumeration values (65,535 values maximum)
SET('value1','value2',...) 1, 2, 3, 4, or 8 bytes, depending on the number of set members (64 members maximum)