MySQLタイプのテキストの最大長


437

プライベートメッセージを送信するためのフォームを作成していて、MySQLデータベーステーブルのフィールドのmaxlength最大長に適切なtextarea の値を設定したいと考えていtextます。タイプテキストフィールドにはいくつの文字を格納できますか?

たくさんある場合、varcharの場合と同様に、データベースのテキストタイプフィールドで長さを指定できますか?


5
単純なテキストフィールドに64kと入力しますか?痛みを伴う...
マークB

169
@Marc B大量のゴミをプライベートテキストメッセージフィールドに貼り付けるユーザーの能力を過小評価しないでください。
simontemplar 2013

5
そして、そのため、テキストフィールドの容量を制限し、常に入力を検証する必要があります...
jpangamarca '20

回答:


750

最大数については、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バイトです。


2
@ fyr- L + 2バイトの意味は何ですか?ここで、L <2 ^ 16ですか?もう少し定義していただけませんか?それ以外の場合は、テキストフィールドに格納できる文字数を教えてください。お願いします...
Bajrang

2
@JJ Lは文字数であり、文字数は2から16の累乗未満である必要があります。2^ 16 =65536。つまり、65535バイト+ 3バイト=フルあたり65538バイトを消費する65535文字を入力できます。入力フィールド。
2012

9
サイズ制限はバイト単位であることに注意してください。したがって、マルチバイト文字を使用する場合、TEXTカラムで2 ^ 16文字は取得されませんが、2 ^ 16バイトに格納できる文字数は多くなります。
ビルカーウィン2013年

4
ビル・カーウィンが言ったこと。文字ではなくバイト。文字は、4バイトを使用して、指定されたエンコーディング(UTF-8のlikeなど)で格納できます。
基本

8
MySQLでは、utf8は最大3バイトを消費し、utf8mb4は最大4を消費することに注意してください。参照
mpen

126

TINYTEXT:256バイト
TEXT:65,535バイト
MEDIUMTEXT:16,777,215バイト
LONGTEXT:4,294,967,295バイト


10
受け入れられた回答によると、TINYTEXTは256バイトではなく255バイトにすべきだと思いますか?
cytsunny 2018年

83
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



8

タイプテキストフィールドにはいくつの文字を格納できますか?

ドキュメントによると、文字セットがUTF8の場合、最大21,844文字を使用できます。

たくさんある場合、varcharの場合と同様に、dbテキストタイプフィールドで長さを指定できますか?

長さを指定する必要はありません。さらに文字が必要な場合は、データタイプMEDIUMTEXTまたはLONG​​TEXTを使用してください。VARCHARを使用する場合、指定された長さはストレージ要件ではなく、データベースからデータを取得する方法についてのみです。


8
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,535TEXT簡単な記事によく使用されます。

LONGTEXT最大長の4,294,967,295文字列データ型です。LONGTEXT小説の章など、大きなテキストを保存する必要がある場合に使用します。


1

TEXT最大65,535文字を格納できる文字列データ型です。ただし、さらに多くのデータを保存する場合は、そのデータ型をLONGTEXT

ALTER TABLE name_tabelCHANGE text_fieldLONGTEXT CHARACTER SET utf8COLLATE utf8_general_ciNOT NULL;


1

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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.