MySQL에서 대용량 데이터를 저장할 때 자주 사용되는 두 가지 데이터 타입이 바로 BLOB와 TEXT입니다. 두 타입 모두 큰 데이터를 저장할 수 있지만, 저장하는 데이터의 성격과 내부 동작 방식에서 중요한 차이가 있습니다.
BLOB(Binary Large Object)란?
BLOB는 Binary Large Object(바이너리 대형 객체)의 약자로, 이름 그대로 이진(binary) 데이터를 저장하는 데 사용됩니다. 따라서 이미지, 동영상, 사운드 파일, 실행 프로그램 등 다양한 바이너리 형식의 데이터를 저장할 수 있습니다.
예를 들어 아래와 같은 이미지 파일은 바이너리 데이터로 구성되어 있기 때문에 BLOB 컬럼에 그대로 저장할 수 있습니다.

BLOB와 TEXT의 핵심 차이점
BLOB 값은 바이트 문자열(byte string)처럼 동작하며 문자셋(character set)이 없습니다. 따라서 BLOB 값의 비교와 정렬은 오직 각 바이트의 숫자 값(numeric byte value)에만 의존합니다.
반면 TEXT 값은 비(非)바이너리 문자열, 즉 일반 문자열(character string)처럼 동작합니다. TEXT에는 문자셋이 존재하며, 값의 비교와 정렬은 해당 문자셋에 설정된 콜레이션(collation) 규칙에 따라 결정됩니다.
정리하면 다음과 같습니다.
- BLOB: 바이너리 데이터 전용, 문자셋 없음, 바이트 값 기준으로 비교·정렬
- TEXT: 문자열 데이터 전용, 문자셋 존재, 콜레이션 기준으로 비교·정렬
TEXT 데이터 타입으로 테이블 생성하기
다음 예제는 TEXT 타입의 컬럼을 가진 테이블을 생성하는 방법입니다.
mysql> create table TextTableDemo -> ( -> Address TEXT -> ); Query OK, 0 rows affected (0.58 sec)
DESC 명령어를 사용하여 테이블 구조를 확인해 보겠습니다.
mysql> DESC TextTableDemo;
실행 결과는 다음과 같습니다.
+---------+------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+------+------+-----+---------+-------+ | Address | TEXT | YES | | NULL | | +---------+------+------+-----+---------+-------+ 1 row in set (0.08 sec)
위 출력 결과에서 'Type' 열은 해당 컬럼의 데이터 타입이 TEXT임을 보여줍니다.
BLOB 데이터 타입으로 테이블 생성하기
이번에는 BLOB 타입의 컬럼을 가진 테이블을 생성해 보겠습니다.
mysql> create table BlobTableDemo -> ( -> Images BLOB -> ); Query OK, 0 rows affected (0.51 sec)
마찬가지로 DESC 명령어로 테이블 구조를 확인합니다.
mysql> desc BlobTableDemo;
실행 결과는 다음과 같습니다.
+--------+------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+------+------+-----+---------+-------+ | Images | BLOB | YES | | NULL | | +--------+------+------+-----+---------+-------+ 1 row in set (0.04 sec)
출력 결과의 'Type' 열을 통해 해당 컬럼의 데이터 타입이 BLOB임을 확인할 수 있습니다.
참고: BLOB와 TEXT의 크기별 종류
BLOB와 TEXT는 각각 네 가지 하위 타입을 제공하며, 저장할 수 있는 최대 크기가 서로 다릅니다.
- TINYBLOB / TINYTEXT: 최대 255바이트
- BLOB / TEXT: 최대 65,535바이트(약 64KB)
- MEDIUMBLOB / MEDIUMTEXT: 최대 16,777,215바이트(약 16MB)
- LONGBLOB / LONGTEXT: 최대 4,294,967,295바이트(약 4GB)
저장하려는 데이터의 크기와 성격(바이너리 여부)을 고려하여 적절한 타입을 선택하는 것이 중요합니다.