MySQL에서 TEXT 데이터 타입은 데이터베이스에 긴 형태의 텍스트 문자열을 저장할 때 유용하게 사용되는 데이터 객체입니다. 게시글 본문, 상품 설명, 댓글처럼 VARCHAR로는 담기 어려운 대용량 문자 데이터를 다룰 때 적합합니다.
TEXT 데이터 타입의 주요 특징
- TEXT는 대용량 문자 저장을 목적으로 설계된 컬럼 타입 계열입니다.
- 실제 TEXT 타입은 네 가지로 나뉩니다 — TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT.
- 네 가지 타입은 서로 매우 유사하며, 유일한 차이점은 각각 저장할 수 있는 최대 데이터 크기입니다.
- 가장 작은 타입인 TINYTEXT는 VARCHAR와 동일한 문자 길이(255자)를 가집니다.
- TEXT 값은 문자열(character string)로 취급됩니다.
- TEXT는 바이너리가 아닌 별도의 문자셋(character set)과 콜레이션(collation)을 가질 수 있습니다.
- 비교와 정렬은 해당 컬럼의 문자셋 콜레이션 규칙을 기준으로 수행됩니다.
- TEXT 컬럼에 삽입되는 값의 뒤쪽 공백(trailing space)이 잘리는 경우, SQL 모드와 관계없이 항상 경고(warning)가 발생합니다.
- TEXT 계열 컬럼은 사용 방식이 VARCHAR와 거의 비슷하지만, 몇 가지 제약이 있습니다.
- TEXT 컬럼에는 DEFAULT 값을 지정할 수 없습니다.
TEXT 타입별 최대 저장 용량
| 타입 | 최대 크기 | 저장 가능한 내용 예시 |
|---|---|---|
| TINYTEXT | 255바이트 | 짧은 문장, 요약문 |
| TEXT | 65,535바이트 (약 64KB) | 블로그 글, 짧은 기사 |
| MEDIUMTEXT | 16,777,215바이트 (약 16MB) | 책 한 권 분량의 텍스트 |
| LONGTEXT | 4,294,967,295바이트 (약 4GB) | 대용량 로그, 장편 문서 |
TEXT 컬럼 선언 예제
다음 예제는 테이블 생성 시 하나의 컬럼을 TEXT 타입으로 선언하는 방법을 보여줍니다.
mysql> Create table magzine(id INT, title Varchar(25), Introduction TEXT); Query OK, 0 rows affected (0.16 sec) mysql> Describe magzine; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | title | varchar(25) | YES | | NULL | | | Introduction | text | YES | | NULL | | +--------------+-------------+------+-----+---------+-------+ 3 rows in set (0.11 sec)
위 결과를 보면 Introduction 컬럼이 text 타입으로 정상적으로 생성된 것을 확인할 수 있습니다. 이처럼 저장해야 할 텍스트의 예상 길이에 맞춰 적절한 TEXT 타입을 선택하면, 스토리지를 효율적으로 활용하면서 안정적으로 대용량 문자 데이터를 관리할 수 있습니다.