MySQL BLOB 데이터 타입이란?
BLOB(Binary Large Object, 바이너리 대형 객체)은 가변적인 크기의 데이터를 저장할 수 있는 MySQL 데이터 타입입니다. 주로 이미지, 오디오, 비디오 파일 등 바이너리 데이터를 데이터베이스에 직접 저장할 때 사용됩니다.
BLOB의 주요 특징
- BLOB은 대용량 바이너리 데이터 저장을 위해 설계된 컬럼 타입 계열입니다.
- BLOB은 실제로 네 가지 타입으로 나뉩니다: TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB.
- 네 가지 타입은 서로 매우 유사하며, 유일한 차이점은 각각 저장할 수 있는 최대 데이터 크기입니다.
BLOB 타입별 최대 저장 용량
| 타입 | 최대 크기 |
|---|---|
| TINYBLOB | 255바이트 (2⁸ − 1) |
| BLOB | 65,535바이트, 약 64KB (2¹⁶ − 1) |
| MEDIUMBLOB | 16,777,215바이트, 약 16MB (2²⁴ − 1) |
| LONGBLOB | 4,294,967,295바이트, 약 4GB (2³² − 1) |
참고로 BLOB과 짝을 이루는 텍스트 계열 타입으로 TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT가 있으며, 이들은 문자 데이터를 저장한다는 점에서 BLOB과 대비됩니다.
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)
위 예제에서 PHOTO 컬럼이 BLOB 타입으로 선언되어 상품 사진 같은 바이너리 이미지 데이터를 저장할 수 있습니다. DESCRIBE 명령 결과에서 PHOTO 컬럼의 타입이 'blob'으로 표시되는 것을 확인할 수 있습니다.