-
[MySql] tinyInt(4), ZEROFILLback-end/MySQL 2021. 10. 1. 17:40
목표
- MySql 테이블 타입 생성 시 괄호에 있는 숫자 의미
- ZEROFILL
배경
- 사내에서 MySql을 사용하고 있는데 DB를 생성해야 할 일이 생겼다.
- 이때 ON/OFF, 0 ~ 100의 범위를 가지는 용도의 칼럼을 선언할 때
`use_animation` tinyint(4) unsigned DEFAULT 0 COMMENT '애니메이션 사용 여부',
`sound_volume` tinyint(4) unsigned DEFAULT 0 COMMENT '소리 크기',- 위와 같은 방식으로 형태를 사용하는데, 팀원 중 한 명이 `tinyint(4)`의 숫자 4의 의미가 뭔지 물어보셨다.
- 길이가 4인 데이터라고 말씀은 드렸는데, 돌아오는 질문은 다음과 같았다.
그러면 sound_volume에 길이가 4인 9999 값이 들어갈 수 있는가?
tinyint에 들어갈 수 있는 데이터는 -127 ~ 127인데... 9999는 못 들어 가는데요??
어? 그러면 길이 4는 어떤 거 때문에 선언하는 걸까??
내용
- 정수 타입의 데이터를 선언 시에 뒤의 길이 지정은 ZEROFILL 옵션이 없으면 아무런 의미가 없다.
- tinyint(1), tinyint(100) 모두 들어갈 수 있는 데이터는 -127 ~ 127까지 숫자이다.
- ZEROFILL 옵션은 ZERO + FILL로 0을 채워 넣는다는 의미이다.
- 만약 tinyInt(5) ZEROFILL 인경우에 데이터가 1이 들어온다면 TABLE에는 00001로 저장되게 된다.
- 즉 정수 타입에서 길이의 값은 아무런 의미가 없다.
정리 및 느낀 점
- 정수 타입에서 길이의 값은 ZEROFILL이 활성화되어 있지 않으면 의미가 없다.
참조
https://www.three-snakes.com/mysql/tinyint(1)-vs-tinyint(4)
728x90