Максимальная длина для текста типа MySQL
Я создаю форму для отправки личных сообщений и хотите установить maxlength
значение textarea, соответствующее максимальной длине text
поле в моей таблице базы данных MySQL. Сколько символов может хранить текстовое поле типа?
Если много, смогу ли я указать длину в поле текстового типа базы данных, как это было бы с varchar?
8 ответов
см. для максимальных чисел: 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-количество байтов в текстовом поле. Поэтому maximmum количество символов для текста-216-1 (с использованием однобайтовых символов). Означает 65 535 символов (с использованием однобайтовых символов).
UTF-8 / многобайтовое кодирование: при использовании Многобайтовой кодировки каждый символ может занимать более 1 байта пространства. Для космоса UTF-8 расход составляет от 1 до 4 байт на символ.
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
Примечание: при использовании многобайтовых символов столбец " Exact Max. Длина разрешена" будет иметь разную длину. Например: если вы используете 2-байтовые символы, точная максимальная длина для TINYTEXT
будет 127 символов. В принципе, это количество байтов, разрешенных -1.
согласно http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html, предел L + 2 bytes, where L < 2^16
, или 64k.
вам не нужно беспокоиться об ограничении его, он автоматически разбивается на куски, которые добавляются по мере роста строки, поэтому он не всегда будет слепо использовать 64k.
сколько символов может хранить текстовое поле типа?
по данным документация вы можете использовать максимум 21,844 символов, если кодировка UTF8
Если много, смогу ли я указать длину в поле текстового типа db, как это было бы с varchar?
вам не нужно указывать длину. Если вам нужно больше символов, используйте типы данных MEDIUMTEXT или LONGTEXT. С varchar, длина указав ключ не для Требование хранения, только для того, как данные извлекаются из базы данных.
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
если вам нужно хранить большой текст, например главу из романа.
TEXT
- строковый тип данных, который может хранить до 65 535 символов.
Но все же, если вы хотите сохранить больше данных, измените его тип данных на LONGTEXT
ALTER TABLE name_tabel
изменить text_field
НАБОР СИМВОЛОВ LONGTEXT utf8
сличить utf8_general_ci
NOT NULL;
для 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
значения для десятичных (и числовых) столбцов представлены с использованием двоичного формата, который упаковывает девять десятичных (базовых 10) цифр в четыре байта. Хранение целых и дробных частей каждого значения определяется отдельно. Для каждого кратного девяти цифр требуется четыре байта, а для" оставшихся " цифр требуется некоторая доля четырех байтов. Дано хранилище, необходимое для избыточных цифр по следующей таблице.
требования к хранения типа даты и времени Для столбцов TIME, DATETIME и TIMESTAMP хранилище, необходимое для таблиц, созданных до MySQL 5.6.4, отличается от таблиц, созданных от 5.6.4 on. Это связано с изменением в 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, хранилище для года и даты остается неизменным. Однако, время, ДАТАВРЕМЯ, и 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 Internals: важные алгоритмы и структуры.
Требования К Хранению Типа Строки В следующей таблице 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)