상세 컨텐츠

본문 제목

MySQL INT(11), 넌 대체 뭐니? (홈페이지 제작자가 알려주는 꿀팁)

홈페이지 제작/서버관련

by WEBsiting 2025. 10. 14. 12:53

본문

데이터베이스 작업을 하다 보면 꼭 마주치게 되는 녀석이 있죠? 바로 INT(11)입니다. 괄호 안의 숫자 11 때문에 '11자리까지만 저장되는 건가?' 하고 헷갈리는 분들이 정말 많아요.

오늘은 이 INT(11)의 진짜 의미와, 우리가 왜 이 타입을 습관처럼 사용하게 되었는지, 그리고 안정적인 웹사이트 개발을 위해 어떻게 활용해야 하는지 쉽고 친절하게 알려드릴게요!

1. 핵심 요약: INT는 저장 범위, (11)은 표시 형식!

결론부터 말씀드리자면, MySQL에서 INT(11)을 정의했을 때, 가장 중요한 것은 INT 부분입니다!

구분 INT (데이터 타입) (11) (표시 길이)
진짜 역할 데이터의 저장 공간(4바이트)과 저장 범위를 결정합니다. ZEROFILL 옵션 사용 시 앞에 0을 채워 넣을 때의 자릿수를 지정합니다.
저장 범위 약 21억까지 (SIGNED, 부호 포함) 또는 약 42억까지 (UNSIGNED, 양수만) 실제 저장되는 값의 최대 크기에는 영향을 주지 않습니다!
 

왜 4바이트가 약 21억일까요? (개발 상식 Up!)

INT는 4바이트(32비트) 공간을 사용합니다.

  • 부호 있는 정수 (SIGNED): 부터
    • $2^{31}$은 약 21억입니다. 한 비트는 부호(양수/음수)를 저장하는 데 사용되죠.
  • 부호 없는 정수 (UNSIGNED): 부터
    • 홈페이지 회원 ID게시글 번호처럼 음수가 필요 없는 곳에는 UNSIGNED를 쓰는 것이 데이터의 안정성 측면에서 더 좋습니다! 최대 42억 개까지 ID를 만들 수 있거든요.

2. 그럼 (11)은 대체 왜 붙이는 건가요?

A. 관습적인 이유

부호 있는 INT의 최대값 10자리 숫자입니다. 만약 음수를 저장한다고 가정하면, 앞에 마이너스 부호(-)까지 포함해서 11자리가 필요하게 됩니다.

그래서 INT(11)은 "INT 타입이 가질 수 있는 모든 자릿수(부호 포함)를 표현할 수 있는 길이"라는 의미로 관습처럼 굳어져서 사용하게 된 것이랍니다!

B. ZEROFILL과의 관계 (이해하면 개발 고수!)

INT(11)은 단독으로 쓸 때는 아무 의미가 없지만, ZEROFILL이라는 옵션과 함께 쓸 때 제 역할을 합니다.

SQL 정의 저장된 값이 123일 때의 출력
INT(5) ZEROFILL 00123
INT(11) ZEROFILL 00000000123
Sheets로 내보내기

ZEROFILL은 출력 시 비어있는 앞자리를 0으로 채워주는 역할을 하는데요. 주로 정렬이나 고정된 형식으로 데이터를 보여줄 때 사용되지만, 실제 홈페이지 개발 시에는 거의 사용하지 않는 옵션이니 참고만 해두셔도 충분합니다.


3. 홈페이지 제작자를 위한 실용적인 조언!

PHPJavaScript로 웹 프로그램을 짤 때, 데이터 타입을 정확히 이해하는 것은 매우 중요합니다.

  1. ID/키 값에는 UNSIGNED를 활용하세요!
    • INT UNSIGNED 또는 INT(10) UNSIGNED처럼 사용하면, 최대 42억까지 ID를 만들 수 있습니다. 그누보드나 대부분의 게시판 테이블에서도 wr_id INT(11) NOT NULL auto_increment와 같이 사용되지만, UNSIGNED를 추가하면 더 안정적입니다.
  2. INT 범위가 부족할 때는 BIGINT를 사용하세요!
    • 만약 쇼핑몰이나 대형 서비스처럼 회원이 수십억 명을 넘어갈 것 같다면, 8바이트를 사용하는 BIGINT (최대 $9 \times 10^{18}$까지 저장)를 사용하는 것이 오류를 막는 가장 실용적이고 안정적인 방법입니다.

관련글 더보기

Top