음머어's 까망별

블로그 이미지
무지 인간의 첫 걸음..
by 까망별 음머어
  • 295,710Total hit
  • 74Today hit
  • 148Yesterday hit

'INT OPTIONAL EXTENSION'에 해당되는 글 1건

  1. 2008.12.22
    [MySQL] INT(11) 에서의 (11)의 의미를 아세요? (8)

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

혹시 테이블 생성할 때, 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을 위한 거다.
만약 괄호 안에 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^/

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

<< 예제 >>
##################################################################################################
# 1. 테스트 테이블 생성
CREATE TABLE number_test (
    NUMBER_2 NUMBER(2),   
    NUMBER_5 NUMBER(5)
);
# ---------------------------------------------------------------------------

# 2. 테스트 값 넣어보기

INSERT INTO number_test VALUES(12,12);
INSERT INTO number_test VALUES(12345,12345);
##################################################################################################

의 결과는?

<< 수행 결과 >>

SQL> INSERT INTO number_test VALUES(12,12);

1 개의 행이 만들어졌습니다.

SQL> INSERT INTO number_test VALUES(12345,12345);
INSERT INTO number_test VALUES(12345,12345)
                               *
1
행에 오류:
ORA-01438: 이 열에 대해 지정된 전체 자릿수보다 큰 값이 허용됩니다.


SQL> SELECT * FROM number_test;

  NUMBER_2   NUMBER_5
---------- ----------
        12         12


참고가 되셨으면 합니다. ^^

저작자 표시 비영리
신고
TRACKBACK 1 AND COMMENT 8

ARTICLE CATEGORY

모든 이야기 (77)
독백 (22)
MySQL (25)
Oracle (7)
영화 (6)
Linux (3)
DW(Data Warehouse) (0)
(7)
음악 (1)
Python (3)
Postgresql (2)

ARCHIVE