MySQLのBLOBデータ型とは?特徴・種類・使い方をわかりやすく解説
MySQLのBLOBデータ型とは
BLOB(Binary Large Object:バイナリラージオブジェクト)とは、可変長の大量データを格納できるMySQLのデータ型です。画像、音声、動画、PDFなどのバイナリファイルをデータベース内に直接保存したい場合によく利用されます。
BLOBデータ型について、押さえておきたい主なポイントは以下の通りです。
- BLOBは、大容量のバイナリデータを格納することを目的としたカラム型(列型)のファミリーです。
- 実際のBLOB型には「TINYBLOB」「BLOB」「MEDIUMBLOB」「LONGBLOB」の4種類があります。
- この4種類は互いに非常によく似ており、違いは格納できるデータの最大サイズだけです。
4種類のBLOB型と最大サイズ
| 型名 | 最大サイズ(バイト) | 目安 |
|---|---|---|
| TINYBLOB | 255バイト(28 − 1) | 約255文字分の小さなデータ |
| BLOB | 65,535バイト(216 − 1) | 約64KB |
| MEDIUMBLOB | 16,777,215バイト(224 − 1) | 約16MB |
| LONGBLOB | 4,294,967,295バイト(232 − 1) | 約4GB |
なお、BLOB型の値はバイナリ文字列(バイト文字列)として扱われます。そのため、文字セット(charset)を持たず、比較やソートはバイト値の数値に基づいて行われるという特徴があります。これは文字セットを持つTEXT型との大きな違いです。
BLOBカラムの宣言例
次の例は、テーブルを作成する際にカラムをBLOB型として定義する方法を示しています。
mysql> Create table stock(ID INT, Name VARCHAR(40), PHOTO BLOB, Quantity INT); Query OK, 0 rows affected (0.15 sec) mysql> Describe stock; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | ID | int(11) | YES | | NULL | | | Name | varchar(40) | YES | | NULL | | | PHOTO | blob | YES | | NULL | | | Quantity | int(11) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 4 rows in set (0.03 sec)
この例では、在庫情報を管理する「stock」テーブルの「PHOTO」カラムをBLOB型として定義しています。DESCRIBE文でテーブル構造を確認すると、PHOTOカラムの型が「blob」として登録されていることがわかります。
まとめ
BLOB型は、画像やファイルなどの大容量バイナリデータをMySQLに保存するための重要なデータ型です。保存したいデータの想定サイズに応じて、TINYBLOB・BLOB・MEDIUMBLOB・LONGBLOBの4種類から適切なものを選択しましょう。ただし、大容量データをデータベースに直接保存するとパフォーマンスやバックアップに影響を与える場合があるため、運用規模に応じて設計することが大切です。
-
C++のプリミティブデータ型(基本データ型)とは?6つの型をわかりやすく解説
プリミティブ型とはプリミティブ型(基本データ型)とは、表現できる値の性質が非常に単純なデータ型のことです。具体的には、数値・文字・真偽値といった基本的な値を扱います。プリミティブ型は、あらゆるプログラミング言語における最も基本的な構成要素であり、これらを組み合わせることで、配列や構造体などのより複雑なデータ型が作られています。C++を学ぶうえで、まず最初に押さえておきたい重要な概念です。C++の主なプリミティブデータ型C++には、以下の6種類のプリミティブデータ型が用意されています。番号型名説明1booltrueまたはfalseのいずれかの真偽値を格納します。2char通常は1オクテット(1バ
-
C#の参照型とは?object・dynamic・stringの3つの組み込み参照型を解説
C#における参照型(参照データ型)は、変数そのものに実際のデータを格納するのではなく、データが存在するメモリ上の場所への「参照」を保持する型です。これに対して、intやdoubleなどの値型は、変数に直接値を格納します。C#には、あらかじめ用意されている組み込みの参照型として、次の3つがあります。1. object型object型は、C#の共通型システム(CTS:Common Type System)におけるすべてのデータ型の最終的な基底クラスです。そのため、値型・参照型を問わず、事前定義された型でもユーザー定義の型でも、あらゆる型の値を代入できます。例object ob; ob = 250;