저도 지금까지 무심결에 써오던데로 써오다가....
Char(1) 은 1byte를 의미합니다
물론 Varchar(사이즈)도 선언한 수 만큼의 byte로 알고있습니다
그런데 문제는 int형의 사이즈는 뭘 의미하는걸까요 ^^;;
아주 기초적인 질문이죠...
허정수님의 답변글 입니다. 저두 잘 이해가 안가지만...
INT형을 메뉴얼에서 찾아보면
INT[(M)] [UNSIGNED] [ZEROFILL]
이렇게 되어 있고 여기서, M은
M Indicates the maximum display size. The maximum legal display size is 255.
이렇게 나와있습니다 ^^
즉, 저장하는데 필요한 Byte 수가 아니라, display size이지요....
여기 display size는 거의 신경쓸 일이 없습니다.
display size는 C언어에서 printf()할 때 printf("%11d", num)과 같이 숫자 표현하는데, 몇 공간을 출력할지 할 때 쓰이는 것으로 알고 있습니다.
그리고, 실제 개발할 때 display size를 사용하는 사람은 한번도 못 봤고, display size의 의미를 정확히 아는 사람도 몇명 없더군요(저도 잘 모릅니다.)
^^ 그냥 무시하고 쓰세요...
그리고, int 형을 저장하는데 필요한 byte 수는 4 바이트로 고정되어 있습니다.
char(15) 이런 것과 다르죠
즉, int(4)든, int(11)이든 무조건 4 바이트가 필요하죠
tinyint는 1 바이트, smallint 는 2바이트. 등등으로 이건 제 책을 보면 나와있구요.....
이해가 되시려는지.....
안되면 다시 질문주시구요~~
암튼 int 형에서의 M은 byte 수를 지정하는 것이 아닙니다.~
:: 질문하나 더 있는데 정리가 안되서리...
:: sql 질의 순서에 관계된 이야기인데 다음에 질문드리겠슴다
네에 다음에 하시면 답변해드리죠
허정수님 답변 감사합니다...
메뉴얼에도 그렇게 나왔는데 동체 이해가 안되성..ㅎㅎ
가장 간단하게 직접.....해본느게 장댕이더군요
INT(8)이라고 사이즈를 준후 zerofill로 설정후 값을 1을 입력하니깐 00000001 이렇게 8자리가 되더군요 0이 7개 채우고
10을 입력하면 0으로 6개를 채운 00000010
하여간 이렇더군요..
MYSQLFront에서는 1, 10 이렇게 나오더군요 속성이 정수형이라서 그런지 변환되어부리는 듯...
PHPMYADMIN에서는 위와 같이 00000001, 00000010 이렇게 나오더군요 PHPMYADMIN은 문자열로 가져와서 그런것 같네요
디비상에는 직접적으로 어떻게 저장되어져 있는지는 귀찮아서 안봤지만 아마도 PHPMYADMIN처럼 되었을거라고 생각됩니다...이렇게 저장되니깐 나오겠죠...