[Python] PyMySQL - TINYINT 자료형

KangHo Lee's avatar
Jun 10, 2025
[Python] PyMySQL - TINYINT 자료형
TINYINT(1)은 MySQL에서 자주 보이는 표현이지만, 많은 분들이 헷갈려 하는 부분입니다.
MySQL에서의 TINYINT(1) 의미를 정확히 설명드릴게요.

✅ 1. TINYINT란?

  • TINYINT1바이트 정수형 타입입니다.
  • 저장 가능한 값:
종류
범위
부호 있음 (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

devleekangho