MySql: Tinyint (2) vs tinyint(1): ¿cuál es la diferencia?

Resuelto realtebo asked hace 11 años • 4 respuestas

Conocía el valor booleano en MySQL como tinyint (1).

Hoy veo una tabla con definido un número entero como tinyint(2), y también otros como int(4), int(6)...

¿Qué significa el tamaño en el campo de tipo integer y tinyint?

realtebo avatar Oct 11 '12 19:10 realtebo
Aceptado

Indica (m)el ancho de visualización de la columna; aplicaciones como el cliente MySQL hacen uso de esto al mostrar los resultados de la consulta.

Por ejemplo:

| v   | a   |  b  |   c |
+-----+-----+-----+-----+
| 1   | 1   |  1  |   1 |
| 10  | 10  | 10  |  10 |
| 100 | 100 | 100 | 100 |

Aquí a, by cestán usando TINYINT(1), TINYINT(2)y TINYINT(3)respectivamente. Como puede ver, rellena los valores en el lado izquierdo usando el ancho de visualización.

Es importante tener en cuenta que no afecta el rango de valores aceptado para ese tipo en particular, es decir, TINYINT(1)aún acepta [-128 .. 127].

Ja͢ck avatar Oct 11 '2012 12:10 Ja͢ck

Significa ancho de visualización

Ya sea que use tinyint(1) o tinyint(2), no hay ninguna diferencia.

Siempre uso tinyint(1) e int(11), utilicé varios clientes mysql (navicat, sequel pro).

¡No significa nada EN ABSOLUTO! Ejecuté una prueba, todos los clientes anteriores o incluso el cliente de línea de comandos parecen ignorar esto.

Pero el ancho de visualización es más importante si está utilizando ZEROFILLla opción; por ejemplo, su tabla tiene las siguientes 2 columnas:

Un relleno cero tinyint(2)

B tinyint(4) relleno cero

ambas columnas tienen el valor de 1, la salida para la columna A sería 01y 0001para la B , como se ve en la captura de pantalla a continuación :)

relleno cero con ancho de pantalla

AamirR avatar Dec 02 '2016 18:12 AamirR
mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM tin3;
+----+------------+
| id | val        |
+----+------------+
|  1 | 0000000012 |
|  2 | 0000000007 |
|  4 | 0000000101 |
+----+------------+
3 rows in set (0.00 sec)

mysql>

mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;
+-------------+
| LENGTH(val) |
+-------------+
|          10 |
+-------------+
1 row in set (0.01 sec)


mysql> SELECT val+1 FROM tin3 WHERE id=2;
+-------+
| val+1 |
+-------+
|     8 |
+-------+
1 row in set (0.00 sec)
zloctb avatar Apr 17 '2014 07:04 zloctb

Acerca de INT, TINYINT... Estos son diferentes tipos de datos, INT es un número de 4 bytes, TINYINT es un número de 1 byte. Más información aquí: INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT .

La sintaxis del tipo de datos TINYINT es TINYINT(M), donde M indica el ancho máximo de visualización (se usa solo si su cliente MySQL lo admite).

Atributos de tipo numérico .

Devart avatar Oct 11 '2012 12:10 Devart