私はプライベートメッセージを送信するためのフォームを作成していて、私のMySQLデータベーステーブルのmaxlength
フィールドの最大長に適切なtextareaのtext
値を設定したいです。テキストフィールドに格納できる文字数はいくつですか。
多くの場合、varcharの場合と同じように、データベースのテキスト型フィールドに長さを指定できますか?
最大数については、次を参照してください。 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文字あたり1から4バイトです。
TINYTEXT:256バイト
TEXT:65,535バイト
MEDIUMTEXT:16,777,215バイト
LONGTEXT:4,294,967,295バイト
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バイトをとるアラビア文字のように)、列 "Exact Max。Length Allowed"の長さは異なります。たとえば、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を使用するわけではありません。
テキストフィールドに格納できる文字数はいくつですか。
Documentation に従う文字セットがUTF8の場合、最大21,844文字まで使用できます。
多くの場合、varcharと同じようにdb text typeフィールドで長さを指定できますか?
長さを指定する必要はありません。もっと文字が必要な場合は、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
を使用してください。
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)列の値は、9進数(10進数)の数字を4バイトにパックする2進形式を使用して表されます。各値の整数部と小数部の記憶域は別々に決定されます。 9桁の各倍数には4バイトが必要で、「残りの」桁には4バイトのごく一部が必要です。超過桁数に必要なストレージは、次の表に示されています。
日付と時刻型の記憶域要件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はより効率的にパックされ、非小数部分には8バイトではなく5バイトが必要です。また、格納されている値の小数秒精度に応じて、3つの部分すべてに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バイトを使用します。 TIMEとTIME(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)
TEXT
は最大65,535文字を格納できる文字列データ型です。しかし、もっと多くのデータを保存したいのであれば、そのデータ型をLONGTEXT
に変更してください。
ALTER TABLE name_tabel
変更text_field
LONGTEXT文字セットutf8
COLLATE utf8_general_ci
NOT NULL。