プライベートメッセージを送信するためのフォームを作成していて、MySQLデータベーステーブルのフィールドのmaxlength
最大長に適切なtextarea の値を設定したいと考えていtext
ます。タイプテキストフィールドにはいくつの文字を格納できますか?
たくさんある場合、varcharの場合と同様に、データベースのテキストタイプフィールドで長さを指定できますか?
プライベートメッセージを送信するためのフォームを作成していて、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(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バイトを取る)を使用している場合、「許可される正確な最大長」の列はTINYTEXT
最大127アラビア文字を保持できます(注:スペース、ダッシュ、アンダースコア、およびその他の文字) 、半角文字です)。
基本的には次のようなものです。
「許可されている正確な最大長」=「およその長さ」(バイト単位)-1
た内容に応じて、http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html、制限があるL + 2 bytes, where L < 2^16
、または64K。
制限することを気にする必要はありません。文字列が大きくなると自動的にチャンクに分割されるため、常に64kを盲目的に使用するわけではありません。
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進数(基数10)の9桁を4バイトにパックするバイナリ形式を使用して表されます。各値の整数部分と小数部分のストレージは、別々に決定されます。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)