Porque lo estás declarando como
entero con signo.
Lo que debes entender es que ese numero entre paréntesi NO representa la longitud del numero como cifra. Se usa para otro destino.
El rango numérico a almacenar está definido por el
tipo de dato. Algo que puede sver perfectamente en el manual de referencia.
Si quieres guardar numeros enteros sin signo, recuerda los rangos de cada tipo:
Cita: - TINYINT: 0 a 255.
- SMALLINT: 0 a 65.535.
- MEDIUMINT: 0 a 16.777.215
- INT: 0 a 4.294.967.295.
- BIGINT: 0 a 18.446.744.073.709.551.615
https://dev.mysql.com/doc/refman/5.6...ger-types.html