sql >> Base de Datos >  >> RDS >> Mysql

tinyint(tamaño), varchar(tamaño):explicación del tamaño

Su solución a la confusión es-

En Mysql, int(6) no significa que puedan almacenar hasta 6 dígitos. no más de 999999.

Sin embargo, CHAR(6)Esto significa una columna de caracteres, con una longitud máxima de 6 caracteres, como estas palabras:

casas

Si intentara almacenar la palabra "especial" en esa columna, MySQL cortaría el valor para que sea "especia", ya que la palabra original tiene 7 caracteres.

De todos modos, todas las columnas enteras tienen un rango preestablecido de valores permitidos. El número entre paréntesis solo indica el ancho de visualización.

Esto probablemente todavía sea confuso, así que déjame explicarte más...

El ancho de visualización es un número del 1 al 255. Puede establecer el ancho de visualización si desea que todos sus valores enteros "aparecen" de manera similar:

TINYINT[(M)] [SIN FIRMAR] [ZEROFILL]

M indica el ancho de visualización máximo para los tipos de enteros. El ancho de visualización máximo es 255. El ancho de visualización no está relacionado con el rango de valores que puede contener un tipo, . Para tipos de punto flotante y punto fijo, M es el número total de dígitos que se pueden almacenar.

Si especifica ZEROFILL para una columna numérica, MySQL agrega automáticamente el atributo UNSIGNED a la columna.

Entonces, la respuesta a su pregunta es

create table foo
(
col2 tinyint(2) unsigned zerofill, col4 tinyint(4) unsigned zerofill, col5notzerofill        tinyint(5)  
)engine=innodb;

insert into foo values (1,2,3),(11,12,14),(123,123,156),(1234,1234,12756);
select * from foo;

OUTPUT :-
+------+------+-----------------+
| col2 | col4 | col5notzerofill |
+------+------+-----------------+
|   01 | 0002 |               3 |
|   11 | 0012 |              14 |
|  123 | 0123 |             127 |
|  255 | 0255 |             127 |
+------+------+-----------------+

* Así que comprenda, en Mysql, el ancho de visualización solo funciona con zerofill.

*si usa no use zerofill, no es efectivo.

Y si usa zerofill, mysql verificará el ancho de visualización, y si no lo asigna, mysql asignará automáticamente el ancho de visualización a esa columna. *