27. MySQL int(11) 그리고 ZEROFILL
MySQL int(11) 그리고 ZEROFILL
int(11), int(5) 다 같은 int 지만 ZEROFILL 옵션이 있는 데이터들은 자릿수가 괄호 안의 수보다 작을 때 자릿수를 다 0으로 채웁니다.
mysql> SHOW COLUMNS FROM zerofill_test;
+-------+---------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------------+------+-----+---------+-------+
| a | int(11) | NO | | NULL | |
| b | int(11) unsigned zerofill | NO | | NULL | |
| c | int(5) | NO | | NULL | |
| d | int(5) unsigned zerofill | NO | | NULL | |
+-------+---------------------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
위와 같은 zerofill_test 테이블에 1, 1234567890, 123456 를 INSERT 하고 값 확인
mysql> SELECT * FROM zerofill_test;
+------------+-------------+------------+------------+
| a | b | c | d |
+------------+-------------+------------+------------+
| 1 | 00000000001 | 1 | 00001 |
| 1234567890 | 01234567890 | 1234567890 | 1234567890 |
| 123456 | 00000123456 | 123456 | 123456 |
+------------+-------------+------------+------------+
3 rows in set (0.00 sec)
zerofill 옵션이 있는 데이터 타입
TINYINT(M) [ 옵션 UNSIGNED , ZEROFILL ] ★★
: 정수형으로 총 1Byte 저장공간을 차지하는 데이터 타입으로 -128에서 127 사이의 숫자를 저장하기 위한 데이터 타입이다. UNSIGNED 옵션을 적용하면 0에서 255까지의 숫자를 저장한다.
SMALLINT(M) [ 옵션 UNSIGNED , ZEROFILL ]
: 정수형으로 총 2Byte 저장공간을 차지하는 데이터 타입으로 -32768에서 32767 사이의 숫자를 저장하기 위한 데이터 타입이다. UNSIGNED 옵션을 적용하면 0에서 65535까지의 숫자를 저장한다.
MEDIUMINT(M) [ 옵션 UNSIGNED , ZEROFILL ]
: 정수형으로 총 3Byte 저장공간을 차지하는 데이터 타입으로 -8388608에서 8388607사이의 숫자를 저장하기 위한 데이터 타입이다. UNSIGNED 옵션을 적용하면 0에서 16777215까지의 숫자를 저장한다.
INT(M) [ 옵션 UNSIGNED , ZEROFILL ] ★★★
: 정수형으로 총 4Byte 저장공간을 차지하는 데이터 타입으로 INTEGER 라고도 사용한다. -2147483648에서 2147483647 사이의 숫자를 저장하기 위한 데이터 타입으로 UNSIGNED 옵션을 적용하면 0에서 4294967295까지의 숫자를 저장한다.
TINYINT에 4자리 숫자를 넣으면 에러가 발생합니다.
그리고 각 숫자형은 저장하는 공간의 바이트가 다릅니다.
용량 관리면에서 중요합니다.