int(11) 의 의미!!!! > MySQL

본문 바로가기

사이트 내 전체검색

뒤로가기 MySQL

int(11) 의 의미!!!!

페이지 정보

작성자 최고관리자 작성일 21-02-10 17:19 조회 13,185 댓글 0

본문

메모만 해두고 블로그에 적는 것을 까먹고 있었던 내용을 간만에 적어본다.

혹시 테이블 생성할 때, INT 에 괄호치고 값을 넣어 본 기억이 있는가?
아니면, 왜 이거 INT(8)이야? 하면서 테이블 생성자에게 화를 내본적이 있는가?

그렇다면....... 당신은 바보~ -0-/
헉...!!! ..... 내가 말을 잘 못했소... 돌던지지 말아주시오~~

 (*,.ㅜ);;

자... 간단히 테스트를 해보자.

 << 예제 >>
 ##################################################################################################
 # 1. 테스트 테이블 생성
CREATE TABLE int_test (
    int_1 INT(1),
    int_1_z INT(1) ZEROFILL,
    int_5 INT(5),
    int_5_z INT(5) ZEROFILL,
    int_9 INT(9),
    int_9_z INT(9) ZEROFILL,
    int_11 INT(11),
    int_11_z INT(11) ZEROFILL
 )ENGINE=INNODB DEFAULT CHAR SET =UTF8;

 # ---------------------------------------------------------------------------

 # 2. 테스트 값 넣어보기
INSERT INTO int_test VALUES(1,1,1,1,1,1,1,1);
 INSERT INTO int_test VALUES(12345,12345,12345,12345,12345,12345,12345,12345);
 INSERT INTO int_test VALUES(1234567890,1234567890,1234567890,1234567890,1234567890,1234567890,1234567890,1234567890);
 ##################################################################################################

당신의 평소 생각대로라면,
 # ------------------------------
SELECT *
 FROM int_test;
 # ------------------------------
의 결과는?

 << 수행 결과 >>


mysql> SELECT * FROM int_test;
 +------------+------------+------------+------------+------------+------------+------------+-------------+
 | int_1          | int_1_z        | int_5          | int_5_z      | int_9          | int_9_z      | int_11          | int_11_z      |
 +------------+------------+------------+------------+------------+------------+------------+-------------+
 |                1 |              1 |                1 |          00001 |              1 |  000000001 |                1 | 00000000001 |
 |          12345 |        12345 |          12345 |          12345 |        12345 |  000012345 |          12345 | 00000012345 |
 |  1234567890 | 1234567890 |  1234567890 |  1234567890 | 1234567890 |  1234567890 |  1234567890 | 01234567890 |
 +------------+------------+------------+------------+------------+------------+------------+-------------+
 3 rows in set (0.00 sec)




얼래? 이거... 당신이 예상하던 값과는 다르지 아니한가?

분명히 INT(n)하면  n개만 입력될 것이라 생각했었는데,
값이 몽땅 들어가버리네???

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
를 보면, 이에 대한 명확한 설명이 있다..

짧은 잉글리쉬 실력으로 요약해 보자면,

INT의 괄호는 보여지는 숫자의 개수의 제약을 의미하는 것이 아니다.
아무리 INT 옆에 괄호치고 숫자를 넣어봐라, 들어갈 수 있는 한계는 언제나 같을 껄? ㅋㅋㅋ (의역 -0-;;)
INT의 괄호 옵션은 ZEROFILL을 위한 거다.
대부분의 숫자형 데이터 타입은 옵션으로 ZeroFill 이란 것을 가지게 되는데,

화면에 숫자를 표시할 때 숫자 왼쪽에 0을 붙이라는 뜻입니다.
즉, Int(5) ZeroFill이라고 정의된 필드에서 저장된 값 3을 불러온다면 "00003"과 같이 표시됩니다.


만약 괄호 안에 5를 집어넣었다면(INT(5)), 5자리 내의 숫자는 0으로 채워지게 된다.
쏼라쏼라....

개뿔.. 이넘의 짧은 영어... 영어 때문에 속이 울렁거린당 (-ㅠ-);;

요약하자면,
INT의 괄호 옵션 기능은 ZEROFILL에서 0이 채워지게 되는 개수이고,
실제 저장공간 및 입력 가능 한계는 동일하다는 의미이다.

위 실행결과에서도 볼 수 있듯이,
INT(1), INT(5), INT(9), INT(11)에 들어가는 값은 동일하며,
INT(1) ZEROFILL, INT(5) ZEROFILL, INT(9) ZEROFILL, INT(11) ZEROFILL 에서만,
0이 들어가는 개수에 차이가 있음을 볼 수 있다.

그나마 ZEROFILL의 한계를 넘어버리면, 그 때부턴 구분도 안 간다 -0-;;;;;

자, 정리하자!!

앞으로 INT(n) 에서 n이 자기 맘대로 들어가 있다고 애꿎은 사람 잡지말고,
 '풋! ZEROFILL을 위한 공간이군! 쯧쯧쯧...'
하면서 아는체 해주는 쎈쓰를 보여라!!!

그럼, 당신은 위대한 인물로 추앙받고 존경받으리~~~ ......... 는 아니겠징 -0-;;;;

이상!






 [2009-01-09] 덧글에 대한 설명을 위해 아래와 같이 추가합니다 ^0^/

결론부터 말씀드리자면, 오라클에서는 실제 자리수를 표현하는데 사용됩니다. ^^
아래 예제를 볼까요?

 [출처] MySQL> int(11) 의 의미!!!!|작성자 밍밍
http://blog.naver.com/nadarim?Redirect=Log&logNo=70048293499


 --------------------------------------------------------------------------


 Integer Types
 MySQL supports the SQL standard integer types INTEGER (or INT) and SMALLINT. As an extension to the standard, MySQL also supports the integer types TINYINT, MEDIUMINT, and BIGINT. The following table shows the required storage and range for each integer type.
 Type Storage Minimum Value Maximum Value
  (Bytes) (Signed/Unsigned) Signed/Unsigned)

 type          bytes      Minimum  Maximum (Value)

 TINYINT        1    -128 127    ||    0 255
 SMALLINT    2    -32768 32767    ||    0 65535
 MEDIUMINT  3    -8388608 8388607    ||    0 16777215
 INT              4    -2147483648 2147483647    ||    0 4294967295
 BIGINT          8    -9223372036854775808 9223372036854775807    ||    0 18446744073709551615

출처 : http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

댓글목록 0

등록된 댓글이 없습니다.

Copyright © beautipia.co.kr. All rights reserved.

contact : webmaster@beautipia.co.kr

PC 버전으로 보기