Максимальная длина для текста типа MySQL - PullRequest
384 голосов
/ 20 июля 2011

Я создаю форму для отправки личных сообщений и хочу установить значение maxlength для текстовой области, соответствующее максимальной длине поля text в моей таблице базы данных MySQL.Сколько символов может хранить текстовое поле типа?

Если много, смогу ли я указать длину в текстовом поле типа базы данных, как при varchar?

Ответы [ 8 ]

683 голосов
/ 20 июля 2011

См. Для максимальных чисел: 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 Kilobytes)
MEDIUMBLOB, MEDIUMTEXT   L + 3 bytes, where L < 2^24   (16 Megabytes)
LONGBLOB, LONGTEXT       L + 4 bytes, where L < 2^32   (4 Gigabytes)

L - количество байтов в вашем текстовом поле. Таким образом, максимальное количество символов для текста составляет 2 16 -1 (с использованием однобайтовых символов). Означает 65 535 символов (с использованием однобайтовых символов).

UTF-8 / кодирование MultiByte : при использовании кодирования MultiByte каждый символ может занимать более 1 байта пространства. Для UTF-8 потребление пространства составляет от 1 до 4 байтов на символ.

118 голосов
/ 25 июля 2013

TINYTEXT: 256 байтов
TEXT: 65 535 байтов
MEDIUMTEXT: 16 777 215 байтов
LONGTEXT: 4 294 967 295 байтов

61 голосов
/ 16 июня 2016
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

Примечание. При использовании многобайтовых символов (например, арабских букв, где каждый символ занимает 2 байта) столбец «Точная максимальная допустимая длина» будет иметь различную длину.Например: если вы используете 2-байтовые символы, точная максимальная длина для TINYTEXT будет 127 символов.По сути это разрешенное число байтов -1.

19 голосов
/ 20 июля 2011

Согласно http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html, ограничение составляет L + 2 bytes, where L < 2^16 или 64 КБ.

Вам не нужно беспокоиться о том, чтобы ограничить его, он автоматически разбивается на куски, которые добавляются по мере роста строки, поэтому он не всегда будет слепо использовать 64k.

8 голосов
/ 27 февраля 2014

Сколько символов может хранить текстовое поле типа?

Согласно Документация Вы можете использовать максимум 21 844 символа, если кодировка UTF8

Если много, смогу ли я указать длину в поле типа текста в БД, как если бы это было с varchar?

Вам не нужно указывать длину.Если вам нужно больше символов, используйте типы данных MEDIUMTEXT или LONGTEXT.В случае VARCHAR заданная длина не для требований к хранилищу, а только для способа извлечения данных из базы данных.

7 голосов
/ 11 июня 2017
TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB

TINYTEXT - это строковый тип данных, который может хранить до 255 символов.

TEXT - это строковый тип данных, который может хранить до 65,535 символов. TEXT обычно используется для кратких статей.

LONGTEXT - это строковый тип данных с максимальной длиной 4,294,967,295 символов. Используйте LONGTEXT, если вам нужно хранить большой текст, например главу романа.

1 голос
/ 27 августа 2018

Для MySql версии 8.0.

Требования к хранилищу числового типа

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

Значения для столбцов DECIMAL (и NUMERIC) представлены в двоичном формате, который содержит девять десятичных знаков (основание 10)цифры в четыре байта.Хранение для целой и дробной частей каждого значения определяется отдельно.Каждое число, кратное девяти цифрам, требует четырех байтов, а оставшиеся цифры требуют некоторой доли четырех байтов.Память, необходимая для избыточных цифр, указана в следующей таблице.

Требования к типу памяти для даты и времени Для столбцов TIME, DATETIME и TIMESTAMP память, необходимая для таблиц, созданных до MySQL 5.6.4, отличается от таблиц, созданных из5.6.4.Это связано с изменением в 5.6.4, которое позволяет этим типам иметь дробную часть, что требует от 0 до 3 байт.

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

Начиная с MySQL 5.6.4, хранилище для YEAR и DATE остаетсябез изменений.Однако TIME, DATETIME и TIMESTAMP представлены по-разному.DATETIME упаковывается более эффективно, для нефракционной части требуется 5, а не 8 байтов, а все три части имеют дробную часть, которая требует от 0 до 3 байтов, в зависимости от точности сохраняемых значений в долях секунды.

Fractional Seconds Precision    Storage Required
0                               0 bytes
1, 2                            1 byte
3, 4                            2 bytes
5, 6                            3 bytes

Например, TIME (0), TIME (2), TIME (4) и TIME (6) используют 3, 4, 5 и 6 байтов соответственно.ВРЕМЯ и ВРЕМЯ (0) эквивалентны и требуют одного и того же хранилища.

Подробнее о внутреннем представлении временных значений см. В разделе Внутренние компоненты MySQL: важные алгоритмы и структуры.

Требования к хранилищу строкового типа вВ следующей таблице M представляет объявленную длину столбца в символах для недвоичных типов строк и байтов для типов двоичных строк.L представляет фактическую длину в байтах данного строкового значения.

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)
1 голос
/ 30 октября 2017

TEXT - это строковый тип данных, который может хранить до 65 535 символов. Но все же, если вы хотите сохранить больше данных, измените их тип данных на LONGTEXT

ALTER TABLE name_tabel CHANGE text_field LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...