Es un tema recurrente, y es de manual...
Se llama "rango de representación de numeros binarios", y puedes verlo en este link:
http://dev.mysql.com/doc/refman/5.6/...ger-types.html
Los números, en los sistemas de BBDD no existen como cifras, sino que se almacenan como binarios, según su tipo declarado Elos INT son enteros de 4 bytes de longitud, lo que representa 32 bits.
Si haces la conversión de un binario de 32 bits con todos unos (1), encontrarás que el maximo posible es 4.294.967.295, pero como se tiene que reservar la mitad de las representaciones posibles a los negativos, y además uno al menos se usa para el cero, cuando el INT es con signo, el máximo posible es -2147483648 a 2147483647... exactamente lo que obtienes.
¿Cuál es la solución?
En primer lugar, define de qué tipo de dato se trata, porque
no todos los números se deben almacenar como tales, por ejemplo los telefónicos.
Los números telefónicos, dado que pueden contener ceros iniciales (DDI o DDL),
no se acostumbra a ponerlos en campos numéricos. Un numero telefónico es conveniente que esté compuesto de dos campos: la característica o numero local de ciudad, y el numero propiamente dicho. Eso facilita las consultas.
Si además, el mayor numero posible es inferior a 4.294.967.295, y no necesitas negativos, simplemente declaralo INT UNSIGNED y tendrás lo que necesitas.
Pero si vas a usar numero mayores a ese 4.294.967.295, necesitarás un BIGINT, y no INT, ya que el rango de un BIGINT es de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 con signo, y 0 a 18.446.744.073.709.551.615 sin signo.