BLOB型とTEXT型

MySQL で利用可能なデータ型の中で文字列型の BLOB 型と TEXT 型の使い方について解説します。

(Last modified: )

BLOB型とTEXT型について

BLOG 型及び TEXT 型はそれぞれ巨大なバイナリデータとテキストデータを格納する時に利用されます。

BLOB 型はバイナリデータを扱うデータ型で格納できるデータのサイズを指定しません。画像ファイルなどを格納する場合などにも使われます。ただ最大長は決まっており、最大長の種類によって次の 4 つが用意されています。

TINYBLOB
最大長が 255 (28 ? 1) バイト。

BLOB[(M)]
最大長が 65,535 (216 ? 1) バイト。
オプションの長さ M を指定できる。

MEDIUMBLOB
最大長が 16,777,215 (224 ? 1) バイト。

LONGBLOB
最大長が 4,294,967,295 または 4G バイト (232 ? 1) バイト。

BLOB 型は VARBINARY 型で格納できるバイト数を指定しなかったものと考えて頂けば結構です。( VARBINARY 型については「BINARY型とVARBINARY型」を参照して下さい)。データはバイナリデータとしてそのまま格納されます。

TEXT 型は文字列データを扱うデータ型で格納できるデータのサイズを指定しません。ただ最大長は決まっており、最大長の種類によって次の 4 つが用意されています。なお各データ型とも値にマルチバイト文字が含まれる場合、有効な最大長は少なくなります。

TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
値にマルチバイト文字が含まれる場合、有効な最大長は少なくなります。

TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
最大長が 65,535 (216 ? 1) 文字。
オプションの長さ M を指定できる。

MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
最大長が 16,777,215 (224 ? 1) 文字。

LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
最大長が 4,294,967,295 または 4G バイト (232 ? 1) 文字。

TEXT 型は VARCHAR 型で格納できるバイト数を指定しなかったものと考えて頂けば結構です。(VARCHAR型については「CHAR型とVARCHAR型」を参照して下さい)。データは文字列データとして格納されます。

-- --

ではBLOB型のカラムとTEXT型のカラムを持つテーブルを作成してみます。

create table strtest(str1 blob, str2 text);

BLOB型とTEXT型について(1)

次のようなデータを追加します。

insert into strtest values(0x48656C6C6F, 'Hello');

BLOB型とTEXT型について(2)

データを追加した後でテーブルのデータを取得してみます。

select * from strtest;

BLOB型とTEXT型について(3)

巨大なデータを取り扱えるという点を除けばVARBINARY型とVARCHAR型と同じように扱えます。

文字セットと照合順序

TEXT 型は文字セットと照合順序を指定することができます。使い方は次の通りです。

TEXT [CHARACTER SET 文字セット] [COLLATE 照合順序]

使用可能な文字セットや照合順序など使い方は VARCHAR 型と同じです。詳しくは「文字セットと照合順序を指定する」を参照されてください。

-- --

MySQL で利用可能なデータ型の中で文字列型の LOB 型と TEXT 型の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。