TINYINT(1)
은 MySQL에서 자주 보이는 표현이지만, 많은 분들이 헷갈려 하는 부분입니다.MySQL에서의
TINYINT(1)
의미를 정확히 설명드릴게요.✅ 1. TINYINT
란?
TINYINT
는 1바이트 정수형 타입입니다.
- 저장 가능한 값:
종류 | 범위 |
부호 있음 (SIGNED) | –128 ~ 127 |
부호 없음 (UNSIGNED) | 0 ~ 255 |
✅ 2. (1)
의 의미는 숫자의 "표현 폭" (display width)
TINYINT(1) → 숫자를 '1자리로 보여달라'는 의미일 뿐, 실제 저장 크기나 값 범위와는 관계 없습니다.
- 중요: MySQL 8.0부터는 이
display width
는 사라졌거나 무시됩니다.
즉, TINYINT(1)과 TINYINT, TINYINT(3) 모두 동일한 데이터 타입입니다.
✅ 3. 왜 TINYINT(1)
을 Boolean처럼 쓸까?
- MySQL에는 원래
BOOLEAN
타입이 없었습니다.
- 그래서
BOOLEAN
을 쓰면 자동으로TINYINT(1)
으로 변환됩니다.
CREATE TABLE test (flag BOOLEAN);
-- 내부적으로는 아래와 동일함
CREATE TABLE test (flag TINYINT(1));
- 그래서
TINYINT(1)
은 0 또는 1만 저장하는 불리언 용도로 자주 사용됩니다.
🔍 정리
표현 | 실제 의미 | 비고 |
TINYINT(1) | 1바이트 정수, display width 1 | MySQL 8.0 이상에선 무시됨 |
TINYINT | 그냥 1바이트 정수 | 가장 정확한 표기 |
BOOLEAN | 자동으로 TINYINT(1) 으로 변환됨 | 내부적으로 동일 |
✅ 결론
TINYINT(1)은 불리언(0 또는 1)처럼 사용하기 좋은 MySQL 타입이지만, (1)은 실제 저장 크기와는 관련 없습니다.
실무에서는
is_active
, is_admin
, deleted
같은 불리언 성격의 필드를 위해 TINYINT(1)
또는 TINYINT
를 많이 사용합니다.Share article