文字列型

TiDB は、 CHARVARCHARBINARYVARBINARYBLOBTEXTENUMSETを含むすべての MySQL 文字列タイプをサポートします。詳細については、 MySQL の文字列型参照してください。

サポートされているタイプ

CHAR

CHARは固定長の文字列です。 M は列の長さを文字数 (バイト数ではなく) で表します。 M の範囲は 0 ~ 255 です。タイプVARCHARとは異なり、データがCHAR列に挿入される場合、末尾のスペースは切り捨てられます。

[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

VARCHAR

VARCHARは可変長の文字列です。 M は列の最大長を文字数 (バイト数ではなく) で表します。 VARCHARの最大サイズは 65,535 バイトを超えることはできません。行の最大長と使用されている文字セットによってVARCHARさが決まります。

1 つの文字が占めるスペースは、文字セットによって異なる場合があります。次の表は、1 つの文字によって消費されるバイト数と、各文字セットのVARCHAR列の長さの範囲を示しています。

キャラクターセット1 文字あたりのバイト数最大VARCHARカラム長の範囲
アスキー1(0, 65535]
ラテン語11(0, 65535]
バイナリ1(0, 65535]
utf83(0, 21845]
utf8mb44(0, 16383]
[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]

TEXTタイプ

TEXTは可変長の文字列です。列の最大長は 65,535 バイトです。オプションの M 引数は文字単位であり、 TEXT列の最も適合するタイプを自動的に選択するために使用されます。たとえばTEXT(60) 、最大 255 バイトを保持できるTINYTEXTデータ型を生成します。これは、1 文字あたり最大 4 バイトの 60 文字の UTF-8 文字列に適合します (4×60=240)。 M 引数の使用はお勧めできません。

TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

TINYTEXT

TINYTEXTタイプはTEXTタイプと似ています。違いは、 TINYTEXTの最大列長が 255 であることです。

TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

MEDIUMTEXT

MEDIUMTEXTタイプはTEXTタイプと似ています。違いは、 MEDIUMTEXTの最大列長が 16,777,215 であることです。ただし、 txn-entry-size-limitの制限により、TiDB の単一行の最大storageサイズはデフォルトで 6 MiB ですが、構成を変更することで 120 MiB まで増やすことができます。

MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

LONGTEXT

LONGTEXTタイプはTEXTタイプと似ています。違いは、 LONGTEXTの最大列長が 4,294,967,295 であることです。ただし、 txn-entry-size-limitの制限により、TiDB の単一行の最大storageサイズはデフォルトで 6 MiB ですが、構成を変更することで 120 MiB まで増やすことができます。

LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

BINARY

BINARYタイプはCHARと似ています。違いは、 BINARYバイナリ バイト文字列を格納することです。

BINARY(M)

VARBINARY

VARBINARYタイプはVARCHARと似ています。違いは、 VARBINARYバイナリ バイト文字列を格納することです。

VARBINARY(M)

BLOBタイプ

BLOBは大きなバイナリ ファイルです。 M は列の最大長をバイト単位で表し、範囲は 0 ~ 65,535 です。

BLOB[(M)]

TINYBLOB

TINYBLOBタイプはBLOBタイプと似ています。違いは、 TINYBLOBの最大列長が 255 であることです。

TINYBLOB

MEDIUMBLOBタイプ

MEDIUMBLOBタイプはBLOBタイプと似ています。違いは、 MEDIUMBLOBの最大列長が 16,777,215 であることです。ただし、 txn-entry-size-limitの制限により、TiDB の単一行の最大storageサイズはデフォルトで 6 MiB ですが、構成を変更することで 120 MiB まで増やすことができます。

MEDIUMBLOB

LONGBLOB

LONGBLOBタイプはBLOBタイプと似ています。違いは、 LONGBLOBの最大列長が 4,294,967,295 であることです。ただし、 txn-entry-size-limitの制限により、TiDB の単一行の最大storageサイズはデフォルトで 6 MiB ですが、構成を変更することで 120 MiB まで増やすことができます。

LONGBLOB

ENUMタイプ

ENUMは、テーブルの作成時に列仕様で明示的に列挙される許可された値のリストから選択された値を持つ文字列オブジェクトです。構文は次のとおりです。

ENUM('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name] # For example: ENUM('apple', 'orange', 'pear')

ENUMデータ型の値は数値として保存されます。各値は定義順序に従って数値に変換されます。前の例では、各文字列が数値にマップされます。

価値番号
ヌルヌル
0
'りんご'1
'オレンジ'2
''3

詳細については、 MySQL の ENUM 型を参照してください。

SETタイプ

SETは、0 個以上の値を持つことができる文字列オブジェクトであり、それぞれの値は、テーブルの作成時に指定された許可される値のリストから選択する必要があります。構文は次のとおりです。

SET('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name] # For example: SET('1', '2') NOT NULL

この例では、次のいずれかの値が有効です。

'' '1' '2' '1,2'

TiDB では、 SET型の値は内部でInt64に変換されます。各要素の存在は、0 または 1 のバイナリを使用して表されます。 SET('a','b','c','d')として指定された列の場合、メンバーは次の 10 進値とバイナリ値を持ちます。

メンバー10 進数値バイナリ値
「あ」10001
「b」20010
「c」40100
「だ」81000

この場合、要素が('a', 'c')の場合、2 進数では0101になります。

詳細については、 MySQL の SET タイプを参照してください。

このページは役に立ちましたか?