En cuanto a los datos, tinyint(1)
, tinyint(2)
, tinyint(3)
etc. son todos exactamente iguales. Todos están en el rango -128 a 127 para SIGNED
o 0-255 para UNSIGNED
. Como señalaron otras respuestas, el número entre paréntesis es simplemente una sugerencia de ancho de visualización.
Sin embargo, es posible que desee tener en cuenta que las cosas de application=wise pueden verse diferentes. Aquí, tinyint(1)
puede tomar un significado especial. Por ejemplo, Connector/J (conector Java) trata tinyint(1)
como un valor booleano, y en lugar de devolver un resultado numérico a la aplicación, convierte los valores a true
y false
. esto se puede cambiar a través de tinyInt1isBit=false
parámetro de conexión.
Un tinyint(1) puede contener números en el rango de -128 a 127, debido a que el tipo de datos es de 8 bits (1 byte); obviamente, un tinyint sin signo puede contener valores de 0 a 255.
Silenciosamente truncará los valores fuera de rango:
mysql> create table a
-> (
-> ttt tinyint(1)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> insert into a values ( 127 );
Query OK, 1 row affected (0.00 sec)
mysql> insert into a values ( -128 );
Query OK, 1 row affected (0.00 sec)
mysql> insert into a values ( 128 );
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> insert into a values ( -129 );
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from a;
+------+
| ttt |
+------+
| 127 |
| -128 |
| 127 |
| -128 |
+------+
4 rows in set (0.00 sec)
mysql>
... a menos que cambie el sql_mode
o cambie la configuración del servidor:
mysql> set sql_mode=STRICT_ALL_TABLES;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into a values ( -129 );
ERROR 1264 (22003): Out of range value for column 'ttt' at row 1
mysql>
El valor utilizado en el DDL para el tipo de datos (p. ej., tinyint(1)) es, como sospechaba, el ancho de visualización. Sin embargo, es opcional y los clientes no tienen que usarlo. El cliente MySQL estándar no lo usa, por ejemplo.
https://dev.mysql .com/doc/refman/5.1/en/integer-types.html
https://dev .mysql.com/doc/refman/5.0/en/numeric-type-overview.html
MySql:Tinyint (2 ) vs tinyint(1) - ¿cuál es la diferencia?