MySQLに画像、動画、PDFを保存する時の型式は?

結論を言うとMySQL画像、動画、PDFを保存する時はBLOB型を使用します。
 
今まで、画像、動画はBLOB型に保存した事はあったのですが、PDFファイルを保存した事がなかったので、ちょっと調べてみました。

その時の情報です。Blob型とTEXT型のどちらに保存すれば良いのか迷っている方はご参考にどうぞ。
 

BLOB型

BLOB型はバイナリデータを扱うデータ型です。画像、動画、PDFファイルなどを保存する際はこちらの型式を使用します。最大長により以下の型式を変更します。

型 式 最大長 補 足
TINYBLOB 255バイト
BLOB(M) 65,535バイト この型にはオプションで長さMを指定できます。Mバイトを保持するのに十分な、最小のBLOB型カラムを作成します。
MEDIUMBLOB 16,777,215バイト
LONGBLOB 4,294,967,295バイト

ちなみに、筆者がよく使うのはMEDIUMBLOBです。このカラムに100KバイトのPDFを保存しても、乱暴に言うと100Kバイトしか使用されません。16Mバイト全部使用される訳ではないのでご心配なく。(細かい事を言うと100Kバイトだけではなくプリフィクスやらなんやらでもう少し大きくなります) 

 

TEXT型

TEXT型は文字列データを扱うデータ型です。以下に記載している各々の型式により保存できる容量がきまっているので、最大長を考慮して、テキストデータを保存しましょう。

型 式 最大長 補 足
TINYTEXT 255バイト ※1
TEXT(M) 65,535バイト この型にはオプションで長さMを指定できます。Mバイトを保持するのに十分な、最小のBLOB型カラムを作成します。※1
MEDIUMTEXT 16,777,215バイト ※1
LONGTEXT 4,294,967,295バイト ※1

※1・・・値にマルチバイト文字列が含まれる場合、有効な最大長は少なくなります。