文字列型
VARCHARは、 CHAR 、 TEXT BINARYをENUMすべてのBLOB文字列型をSETしVARBINARY 。詳細については、 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] |
| latin1 | 1 | (0、65535] |
| バイナリ | 1 | (0、65535] |
| utf8 | 3 | (0、21845] |
| utf8mb4 | 4 | (0、16383] |
[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]
TEXTタイプ
TEXTは可変長の文字列です。 Mは、0〜65,535の範囲の最大列長を文字数で表します。行の最大長と使用されている文字セットによって、 TEXTの長さが決まります。
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であるということです。
MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
LONGTEXTタイプ
LONGTEXTタイプはTEXTタイプに似ています。違いは、 LONGTEXTの最大列長が4,294,967,295であるということです。ただし、 TiDBの単一列の制限のため、TiDBの単一列の最大ストレージサイズは6MBです。
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であるということです。
MEDIUMBLOB
LONGBLOBタイプ
LONGBLOBタイプはBLOBタイプに似ています。違いは、 LONGBLOBの最大列長が4,294,967,295であるということです。ただし、 TiDBの単一列の制限のため、TiDBの単一列の最大ストレージサイズは6MBです。
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の2進数を使用して表されますSET('a','b','c','d')として指定された列の場合、メンバーには次の10進数値と2進数値があります。
| メンバー | 10進値 | バイナリ値 |
|---|---|---|
| 'a' | 1 | 0001 |
| 'b' | 2 | 0010 |
| 'c' | 4 | 0100 |
| 'd' | 8 | 1000 |
この場合、 ('a', 'c')の要素の場合、バイナリでは0101になります。
詳細については、 MySQLのSETタイプを参照してください。