🤔 Question
👉 INT(4)와 INT(12)의 차이는 많은 사람들이 혼동할 수 있지만, **숫자의 크기와는 관계가 없고, 표현 형식(디스플레이 길이)**과 관련이 있습니다. 이 차이는 주로 MySQL에서 나타나며, 다른 DBMS에서는 의미가 없거나 동작 방식이 다를 수 있습니다.
🎯 숫자 크기와의 관계
👉 INT의 숫자 범위는 고정적입니다. 즉, INT 자체는 4바이트(32비트) 정수 타입으로, 크기에 관계없이 -2,147,483,648 ~ 2,147,483,647의 값을 저장할 수 있습니다. 따라서 INT(4)나 INT(12)는 저장 가능한 숫자의 범위에 아무 영향을 미치지 않습니다.
🎯 굳이 말하자면, 디스플레이 길이의 제한
👉 디스플레이 길이(INT(M))는 MySQL의 ZEROFILL 옵션을 사용하지 않으면 아무 효과도 없습니다.
예를 들어, ZEROFILL 없이 INT(4)와 INT(12)를 사용하면 그냥 일반적인 정수처럼 출력됩니다(즉, 42는 42로 표시됨).
ZEROFILL을 사용하는 경우:
CREATE TABLE example (
id INT(4) ZEROFILL
);
값이 88라면 출력은 0088가 됩니다.
🎯 표현 형식(디스플레이 길이)
👉 숫자 뒤의 숫자(예: 4, 12)는 디스플레이 길이를 의미하며, 이는 해당 숫자가 출력될 때 최소한으로 표시되는 자리수를 나타냅니다. 예: INT(4)는 숫자를 최소 4자리로 출력하려고 하며, 숫자가 4자리보다 작으면 0으로 채워 표시됩니다.
값이 42라면 출력 시 0042로 표시됩니다.
INT(12)는 최소 12자리로 출력하려고 합니다.
값이 42라면 출력 시 000000000042로 표시됩니다.
🎯 MySQL 8.0에서의 변화
👉 MySQL 8.0.17 이후, 디스플레이 길이(INT(M))는 더 이상 지원되지 않습니다. 즉, INT, INT(4), INT(12) 모두 동일하게 동작하며, 더 이상 디스플레이 길이를 설정할 수 없습니다.
☔ 정리
👉 INT(4)와 INT(12)의 차이는 저장 가능한 숫자의 범위와는 무관하며, 단지 출력 형식(디스플레이 길이)에 영향을 줍니다. MySQL 8.0.17 이상에서는 더 이상 의미가 없으니 그냥 INT로 사용하면 됩니다.
If I was of any help to you, please buy me coffee 😿😢😥
If you have any questions, please leave them in the comments
[2] Ads : https://play.google.com/store/apps/details?id=io.cordova.seoulfilter